rtnetlink: make rtnl_register accept a flags parameter
This change allows us to later indicate to rtnetlink core that certain doit functions should be called without acquiring rtnl_mutex. This change should have no effect, we simply replace the last (now unused) calcit argument with the new flag. Signed-off-by: Florian Westphal <fw@strlen.de> Reviewed-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e1fa6d216d
commit
b97bac64a5
|
@ -7,12 +7,11 @@
|
||||||
typedef int (*rtnl_doit_func)(struct sk_buff *, struct nlmsghdr *,
|
typedef int (*rtnl_doit_func)(struct sk_buff *, struct nlmsghdr *,
|
||||||
struct netlink_ext_ack *);
|
struct netlink_ext_ack *);
|
||||||
typedef int (*rtnl_dumpit_func)(struct sk_buff *, struct netlink_callback *);
|
typedef int (*rtnl_dumpit_func)(struct sk_buff *, struct netlink_callback *);
|
||||||
typedef u16 (*rtnl_calcit_func)(struct sk_buff *, struct nlmsghdr *);
|
|
||||||
|
|
||||||
int __rtnl_register(int protocol, int msgtype,
|
int __rtnl_register(int protocol, int msgtype,
|
||||||
rtnl_doit_func, rtnl_dumpit_func, rtnl_calcit_func);
|
rtnl_doit_func, rtnl_dumpit_func, unsigned int flags);
|
||||||
void rtnl_register(int protocol, int msgtype,
|
void rtnl_register(int protocol, int msgtype,
|
||||||
rtnl_doit_func, rtnl_dumpit_func, rtnl_calcit_func);
|
rtnl_doit_func, rtnl_dumpit_func, unsigned int flags);
|
||||||
int rtnl_unregister(int protocol, int msgtype);
|
int rtnl_unregister(int protocol, int msgtype);
|
||||||
void rtnl_unregister_all(int protocol);
|
void rtnl_unregister_all(int protocol);
|
||||||
|
|
||||||
|
|
|
@ -713,9 +713,9 @@ static int br_mdb_del(struct sk_buff *skb, struct nlmsghdr *nlh,
|
||||||
|
|
||||||
void br_mdb_init(void)
|
void br_mdb_init(void)
|
||||||
{
|
{
|
||||||
rtnl_register(PF_BRIDGE, RTM_GETMDB, NULL, br_mdb_dump, NULL);
|
rtnl_register(PF_BRIDGE, RTM_GETMDB, NULL, br_mdb_dump, 0);
|
||||||
rtnl_register(PF_BRIDGE, RTM_NEWMDB, br_mdb_add, NULL, NULL);
|
rtnl_register(PF_BRIDGE, RTM_NEWMDB, br_mdb_add, NULL, 0);
|
||||||
rtnl_register(PF_BRIDGE, RTM_DELMDB, br_mdb_del, NULL, NULL);
|
rtnl_register(PF_BRIDGE, RTM_DELMDB, br_mdb_del, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void br_mdb_uninit(void)
|
void br_mdb_uninit(void)
|
||||||
|
|
|
@ -1031,15 +1031,15 @@ static __init int cgw_module_init(void)
|
||||||
notifier.notifier_call = cgw_notifier;
|
notifier.notifier_call = cgw_notifier;
|
||||||
register_netdevice_notifier(¬ifier);
|
register_netdevice_notifier(¬ifier);
|
||||||
|
|
||||||
if (__rtnl_register(PF_CAN, RTM_GETROUTE, NULL, cgw_dump_jobs, NULL)) {
|
if (__rtnl_register(PF_CAN, RTM_GETROUTE, NULL, cgw_dump_jobs, 0)) {
|
||||||
unregister_netdevice_notifier(¬ifier);
|
unregister_netdevice_notifier(¬ifier);
|
||||||
kmem_cache_destroy(cgw_cache);
|
kmem_cache_destroy(cgw_cache);
|
||||||
return -ENOBUFS;
|
return -ENOBUFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only the first call to __rtnl_register can fail */
|
/* Only the first call to __rtnl_register can fail */
|
||||||
__rtnl_register(PF_CAN, RTM_NEWROUTE, cgw_create_job, NULL, NULL);
|
__rtnl_register(PF_CAN, RTM_NEWROUTE, cgw_create_job, NULL, 0);
|
||||||
__rtnl_register(PF_CAN, RTM_DELROUTE, cgw_remove_job, NULL, NULL);
|
__rtnl_register(PF_CAN, RTM_DELROUTE, cgw_remove_job, NULL, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1026,9 +1026,9 @@ static struct pernet_operations fib_rules_net_ops = {
|
||||||
static int __init fib_rules_init(void)
|
static int __init fib_rules_init(void)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
rtnl_register(PF_UNSPEC, RTM_NEWRULE, fib_nl_newrule, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_NEWRULE, fib_nl_newrule, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_DELRULE, fib_nl_delrule, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_DELRULE, fib_nl_delrule, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETRULE, NULL, fib_nl_dumprule, NULL);
|
rtnl_register(PF_UNSPEC, RTM_GETRULE, NULL, fib_nl_dumprule, 0);
|
||||||
|
|
||||||
err = register_pernet_subsys(&fib_rules_net_ops);
|
err = register_pernet_subsys(&fib_rules_net_ops);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
|
|
|
@ -3261,13 +3261,13 @@ EXPORT_SYMBOL(neigh_sysctl_unregister);
|
||||||
|
|
||||||
static int __init neigh_init(void)
|
static int __init neigh_init(void)
|
||||||
{
|
{
|
||||||
rtnl_register(PF_UNSPEC, RTM_NEWNEIGH, neigh_add, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_NEWNEIGH, neigh_add, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_DELNEIGH, neigh_delete, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_DELNEIGH, neigh_delete, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETNEIGH, NULL, neigh_dump_info, NULL);
|
rtnl_register(PF_UNSPEC, RTM_GETNEIGH, NULL, neigh_dump_info, 0);
|
||||||
|
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETNEIGHTBL, NULL, neightbl_dump_info,
|
rtnl_register(PF_UNSPEC, RTM_GETNEIGHTBL, NULL, neightbl_dump_info,
|
||||||
NULL);
|
0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_SETNEIGHTBL, neightbl_set, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_SETNEIGHTBL, neightbl_set, NULL, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -855,9 +855,9 @@ static int __init net_ns_init(void)
|
||||||
|
|
||||||
register_pernet_subsys(&net_ns_ops);
|
register_pernet_subsys(&net_ns_ops);
|
||||||
|
|
||||||
rtnl_register(PF_UNSPEC, RTM_NEWNSID, rtnl_net_newid, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_NEWNSID, rtnl_net_newid, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETNSID, rtnl_net_getid, rtnl_net_dumpid,
|
rtnl_register(PF_UNSPEC, RTM_GETNSID, rtnl_net_getid, rtnl_net_dumpid,
|
||||||
NULL);
|
0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,7 +178,7 @@ static rtnl_dumpit_func rtnl_get_dumpit(int protocol, int msgindex)
|
||||||
* @msgtype: rtnetlink message type
|
* @msgtype: rtnetlink message type
|
||||||
* @doit: Function pointer called for each request message
|
* @doit: Function pointer called for each request message
|
||||||
* @dumpit: Function pointer called for each dump request (NLM_F_DUMP) message
|
* @dumpit: Function pointer called for each dump request (NLM_F_DUMP) message
|
||||||
* @calcit: Function pointer to calc size of dump message
|
* @flags: rtnl_link_flags to modifiy behaviour of doit/dumpit functions
|
||||||
*
|
*
|
||||||
* Registers the specified function pointers (at least one of them has
|
* Registers the specified function pointers (at least one of them has
|
||||||
* to be non-NULL) to be called whenever a request message for the
|
* to be non-NULL) to be called whenever a request message for the
|
||||||
|
@ -192,7 +192,7 @@ static rtnl_dumpit_func rtnl_get_dumpit(int protocol, int msgindex)
|
||||||
*/
|
*/
|
||||||
int __rtnl_register(int protocol, int msgtype,
|
int __rtnl_register(int protocol, int msgtype,
|
||||||
rtnl_doit_func doit, rtnl_dumpit_func dumpit,
|
rtnl_doit_func doit, rtnl_dumpit_func dumpit,
|
||||||
rtnl_calcit_func calcit)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
struct rtnl_link *tab;
|
struct rtnl_link *tab;
|
||||||
int msgindex;
|
int msgindex;
|
||||||
|
@ -230,9 +230,9 @@ EXPORT_SYMBOL_GPL(__rtnl_register);
|
||||||
*/
|
*/
|
||||||
void rtnl_register(int protocol, int msgtype,
|
void rtnl_register(int protocol, int msgtype,
|
||||||
rtnl_doit_func doit, rtnl_dumpit_func dumpit,
|
rtnl_doit_func doit, rtnl_dumpit_func dumpit,
|
||||||
rtnl_calcit_func calcit)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
if (__rtnl_register(protocol, msgtype, doit, dumpit, calcit) < 0)
|
if (__rtnl_register(protocol, msgtype, doit, dumpit, flags) < 0)
|
||||||
panic("Unable to register rtnetlink message handler, "
|
panic("Unable to register rtnetlink message handler, "
|
||||||
"protocol = %d, message type = %d\n",
|
"protocol = %d, message type = %d\n",
|
||||||
protocol, msgtype);
|
protocol, msgtype);
|
||||||
|
@ -4279,23 +4279,23 @@ void __init rtnetlink_init(void)
|
||||||
register_netdevice_notifier(&rtnetlink_dev_notifier);
|
register_netdevice_notifier(&rtnetlink_dev_notifier);
|
||||||
|
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETLINK, rtnl_getlink,
|
rtnl_register(PF_UNSPEC, RTM_GETLINK, rtnl_getlink,
|
||||||
rtnl_dump_ifinfo, NULL);
|
rtnl_dump_ifinfo, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_SETLINK, rtnl_setlink, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_SETLINK, rtnl_setlink, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_NEWLINK, rtnl_newlink, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_NEWLINK, rtnl_newlink, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_DELLINK, rtnl_dellink, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_DELLINK, rtnl_dellink, NULL, 0);
|
||||||
|
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETADDR, NULL, rtnl_dump_all, NULL);
|
rtnl_register(PF_UNSPEC, RTM_GETADDR, NULL, rtnl_dump_all, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETROUTE, NULL, rtnl_dump_all, NULL);
|
rtnl_register(PF_UNSPEC, RTM_GETROUTE, NULL, rtnl_dump_all, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETNETCONF, NULL, rtnl_dump_all, NULL);
|
rtnl_register(PF_UNSPEC, RTM_GETNETCONF, NULL, rtnl_dump_all, 0);
|
||||||
|
|
||||||
rtnl_register(PF_BRIDGE, RTM_NEWNEIGH, rtnl_fdb_add, NULL, NULL);
|
rtnl_register(PF_BRIDGE, RTM_NEWNEIGH, rtnl_fdb_add, NULL, 0);
|
||||||
rtnl_register(PF_BRIDGE, RTM_DELNEIGH, rtnl_fdb_del, NULL, NULL);
|
rtnl_register(PF_BRIDGE, RTM_DELNEIGH, rtnl_fdb_del, NULL, 0);
|
||||||
rtnl_register(PF_BRIDGE, RTM_GETNEIGH, NULL, rtnl_fdb_dump, NULL);
|
rtnl_register(PF_BRIDGE, RTM_GETNEIGH, NULL, rtnl_fdb_dump, 0);
|
||||||
|
|
||||||
rtnl_register(PF_BRIDGE, RTM_GETLINK, NULL, rtnl_bridge_getlink, NULL);
|
rtnl_register(PF_BRIDGE, RTM_GETLINK, NULL, rtnl_bridge_getlink, 0);
|
||||||
rtnl_register(PF_BRIDGE, RTM_DELLINK, rtnl_bridge_dellink, NULL, NULL);
|
rtnl_register(PF_BRIDGE, RTM_DELLINK, rtnl_bridge_dellink, NULL, 0);
|
||||||
rtnl_register(PF_BRIDGE, RTM_SETLINK, rtnl_bridge_setlink, NULL, NULL);
|
rtnl_register(PF_BRIDGE, RTM_SETLINK, rtnl_bridge_setlink, NULL, 0);
|
||||||
|
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETSTATS, rtnl_stats_get, rtnl_stats_dump,
|
rtnl_register(PF_UNSPEC, RTM_GETSTATS, rtnl_stats_get, rtnl_stats_dump,
|
||||||
NULL);
|
0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1938,8 +1938,8 @@ static int __init dcbnl_init(void)
|
||||||
{
|
{
|
||||||
INIT_LIST_HEAD(&dcb_app_list);
|
INIT_LIST_HEAD(&dcb_app_list);
|
||||||
|
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETDCB, dcb_doit, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_GETDCB, dcb_doit, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_SETDCB, dcb_doit, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_SETDCB, dcb_doit, NULL, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1419,9 +1419,9 @@ void __init dn_dev_init(void)
|
||||||
|
|
||||||
dn_dev_devices_on();
|
dn_dev_devices_on();
|
||||||
|
|
||||||
rtnl_register(PF_DECnet, RTM_NEWADDR, dn_nl_newaddr, NULL, NULL);
|
rtnl_register(PF_DECnet, RTM_NEWADDR, dn_nl_newaddr, NULL, 0);
|
||||||
rtnl_register(PF_DECnet, RTM_DELADDR, dn_nl_deladdr, NULL, NULL);
|
rtnl_register(PF_DECnet, RTM_DELADDR, dn_nl_deladdr, NULL, 0);
|
||||||
rtnl_register(PF_DECnet, RTM_GETADDR, NULL, dn_nl_dump_ifaddr, NULL);
|
rtnl_register(PF_DECnet, RTM_GETADDR, NULL, dn_nl_dump_ifaddr, 0);
|
||||||
|
|
||||||
proc_create("decnet_dev", S_IRUGO, init_net.proc_net, &dn_dev_seq_fops);
|
proc_create("decnet_dev", S_IRUGO, init_net.proc_net, &dn_dev_seq_fops);
|
||||||
|
|
||||||
|
|
|
@ -791,8 +791,8 @@ void __init dn_fib_init(void)
|
||||||
|
|
||||||
register_dnaddr_notifier(&dn_fib_dnaddr_notifier);
|
register_dnaddr_notifier(&dn_fib_dnaddr_notifier);
|
||||||
|
|
||||||
rtnl_register(PF_DECnet, RTM_NEWROUTE, dn_fib_rtm_newroute, NULL, NULL);
|
rtnl_register(PF_DECnet, RTM_NEWROUTE, dn_fib_rtm_newroute, NULL, 0);
|
||||||
rtnl_register(PF_DECnet, RTM_DELROUTE, dn_fib_rtm_delroute, NULL, NULL);
|
rtnl_register(PF_DECnet, RTM_DELROUTE, dn_fib_rtm_delroute, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1922,10 +1922,10 @@ void __init dn_route_init(void)
|
||||||
|
|
||||||
#ifdef CONFIG_DECNET_ROUTER
|
#ifdef CONFIG_DECNET_ROUTER
|
||||||
rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute,
|
rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute,
|
||||||
dn_fib_dump, NULL);
|
dn_fib_dump, 0);
|
||||||
#else
|
#else
|
||||||
rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute,
|
rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute,
|
||||||
dn_cache_dump, NULL);
|
dn_cache_dump, 0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2491,9 +2491,9 @@ void __init devinet_init(void)
|
||||||
|
|
||||||
rtnl_af_register(&inet_af_ops);
|
rtnl_af_register(&inet_af_ops);
|
||||||
|
|
||||||
rtnl_register(PF_INET, RTM_NEWADDR, inet_rtm_newaddr, NULL, NULL);
|
rtnl_register(PF_INET, RTM_NEWADDR, inet_rtm_newaddr, NULL, 0);
|
||||||
rtnl_register(PF_INET, RTM_DELADDR, inet_rtm_deladdr, NULL, NULL);
|
rtnl_register(PF_INET, RTM_DELADDR, inet_rtm_deladdr, NULL, 0);
|
||||||
rtnl_register(PF_INET, RTM_GETADDR, NULL, inet_dump_ifaddr, NULL);
|
rtnl_register(PF_INET, RTM_GETADDR, NULL, inet_dump_ifaddr, 0);
|
||||||
rtnl_register(PF_INET, RTM_GETNETCONF, inet_netconf_get_devconf,
|
rtnl_register(PF_INET, RTM_GETNETCONF, inet_netconf_get_devconf,
|
||||||
inet_netconf_dump_devconf, NULL);
|
inet_netconf_dump_devconf, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1348,7 +1348,7 @@ void __init ip_fib_init(void)
|
||||||
register_netdevice_notifier(&fib_netdev_notifier);
|
register_netdevice_notifier(&fib_netdev_notifier);
|
||||||
register_inetaddr_notifier(&fib_inetaddr_notifier);
|
register_inetaddr_notifier(&fib_inetaddr_notifier);
|
||||||
|
|
||||||
rtnl_register(PF_INET, RTM_NEWROUTE, inet_rtm_newroute, NULL, NULL);
|
rtnl_register(PF_INET, RTM_NEWROUTE, inet_rtm_newroute, NULL, 0);
|
||||||
rtnl_register(PF_INET, RTM_DELROUTE, inet_rtm_delroute, NULL, NULL);
|
rtnl_register(PF_INET, RTM_DELROUTE, inet_rtm_delroute, NULL, 0);
|
||||||
rtnl_register(PF_INET, RTM_GETROUTE, NULL, inet_dump_fib, NULL);
|
rtnl_register(PF_INET, RTM_GETROUTE, NULL, inet_dump_fib, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3114,14 +3114,14 @@ int __init ip_mr_init(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
rtnl_register(RTNL_FAMILY_IPMR, RTM_GETROUTE,
|
rtnl_register(RTNL_FAMILY_IPMR, RTM_GETROUTE,
|
||||||
ipmr_rtm_getroute, ipmr_rtm_dumproute, NULL);
|
ipmr_rtm_getroute, ipmr_rtm_dumproute, 0);
|
||||||
rtnl_register(RTNL_FAMILY_IPMR, RTM_NEWROUTE,
|
rtnl_register(RTNL_FAMILY_IPMR, RTM_NEWROUTE,
|
||||||
ipmr_rtm_route, NULL, NULL);
|
ipmr_rtm_route, NULL, 0);
|
||||||
rtnl_register(RTNL_FAMILY_IPMR, RTM_DELROUTE,
|
rtnl_register(RTNL_FAMILY_IPMR, RTM_DELROUTE,
|
||||||
ipmr_rtm_route, NULL, NULL);
|
ipmr_rtm_route, NULL, 0);
|
||||||
|
|
||||||
rtnl_register(RTNL_FAMILY_IPMR, RTM_GETLINK,
|
rtnl_register(RTNL_FAMILY_IPMR, RTM_GETLINK,
|
||||||
NULL, ipmr_rtm_dumplink, NULL);
|
NULL, ipmr_rtm_dumplink, 0);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#ifdef CONFIG_IP_PIMSM_V2
|
#ifdef CONFIG_IP_PIMSM_V2
|
||||||
|
|
|
@ -3067,7 +3067,7 @@ int __init ip_rt_init(void)
|
||||||
xfrm_init();
|
xfrm_init();
|
||||||
xfrm4_init();
|
xfrm4_init();
|
||||||
#endif
|
#endif
|
||||||
rtnl_register(PF_INET, RTM_GETROUTE, inet_rtm_getroute, NULL, NULL);
|
rtnl_register(PF_INET, RTM_GETROUTE, inet_rtm_getroute, NULL, 0);
|
||||||
|
|
||||||
#ifdef CONFIG_SYSCTL
|
#ifdef CONFIG_SYSCTL
|
||||||
register_pernet_subsys(&sysctl_route_ops);
|
register_pernet_subsys(&sysctl_route_ops);
|
||||||
|
|
|
@ -6605,21 +6605,21 @@ int __init addrconf_init(void)
|
||||||
rtnl_af_register(&inet6_ops);
|
rtnl_af_register(&inet6_ops);
|
||||||
|
|
||||||
err = __rtnl_register(PF_INET6, RTM_GETLINK, NULL, inet6_dump_ifinfo,
|
err = __rtnl_register(PF_INET6, RTM_GETLINK, NULL, inet6_dump_ifinfo,
|
||||||
NULL);
|
0);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto errout;
|
goto errout;
|
||||||
|
|
||||||
/* Only the first call to __rtnl_register can fail */
|
/* Only the first call to __rtnl_register can fail */
|
||||||
__rtnl_register(PF_INET6, RTM_NEWADDR, inet6_rtm_newaddr, NULL, NULL);
|
__rtnl_register(PF_INET6, RTM_NEWADDR, inet6_rtm_newaddr, NULL, 0);
|
||||||
__rtnl_register(PF_INET6, RTM_DELADDR, inet6_rtm_deladdr, NULL, NULL);
|
__rtnl_register(PF_INET6, RTM_DELADDR, inet6_rtm_deladdr, NULL, 0);
|
||||||
__rtnl_register(PF_INET6, RTM_GETADDR, inet6_rtm_getaddr,
|
__rtnl_register(PF_INET6, RTM_GETADDR, inet6_rtm_getaddr,
|
||||||
inet6_dump_ifaddr, NULL);
|
inet6_dump_ifaddr, 0);
|
||||||
__rtnl_register(PF_INET6, RTM_GETMULTICAST, NULL,
|
__rtnl_register(PF_INET6, RTM_GETMULTICAST, NULL,
|
||||||
inet6_dump_ifmcaddr, NULL);
|
inet6_dump_ifmcaddr, 0);
|
||||||
__rtnl_register(PF_INET6, RTM_GETANYCAST, NULL,
|
__rtnl_register(PF_INET6, RTM_GETANYCAST, NULL,
|
||||||
inet6_dump_ifacaddr, NULL);
|
inet6_dump_ifacaddr, 0);
|
||||||
__rtnl_register(PF_INET6, RTM_GETNETCONF, inet6_netconf_get_devconf,
|
__rtnl_register(PF_INET6, RTM_GETNETCONF, inet6_netconf_get_devconf,
|
||||||
inet6_netconf_dump_devconf, NULL);
|
inet6_netconf_dump_devconf, 0);
|
||||||
|
|
||||||
ipv6_addr_label_rtnl_register();
|
ipv6_addr_label_rtnl_register();
|
||||||
|
|
||||||
|
|
|
@ -593,10 +593,10 @@ static int ip6addrlbl_get(struct sk_buff *in_skb, struct nlmsghdr *nlh,
|
||||||
void __init ipv6_addr_label_rtnl_register(void)
|
void __init ipv6_addr_label_rtnl_register(void)
|
||||||
{
|
{
|
||||||
__rtnl_register(PF_INET6, RTM_NEWADDRLABEL, ip6addrlbl_newdel,
|
__rtnl_register(PF_INET6, RTM_NEWADDRLABEL, ip6addrlbl_newdel,
|
||||||
NULL, NULL);
|
NULL, 0);
|
||||||
__rtnl_register(PF_INET6, RTM_DELADDRLABEL, ip6addrlbl_newdel,
|
__rtnl_register(PF_INET6, RTM_DELADDRLABEL, ip6addrlbl_newdel,
|
||||||
NULL, NULL);
|
NULL, 0);
|
||||||
__rtnl_register(PF_INET6, RTM_GETADDRLABEL, ip6addrlbl_get,
|
__rtnl_register(PF_INET6, RTM_GETADDRLABEL, ip6addrlbl_get,
|
||||||
ip6addrlbl_dump, NULL);
|
ip6addrlbl_dump, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2038,7 +2038,7 @@ int __init fib6_init(void)
|
||||||
goto out_kmem_cache_create;
|
goto out_kmem_cache_create;
|
||||||
|
|
||||||
ret = __rtnl_register(PF_INET6, RTM_GETROUTE, NULL, inet6_dump_fib,
|
ret = __rtnl_register(PF_INET6, RTM_GETROUTE, NULL, inet6_dump_fib,
|
||||||
NULL);
|
0);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out_unregister_subsys;
|
goto out_unregister_subsys;
|
||||||
|
|
||||||
|
|
|
@ -1427,7 +1427,7 @@ int __init ip6_mr_init(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
rtnl_register(RTNL_FAMILY_IP6MR, RTM_GETROUTE, NULL,
|
rtnl_register(RTNL_FAMILY_IP6MR, RTM_GETROUTE, NULL,
|
||||||
ip6mr_rtm_dumproute, NULL);
|
ip6mr_rtm_dumproute, 0);
|
||||||
return 0;
|
return 0;
|
||||||
#ifdef CONFIG_IPV6_PIMSM_V2
|
#ifdef CONFIG_IPV6_PIMSM_V2
|
||||||
add_proto_fail:
|
add_proto_fail:
|
||||||
|
|
|
@ -4105,9 +4105,9 @@ int __init ip6_route_init(void)
|
||||||
goto fib6_rules_init;
|
goto fib6_rules_init;
|
||||||
|
|
||||||
ret = -ENOBUFS;
|
ret = -ENOBUFS;
|
||||||
if (__rtnl_register(PF_INET6, RTM_NEWROUTE, inet6_rtm_newroute, NULL, NULL) ||
|
if (__rtnl_register(PF_INET6, RTM_NEWROUTE, inet6_rtm_newroute, NULL, 0) ||
|
||||||
__rtnl_register(PF_INET6, RTM_DELROUTE, inet6_rtm_delroute, NULL, NULL) ||
|
__rtnl_register(PF_INET6, RTM_DELROUTE, inet6_rtm_delroute, NULL, 0) ||
|
||||||
__rtnl_register(PF_INET6, RTM_GETROUTE, inet6_rtm_getroute, NULL, NULL))
|
__rtnl_register(PF_INET6, RTM_GETROUTE, inet6_rtm_getroute, NULL, 0))
|
||||||
goto out_register_late_subsys;
|
goto out_register_late_subsys;
|
||||||
|
|
||||||
ret = register_netdevice_notifier(&ip6_route_dev_notifier);
|
ret = register_netdevice_notifier(&ip6_route_dev_notifier);
|
||||||
|
|
|
@ -2479,12 +2479,12 @@ static int __init mpls_init(void)
|
||||||
|
|
||||||
rtnl_af_register(&mpls_af_ops);
|
rtnl_af_register(&mpls_af_ops);
|
||||||
|
|
||||||
rtnl_register(PF_MPLS, RTM_NEWROUTE, mpls_rtm_newroute, NULL, NULL);
|
rtnl_register(PF_MPLS, RTM_NEWROUTE, mpls_rtm_newroute, NULL, 0);
|
||||||
rtnl_register(PF_MPLS, RTM_DELROUTE, mpls_rtm_delroute, NULL, NULL);
|
rtnl_register(PF_MPLS, RTM_DELROUTE, mpls_rtm_delroute, NULL, 0);
|
||||||
rtnl_register(PF_MPLS, RTM_GETROUTE, mpls_getroute, mpls_dump_routes,
|
rtnl_register(PF_MPLS, RTM_GETROUTE, mpls_getroute, mpls_dump_routes,
|
||||||
NULL);
|
0);
|
||||||
rtnl_register(PF_MPLS, RTM_GETNETCONF, mpls_netconf_get_devconf,
|
rtnl_register(PF_MPLS, RTM_GETNETCONF, mpls_netconf_get_devconf,
|
||||||
mpls_netconf_dump_devconf, NULL);
|
mpls_netconf_dump_devconf, 0);
|
||||||
err = 0;
|
err = 0;
|
||||||
out:
|
out:
|
||||||
return err;
|
return err;
|
||||||
|
|
|
@ -300,15 +300,15 @@ static int route_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
int __init phonet_netlink_register(void)
|
int __init phonet_netlink_register(void)
|
||||||
{
|
{
|
||||||
int err = __rtnl_register(PF_PHONET, RTM_NEWADDR, addr_doit,
|
int err = __rtnl_register(PF_PHONET, RTM_NEWADDR, addr_doit,
|
||||||
NULL, NULL);
|
NULL, 0);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
/* Further __rtnl_register() cannot fail */
|
/* Further __rtnl_register() cannot fail */
|
||||||
__rtnl_register(PF_PHONET, RTM_DELADDR, addr_doit, NULL, NULL);
|
__rtnl_register(PF_PHONET, RTM_DELADDR, addr_doit, NULL, 0);
|
||||||
__rtnl_register(PF_PHONET, RTM_GETADDR, NULL, getaddr_dumpit, NULL);
|
__rtnl_register(PF_PHONET, RTM_GETADDR, NULL, getaddr_dumpit, 0);
|
||||||
__rtnl_register(PF_PHONET, RTM_NEWROUTE, route_doit, NULL, NULL);
|
__rtnl_register(PF_PHONET, RTM_NEWROUTE, route_doit, NULL, 0);
|
||||||
__rtnl_register(PF_PHONET, RTM_DELROUTE, route_doit, NULL, NULL);
|
__rtnl_register(PF_PHONET, RTM_DELROUTE, route_doit, NULL, 0);
|
||||||
__rtnl_register(PF_PHONET, RTM_GETROUTE, NULL, route_dumpit, NULL);
|
__rtnl_register(PF_PHONET, RTM_GETROUTE, NULL, route_dumpit, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1081,7 +1081,7 @@ static int __init qrtr_proto_init(void)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtnl_register(PF_QIPCRTR, RTM_NEWADDR, qrtr_addr_doit, NULL, NULL);
|
rtnl_register(PF_QIPCRTR, RTM_NEWADDR, qrtr_addr_doit, NULL, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1255,10 +1255,10 @@ static int tc_dump_action(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
|
|
||||||
static int __init tc_action_init(void)
|
static int __init tc_action_init(void)
|
||||||
{
|
{
|
||||||
rtnl_register(PF_UNSPEC, RTM_NEWACTION, tc_ctl_action, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_NEWACTION, tc_ctl_action, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_DELACTION, tc_ctl_action, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_DELACTION, tc_ctl_action, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETACTION, tc_ctl_action, tc_dump_action,
|
rtnl_register(PF_UNSPEC, RTM_GETACTION, tc_ctl_action, tc_dump_action,
|
||||||
NULL);
|
0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1010,10 +1010,10 @@ EXPORT_SYMBOL(tcf_exts_get_dev);
|
||||||
|
|
||||||
static int __init tc_filter_init(void)
|
static int __init tc_filter_init(void)
|
||||||
{
|
{
|
||||||
rtnl_register(PF_UNSPEC, RTM_NEWTFILTER, tc_ctl_tfilter, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_NEWTFILTER, tc_ctl_tfilter, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_DELTFILTER, tc_ctl_tfilter, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_DELTFILTER, tc_ctl_tfilter, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETTFILTER, tc_ctl_tfilter,
|
rtnl_register(PF_UNSPEC, RTM_GETTFILTER, tc_ctl_tfilter,
|
||||||
tc_dump_tfilter, NULL);
|
tc_dump_tfilter, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1952,14 +1952,14 @@ static int __init pktsched_init(void)
|
||||||
register_qdisc(&mq_qdisc_ops);
|
register_qdisc(&mq_qdisc_ops);
|
||||||
register_qdisc(&noqueue_qdisc_ops);
|
register_qdisc(&noqueue_qdisc_ops);
|
||||||
|
|
||||||
rtnl_register(PF_UNSPEC, RTM_NEWQDISC, tc_modify_qdisc, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_NEWQDISC, tc_modify_qdisc, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_DELQDISC, tc_get_qdisc, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_DELQDISC, tc_get_qdisc, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETQDISC, tc_get_qdisc, tc_dump_qdisc,
|
rtnl_register(PF_UNSPEC, RTM_GETQDISC, tc_get_qdisc, tc_dump_qdisc,
|
||||||
NULL);
|
0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_NEWTCLASS, tc_ctl_tclass, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_NEWTCLASS, tc_ctl_tclass, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_DELTCLASS, tc_ctl_tclass, NULL, NULL);
|
rtnl_register(PF_UNSPEC, RTM_DELTCLASS, tc_ctl_tclass, NULL, 0);
|
||||||
rtnl_register(PF_UNSPEC, RTM_GETTCLASS, tc_ctl_tclass, tc_dump_tclass,
|
rtnl_register(PF_UNSPEC, RTM_GETTCLASS, tc_ctl_tclass, tc_dump_tclass,
|
||||||
NULL);
|
0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue