aboutsummaryrefslogtreecommitdiffstats
path: root/net/appletalk
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2007-09-17 14:56:21 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:49:10 -0400
commit881d966b48b035ab3f3aeaae0f3d3f9b584f45b2 (patch)
treec579d59a4107cbbe9e2b85939bc0d496b815c887 /net/appletalk
parentb4b510290b056b86611757ce1175a230f1080f53 (diff)
[NET]: Make the device list and device lookups per namespace.
This patch makes most of the generic device layer network namespace safe. This patch makes dev_base_head a network namespace variable, and then it picks up a few associated variables. The functions: dev_getbyhwaddr dev_getfirsthwbytype dev_get_by_flags dev_get_by_name __dev_get_by_name dev_get_by_index __dev_get_by_index dev_ioctl dev_ethtool dev_load wireless_process_ioctl were modified to take a network namespace argument, and deal with it. vlan_ioctl_set and brioctl_set were modified so their hooks will receive a network namespace argument. So basically anthing in the core of the network stack that was affected to by the change of dev_base was modified to handle multiple network namespaces. The rest of the network stack was simply modified to explicitly use &init_net the initial network namespace. This can be fixed when those components of the network stack are modified to handle multiple network namespaces. For now the ifindex generator is left global. Fundametally ifindex numbers are per namespace, or else we will have corner case problems with migration when we get that far. At the same time there are assumptions in the network stack that the ifindex of a network device won't change. Making the ifindex number global seems a good compromise until the network stack can cope with ifindex changes when you change namespaces, and the like. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/appletalk')
-rw-r--r--net/appletalk/ddp.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c
index 36fcdbf923c4..7c0b5151d526 100644
--- a/net/appletalk/ddp.c
+++ b/net/appletalk/ddp.c
@@ -677,7 +677,7 @@ static int atif_ioctl(int cmd, void __user *arg)
677 if (copy_from_user(&atreq, arg, sizeof(atreq))) 677 if (copy_from_user(&atreq, arg, sizeof(atreq)))
678 return -EFAULT; 678 return -EFAULT;
679 679
680 dev = __dev_get_by_name(atreq.ifr_name); 680 dev = __dev_get_by_name(&init_net, atreq.ifr_name);
681 if (!dev) 681 if (!dev)
682 return -ENODEV; 682 return -ENODEV;
683 683
@@ -901,7 +901,7 @@ static int atrtr_ioctl(unsigned int cmd, void __user *arg)
901 if (copy_from_user(name, rt.rt_dev, IFNAMSIZ-1)) 901 if (copy_from_user(name, rt.rt_dev, IFNAMSIZ-1))
902 return -EFAULT; 902 return -EFAULT;
903 name[IFNAMSIZ-1] = '\0'; 903 name[IFNAMSIZ-1] = '\0';
904 dev = __dev_get_by_name(name); 904 dev = __dev_get_by_name(&init_net, name);
905 if (!dev) 905 if (!dev)
906 return -ENODEV; 906 return -ENODEV;
907 } 907 }
@@ -1273,7 +1273,7 @@ static __inline__ int is_ip_over_ddp(struct sk_buff *skb)
1273 1273
1274static int handle_ip_over_ddp(struct sk_buff *skb) 1274static int handle_ip_over_ddp(struct sk_buff *skb)
1275{ 1275{
1276 struct net_device *dev = __dev_get_by_name("ipddp0"); 1276 struct net_device *dev = __dev_get_by_name(&init_net, "ipddp0");
1277 struct net_device_stats *stats; 1277 struct net_device_stats *stats;
1278 1278
1279 /* This needs to be able to handle ipddp"N" devices */ 1279 /* This needs to be able to handle ipddp"N" devices */