git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[NET]: Make the device list and device lookups per namespace.
[pandora-kernel.git]
/
net
/
ipv4
/
devinet.c
diff --git
a/net/ipv4/devinet.c
b/net/ipv4/devinet.c
index
5dbe580
..
721b89b
100644
(file)
--- a/
net/ipv4/devinet.c
+++ b/
net/ipv4/devinet.c
@@
-420,7
+420,7
@@
struct in_device *inetdev_by_index(int ifindex)
struct net_device *dev;
struct in_device *in_dev = NULL;
read_lock(&dev_base_lock);
struct net_device *dev;
struct in_device *in_dev = NULL;
read_lock(&dev_base_lock);
- dev = __dev_get_by_index(ifindex);
+ dev = __dev_get_by_index(
&init_net,
ifindex);
if (dev)
in_dev = in_dev_get(dev);
read_unlock(&dev_base_lock);
if (dev)
in_dev = in_dev_get(dev);
read_unlock(&dev_base_lock);
@@
-506,7
+506,7
@@
static struct in_ifaddr *rtm_to_ifaddr(struct nlmsghdr *nlh)
goto errout;
}
goto errout;
}
- dev = __dev_get_by_index(ifm->ifa_index);
+ dev = __dev_get_by_index(
&init_net,
ifm->ifa_index);
if (dev == NULL) {
err = -ENODEV;
goto errout;
if (dev == NULL) {
err = -ENODEV;
goto errout;
@@
-628,7
+628,7
@@
int devinet_ioctl(unsigned int cmd, void __user *arg)
*colon = 0;
#ifdef CONFIG_KMOD
*colon = 0;
#ifdef CONFIG_KMOD
- dev_load(ifr.ifr_name);
+ dev_load(
&init_net,
ifr.ifr_name);
#endif
switch (cmd) {
#endif
switch (cmd) {
@@
-669,7
+669,7
@@
int devinet_ioctl(unsigned int cmd, void __user *arg)
rtnl_lock();
ret = -ENODEV;
rtnl_lock();
ret = -ENODEV;
- if ((dev = __dev_get_by_name(ifr.ifr_name)) == NULL)
+ if ((dev = __dev_get_by_name(
&init_net,
ifr.ifr_name)) == NULL)
goto done;
if (colon)
goto done;
if (colon)
@@
-909,7
+909,7
@@
no_in_dev:
*/
read_lock(&dev_base_lock);
rcu_read_lock();
*/
read_lock(&dev_base_lock);
rcu_read_lock();
- for_each_netdev(dev) {
+ for_each_netdev(
&init_net,
dev) {
if ((in_dev = __in_dev_get_rcu(dev)) == NULL)
continue;
if ((in_dev = __in_dev_get_rcu(dev)) == NULL)
continue;
@@
-988,7
+988,7
@@
__be32 inet_confirm_addr(const struct net_device *dev, __be32 dst, __be32 local,
read_lock(&dev_base_lock);
rcu_read_lock();
read_lock(&dev_base_lock);
rcu_read_lock();
- for_each_netdev(dev) {
+ for_each_netdev(
&init_net,
dev) {
if ((in_dev = __in_dev_get_rcu(dev))) {
addr = confirm_addr_indev(in_dev, dst, local, scope);
if (addr)
if ((in_dev = __in_dev_get_rcu(dev))) {
addr = confirm_addr_indev(in_dev, dst, local, scope);
if (addr)
@@
-1051,6
+1051,9
@@
static int inetdev_event(struct notifier_block *this, unsigned long event,
struct net_device *dev = ptr;
struct in_device *in_dev = __in_dev_get_rtnl(dev);
struct net_device *dev = ptr;
struct in_device *in_dev = __in_dev_get_rtnl(dev);
+ if (dev->nd_net != &init_net)
+ return NOTIFY_DONE;
+
ASSERT_RTNL();
if (!in_dev) {
ASSERT_RTNL();
if (!in_dev) {
@@
-1182,7
+1185,7
@@
static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
s_ip_idx = ip_idx = cb->args[1];
idx = 0;
s_ip_idx = ip_idx = cb->args[1];
idx = 0;
- for_each_netdev(dev) {
+ for_each_netdev(
&init_net,
dev) {
if (idx < s_idx)
goto cont;
if (idx > s_idx)
if (idx < s_idx)
goto cont;
if (idx > s_idx)
@@
-1241,7
+1244,7
@@
static void devinet_copy_dflt_conf(int i)
struct net_device *dev;
read_lock(&dev_base_lock);
struct net_device *dev;
read_lock(&dev_base_lock);
- for_each_netdev(dev) {
+ for_each_netdev(
&init_net,
dev) {
struct in_device *in_dev;
rcu_read_lock();
in_dev = __in_dev_get_rcu(dev);
struct in_device *in_dev;
rcu_read_lock();
in_dev = __in_dev_get_rcu(dev);
@@
-1330,7
+1333,7
@@
void inet_forward_change(void)
IPV4_DEVCONF_DFLT(FORWARDING) = on;
read_lock(&dev_base_lock);
IPV4_DEVCONF_DFLT(FORWARDING) = on;
read_lock(&dev_base_lock);
- for_each_netdev(dev) {
+ for_each_netdev(
&init_net,
dev) {
struct in_device *in_dev;
rcu_read_lock();
in_dev = __in_dev_get_rcu(dev);
struct in_device *in_dev;
rcu_read_lock();
in_dev = __in_dev_get_rcu(dev);