aboutsummaryrefslogtreecommitdiffstats
path: root/net/decnet/dn_dev.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-04-27 12:26:46 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-04-27 12:26:46 -0400
commit15c54033964a943de7b0763efd3bd0ede7326395 (patch)
tree840b292612d1b5396d5bab5bde537a9013db3ceb /net/decnet/dn_dev.c
parentad5da3cf39a5b11a198929be1f2644e17ecd767e (diff)
parent912a41a4ab935ce8c4308428ec13fc7f8b1f18f4 (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (448 commits) [IPV4] nl_fib_lookup: Initialise res.r before fib_res_put(&res) [IPV6]: Fix thinko in ipv6_rthdr_rcv() changes. [IPV4]: Add multipath cached to feature-removal-schedule.txt [WIRELESS] cfg80211: Clarify locking comment. [WIRELESS] cfg80211: Fix locking in wiphy_new. [WEXT] net_device: Don't include wext bits if not required. [WEXT]: Misc code cleanups. [WEXT]: Reduce inline abuse. [WEXT]: Move EXPORT_SYMBOL statements where they belong. [WEXT]: Cleanup early ioctl call path. [WEXT]: Remove options. [WEXT]: Remove dead debug code. [WEXT]: Clean up how wext is called. [WEXT]: Move to net/wireless [AFS]: Eliminate cmpxchg() usage in vlocation code. [RXRPC]: Fix pointers passed to bitops. [RXRPC]: Remove bogus atomic_* overrides. [AFS]: Fix u64 printing in debug logging. [AFS]: Add "directory write" support. [AFS]: Implement the CB.InitCallBackState3 operation. ...
Diffstat (limited to 'net/decnet/dn_dev.c')
-rw-r--r--net/decnet/dn_dev.c31
1 files changed, 5 insertions, 26 deletions
diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c
index 060d725e2942..5c2a9951b638 100644
--- a/net/decnet/dn_dev.c
+++ b/net/decnet/dn_dev.c
@@ -799,7 +799,6 @@ static int dn_nl_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
799 skip_ndevs = cb->args[0]; 799 skip_ndevs = cb->args[0];
800 skip_naddr = cb->args[1]; 800 skip_naddr = cb->args[1];
801 801
802 read_lock(&dev_base_lock);
803 for (dev = dev_base, idx = 0; dev; dev = dev->next, idx++) { 802 for (dev = dev_base, idx = 0; dev; dev = dev->next, idx++) {
804 if (idx < skip_ndevs) 803 if (idx < skip_ndevs)
805 continue; 804 continue;
@@ -824,8 +823,6 @@ static int dn_nl_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
824 } 823 }
825 } 824 }
826done: 825done:
827 read_unlock(&dev_base_lock);
828
829 cb->args[0] = idx; 826 cb->args[0] = idx;
830 cb->args[1] = dn_idx; 827 cb->args[1] = dn_idx;
831 828
@@ -913,7 +910,7 @@ static void dn_send_endnode_hello(struct net_device *dev, struct dn_ifaddr *ifa)
913 pktlen = (__le16 *)skb_push(skb,2); 910 pktlen = (__le16 *)skb_push(skb,2);
914 *pktlen = dn_htons(skb->len - 2); 911 *pktlen = dn_htons(skb->len - 2);
915 912
916 skb->nh.raw = skb->data; 913 skb_reset_network_header(skb);
917 914
918 dn_rt_finish_output(skb, dn_rt_all_rt_mcast, msg->id); 915 dn_rt_finish_output(skb, dn_rt_all_rt_mcast, msg->id);
919} 916}
@@ -1005,7 +1002,7 @@ static void dn_send_router_hello(struct net_device *dev, struct dn_ifaddr *ifa)
1005 pktlen = (__le16 *)skb_push(skb, 2); 1002 pktlen = (__le16 *)skb_push(skb, 2);
1006 *pktlen = dn_htons(skb->len - 2); 1003 *pktlen = dn_htons(skb->len - 2);
1007 1004
1008 skb->nh.raw = skb->data; 1005 skb_reset_network_header(skb);
1009 1006
1010 if (dn_am_i_a_router(dn, dn_db, ifa)) { 1007 if (dn_am_i_a_router(dn, dn_db, ifa)) {
1011 struct sk_buff *skb2 = skb_copy(skb, GFP_ATOMIC); 1008 struct sk_buff *skb2 = skb_copy(skb, GFP_ATOMIC);
@@ -1447,24 +1444,6 @@ static const struct file_operations dn_dev_seq_fops = {
1447 1444
1448#endif /* CONFIG_PROC_FS */ 1445#endif /* CONFIG_PROC_FS */
1449 1446
1450static 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
1468static int __initdata addr[2]; 1447static int __initdata addr[2];
1469module_param_array(addr, int, NULL, 0444); 1448module_param_array(addr, int, NULL, 0444);
1470MODULE_PARM_DESC(addr, "The DECnet address of this machine: area,node"); 1449MODULE_PARM_DESC(addr, "The DECnet address of this machine: area,node");
@@ -1485,7 +1464,9 @@ void __init dn_dev_init(void)
1485 1464
1486 dn_dev_devices_on(); 1465 dn_dev_devices_on();
1487 1466
1488 rtnetlink_links[PF_DECnet] = dnet_rtnetlink_table; 1467 rtnl_register(PF_DECnet, RTM_NEWADDR, dn_nl_newaddr, NULL);
1468 rtnl_register(PF_DECnet, RTM_DELADDR, dn_nl_deladdr, NULL);
1469 rtnl_register(PF_DECnet, RTM_GETADDR, NULL, dn_nl_dump_ifaddr);
1489 1470
1490 proc_net_fops_create("decnet_dev", S_IRUGO, &dn_dev_seq_fops); 1471 proc_net_fops_create("decnet_dev", S_IRUGO, &dn_dev_seq_fops);
1491 1472
@@ -1500,8 +1481,6 @@ void __init dn_dev_init(void)
1500 1481
1501void __exit dn_dev_cleanup(void) 1482void __exit dn_dev_cleanup(void)
1502{ 1483{
1503 rtnetlink_links[PF_DECnet] = NULL;
1504
1505#ifdef CONFIG_SYSCTL 1484#ifdef CONFIG_SYSCTL
1506 { 1485 {
1507 int i; 1486 int i;