Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[DECNet]: Use rtnl registration interface

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Acked-by: Steven Whitehouse <swhiteho@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Thomas Graf and committed by
David S. Miller
fa34ddd7 708914cc

+20 -36
-9
include/net/dn_fib.h
··· 148 148 extern unsigned dnet_addr_type(__le16 addr); 149 149 extern int dn_fib_lookup(struct flowi *fl, struct dn_fib_res *res); 150 150 151 - /* 152 - * rtnetlink interface 153 - */ 154 - extern int dn_fib_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg); 155 - extern int dn_fib_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg); 156 151 extern int dn_fib_dump(struct sk_buff *skb, struct netlink_callback *cb); 157 - 158 - extern int dn_fib_rtm_delrule(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg); 159 - extern int dn_fib_rtm_newrule(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg); 160 - extern int dn_fib_dump_rules(struct sk_buff *skb, struct netlink_callback *cb); 161 152 162 153 extern void dn_fib_free_info(struct dn_fib_info *fi); 163 154
-1
include/net/dn_route.h
··· 18 18 extern struct sk_buff *dn_alloc_skb(struct sock *sk, int size, gfp_t pri); 19 19 extern int dn_route_output_sock(struct dst_entry **pprt, struct flowi *, struct sock *sk, int flags); 20 20 extern int dn_cache_dump(struct sk_buff *skb, struct netlink_callback *cb); 21 - extern int dn_cache_getroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg); 22 21 extern void dn_rt_cache_flush(int delay); 23 22 24 23 /* Masks for flags field */
+1
net/decnet/af_decnet.c
··· 2413 2413 static void __exit decnet_exit(void) 2414 2414 { 2415 2415 sock_unregister(AF_DECnet); 2416 + rtnl_unregister_all(PF_DECnet); 2416 2417 dev_remove_pack(&dn_dix_packet_type); 2417 2418 2418 2419 dn_unregister_sysctl();
+3 -21
net/decnet/dn_dev.c
··· 1447 1447 1448 1448 #endif /* CONFIG_PROC_FS */ 1449 1449 1450 - static struct rtnetlink_link dnet_rtnetlink_table[RTM_NR_MSGTYPES] = 1451 - { 1452 - [RTM_NEWADDR - RTM_BASE] = { .doit = dn_nl_newaddr, }, 1453 - [RTM_DELADDR - RTM_BASE] = { .doit = dn_nl_deladdr, }, 1454 - [RTM_GETADDR - RTM_BASE] = { .dumpit = dn_nl_dump_ifaddr, }, 1455 - #ifdef CONFIG_DECNET_ROUTER 1456 - [RTM_NEWROUTE - RTM_BASE] = { .doit = dn_fib_rtm_newroute, }, 1457 - [RTM_DELROUTE - RTM_BASE] = { .doit = dn_fib_rtm_delroute, }, 1458 - [RTM_GETROUTE - RTM_BASE] = { .doit = dn_cache_getroute, 1459 - .dumpit = dn_fib_dump, }, 1460 - [RTM_GETRULE - RTM_BASE] = { .dumpit = dn_fib_dump_rules, }, 1461 - #else 1462 - [RTM_GETROUTE - RTM_BASE] = { .doit = dn_cache_getroute, 1463 - .dumpit = dn_cache_dump, }, 1464 - #endif 1465 - 1466 - }; 1467 - 1468 1450 static int __initdata addr[2]; 1469 1451 module_param_array(addr, int, NULL, 0444); 1470 1452 MODULE_PARM_DESC(addr, "The DECnet address of this machine: area,node"); ··· 1467 1485 1468 1486 dn_dev_devices_on(); 1469 1487 1470 - rtnetlink_links[PF_DECnet] = dnet_rtnetlink_table; 1488 + rtnl_register(PF_DECnet, RTM_NEWADDR, dn_nl_newaddr, NULL); 1489 + rtnl_register(PF_DECnet, RTM_DELADDR, dn_nl_deladdr, NULL); 1490 + rtnl_register(PF_DECnet, RTM_GETADDR, NULL, dn_nl_dump_ifaddr); 1471 1491 1472 1492 proc_net_fops_create("decnet_dev", S_IRUGO, &dn_dev_seq_fops); 1473 1493 ··· 1484 1500 1485 1501 void __exit dn_dev_cleanup(void) 1486 1502 { 1487 - rtnetlink_links[PF_DECnet] = NULL; 1488 - 1489 1503 #ifdef CONFIG_SYSCTL 1490 1504 { 1491 1505 int i;
+5 -3
net/decnet/dn_fib.c
··· 504 504 return 0; 505 505 } 506 506 507 - int dn_fib_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) 507 + static int dn_fib_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) 508 508 { 509 509 struct dn_fib_table *tb; 510 510 struct rtattr **rta = arg; ··· 520 520 return -ESRCH; 521 521 } 522 522 523 - int dn_fib_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) 523 + static int dn_fib_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) 524 524 { 525 525 struct dn_fib_table *tb; 526 526 struct rtattr **rta = arg; ··· 748 748 749 749 void __init dn_fib_init(void) 750 750 { 751 - 752 751 dn_fib_table_init(); 753 752 dn_fib_rules_init(); 754 753 755 754 register_dnaddr_notifier(&dn_fib_dnaddr_notifier); 755 + 756 + rtnl_register(PF_DECnet, RTM_NEWROUTE, dn_fib_rtm_newroute, NULL); 757 + rtnl_register(PF_DECnet, RTM_DELROUTE, dn_fib_rtm_delroute, NULL); 756 758 } 757 759 758 760
+8 -1
net/decnet/dn_route.c
··· 1522 1522 /* 1523 1523 * This is called by both endnodes and routers now. 1524 1524 */ 1525 - int dn_cache_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, void *arg) 1525 + static int dn_cache_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, void *arg) 1526 1526 { 1527 1527 struct rtattr **rta = arg; 1528 1528 struct rtmsg *rtm = NLMSG_DATA(nlh); ··· 1813 1813 dn_dst_ops.gc_thresh = (dn_rt_hash_mask + 1); 1814 1814 1815 1815 proc_net_fops_create("decnet_cache", S_IRUGO, &dn_rt_cache_seq_fops); 1816 + 1817 + #ifdef CONFIG_DECNET_ROUTER 1818 + rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute, dn_fib_dump); 1819 + #else 1820 + rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute, 1821 + dn_cache_dump); 1822 + #endif 1816 1823 } 1817 1824 1818 1825 void __exit dn_route_cleanup(void)
+3 -1
net/decnet/dn_rules.c
··· 239 239 return 0; 240 240 } 241 241 242 - int dn_fib_dump_rules(struct sk_buff *skb, struct netlink_callback *cb) 242 + static int dn_fib_dump_rules(struct sk_buff *skb, struct netlink_callback *cb) 243 243 { 244 244 return fib_rules_dump(skb, cb, AF_DECnet); 245 245 } ··· 264 264 { 265 265 list_add_tail(&default_rule.common.list, &dn_fib_rules); 266 266 fib_rules_register(&dn_fib_rules_ops); 267 + rtnl_register(PF_DECnet, RTM_GETRULE, NULL, dn_fib_dump_rules); 267 268 } 268 269 269 270 void __exit dn_fib_rules_cleanup(void) 270 271 { 272 + rtnl_unregister(PF_DECnet, RTM_GETRULE); 271 273 fib_rules_unregister(&dn_fib_rules_ops); 272 274 } 273 275