|
@@ -708,9 +708,6 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
|
|
|
int s_idx = cb->args[0];
|
|
|
struct net_device *dev;
|
|
|
|
|
|
- if (net != &init_net)
|
|
|
- return 0;
|
|
|
-
|
|
|
idx = 0;
|
|
|
for_each_netdev(net, dev) {
|
|
|
if (idx < s_idx)
|
|
@@ -913,9 +910,6 @@ static int rtnl_setlink(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
|
|
|
struct nlattr *tb[IFLA_MAX+1];
|
|
|
char ifname[IFNAMSIZ];
|
|
|
|
|
|
- if (net != &init_net)
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFLA_MAX, ifla_policy);
|
|
|
if (err < 0)
|
|
|
goto errout;
|
|
@@ -964,9 +958,6 @@ static int rtnl_dellink(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
|
|
|
struct nlattr *tb[IFLA_MAX+1];
|
|
|
int err;
|
|
|
|
|
|
- if (net != &init_net)
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFLA_MAX, ifla_policy);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
@@ -1048,9 +1039,6 @@ static int rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
|
|
|
struct nlattr *linkinfo[IFLA_INFO_MAX+1];
|
|
|
int err;
|
|
|
|
|
|
- if (net != &init_net)
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
#ifdef CONFIG_KMOD
|
|
|
replay:
|
|
|
#endif
|
|
@@ -1177,9 +1165,6 @@ static int rtnl_getlink(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
|
|
|
struct sk_buff *nskb;
|
|
|
int err;
|
|
|
|
|
|
- if (net != &init_net)
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFLA_MAX, ifla_policy);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
@@ -1215,13 +1200,9 @@ errout:
|
|
|
|
|
|
static int rtnl_dump_all(struct sk_buff *skb, struct netlink_callback *cb)
|
|
|
{
|
|
|
- struct net *net = skb->sk->sk_net;
|
|
|
int idx;
|
|
|
int s_idx = cb->family;
|
|
|
|
|
|
- if (net != &init_net)
|
|
|
- return 0;
|
|
|
-
|
|
|
if (s_idx == 0)
|
|
|
s_idx = 1;
|
|
|
for (idx=1; idx<NPROTO; idx++) {
|
|
@@ -1243,6 +1224,7 @@ static int rtnl_dump_all(struct sk_buff *skb, struct netlink_callback *cb)
|
|
|
|
|
|
void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change)
|
|
|
{
|
|
|
+ struct net *net = dev->nd_net;
|
|
|
struct sk_buff *skb;
|
|
|
int err = -ENOBUFS;
|
|
|
|
|
@@ -1257,10 +1239,10 @@ void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change)
|
|
|
kfree_skb(skb);
|
|
|
goto errout;
|
|
|
}
|
|
|
- err = rtnl_notify(skb, &init_net, 0, RTNLGRP_LINK, NULL, GFP_KERNEL);
|
|
|
+ err = rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL, GFP_KERNEL);
|
|
|
errout:
|
|
|
if (err < 0)
|
|
|
- rtnl_set_sk_err(&init_net, RTNLGRP_LINK, err);
|
|
|
+ rtnl_set_sk_err(net, RTNLGRP_LINK, err);
|
|
|
}
|
|
|
|
|
|
/* Protected by RTNL sempahore. */
|
|
@@ -1353,9 +1335,6 @@ static int rtnetlink_event(struct notifier_block *this, unsigned long event, voi
|
|
|
{
|
|
|
struct net_device *dev = ptr;
|
|
|
|
|
|
- if (dev->nd_net != &init_net)
|
|
|
- return NOTIFY_DONE;
|
|
|
-
|
|
|
switch (event) {
|
|
|
case NETDEV_UNREGISTER:
|
|
|
rtmsg_ifinfo(RTM_DELLINK, dev, ~0U);
|