dect
/
linux-2.6
Archived
13
0
Fork 0

[NET] NETNS: Omit net_device->nd_net without CONFIG_NET_NS.

Introduce per-net_device inlines: dev_net(), dev_net_set().
Without CONFIG_NET_NS, no namespace other than &init_net exists.
Let's explicitly define them to help compiler optimizations.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
This commit is contained in:
YOSHIFUJI Hideaki 2008-03-25 21:47:49 +09:00
parent 7cbca67c07
commit c346dca108
87 changed files with 251 additions and 228 deletions

View File

@ -294,7 +294,7 @@ simeth_device_event(struct notifier_block *this,unsigned long event, void *ptr)
return NOTIFY_DONE; return NOTIFY_DONE;
} }
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if ( event != NETDEV_UP && event != NETDEV_DOWN ) return NOTIFY_DONE; if ( event != NETDEV_UP && event != NETDEV_DOWN ) return NOTIFY_DONE;

View File

@ -115,7 +115,7 @@ aoenet_rcv(struct sk_buff *skb, struct net_device *ifp, struct packet_type *pt,
struct aoe_hdr *h; struct aoe_hdr *h;
u32 n; u32 n;
if (ifp->nd_net != &init_net) if (dev_net(ifp) != &init_net)
goto exit; goto exit;
skb = skb_share_check(skb, GFP_ATOMIC); skb = skb_share_check(skb, GFP_ATOMIC);

View File

@ -2429,7 +2429,7 @@ int bond_3ad_lacpdu_recv(struct sk_buff *skb, struct net_device *dev, struct pac
struct slave *slave = NULL; struct slave *slave = NULL;
int ret = NET_RX_DROP; int ret = NET_RX_DROP;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto out; goto out;
if (!(dev->flags & IFF_MASTER)) if (!(dev->flags & IFF_MASTER))

View File

@ -345,7 +345,7 @@ static int rlb_arp_recv(struct sk_buff *skb, struct net_device *bond_dev, struct
struct arp_pkt *arp = (struct arp_pkt *)skb->data; struct arp_pkt *arp = (struct arp_pkt *)skb->data;
int res = NET_RX_DROP; int res = NET_RX_DROP;
if (bond_dev->nd_net != &init_net) if (dev_net(bond_dev) != &init_net)
goto out; goto out;
if (!(bond_dev->flags & IFF_MASTER)) if (!(bond_dev->flags & IFF_MASTER))

View File

@ -2629,7 +2629,7 @@ static int bond_arp_rcv(struct sk_buff *skb, struct net_device *dev, struct pack
unsigned char *arp_ptr; unsigned char *arp_ptr;
__be32 sip, tip; __be32 sip, tip;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto out; goto out;
if (!(dev->priv_flags & IFF_BONDING) || !(dev->flags & IFF_MASTER)) if (!(dev->priv_flags & IFF_BONDING) || !(dev->flags & IFF_MASTER))
@ -3470,7 +3470,7 @@ static int bond_netdev_event(struct notifier_block *this, unsigned long event, v
{ {
struct net_device *event_dev = (struct net_device *)ptr; struct net_device *event_dev = (struct net_device *)ptr;
if (event_dev->nd_net != &init_net) if (dev_net(event_dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
dprintk("event_dev: %s, event: %lx\n", dprintk("event_dev: %s, event: %lx\n",
@ -3508,7 +3508,7 @@ static int bond_inetaddr_event(struct notifier_block *this, unsigned long event,
struct bonding *bond, *bond_next; struct bonding *bond, *bond_next;
struct vlan_entry *vlan, *vlan_next; struct vlan_entry *vlan, *vlan_next;
if (ifa->ifa_dev->dev->nd_net != &init_net) if (dev_net(ifa->ifa_dev->dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
list_for_each_entry_safe(bond, bond_next, &bond_dev_list, bond_list) { list_for_each_entry_safe(bond, bond_next, &bond_dev_list, bond_list) {

View File

@ -172,7 +172,7 @@ static int bpq_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_ty
struct ethhdr *eth; struct ethhdr *eth;
struct bpqdev *bpq; struct bpqdev *bpq;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto drop; goto drop;
if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
@ -553,7 +553,7 @@ static int bpq_device_event(struct notifier_block *this,unsigned long event, voi
{ {
struct net_device *dev = (struct net_device *)ptr; struct net_device *dev = (struct net_device *)ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (!dev_is_ethdev(dev)) if (!dev_is_ethdev(dev))

View File

@ -258,7 +258,7 @@ static __net_init int loopback_net_init(struct net *net)
if (!dev) if (!dev)
goto out; goto out;
dev->nd_net = net; dev_net_set(dev, net);
err = register_netdev(dev); err = register_netdev(dev);
if (err) if (err)
goto out_free_netdev; goto out_free_netdev;

View File

@ -402,7 +402,7 @@ static int macvlan_newlink(struct net_device *dev,
if (!tb[IFLA_LINK]) if (!tb[IFLA_LINK])
return -EINVAL; return -EINVAL;
lowerdev = __dev_get_by_index(dev->nd_net, nla_get_u32(tb[IFLA_LINK])); lowerdev = __dev_get_by_index(dev_net(dev), nla_get_u32(tb[IFLA_LINK]));
if (lowerdev == NULL) if (lowerdev == NULL)
return -ENODEV; return -ENODEV;

View File

@ -301,7 +301,7 @@ static int pppoe_device_event(struct notifier_block *this,
{ {
struct net_device *dev = (struct net_device *) ptr; struct net_device *dev = (struct net_device *) ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
/* Only look at sockets that are using this specific device. */ /* Only look at sockets that are using this specific device. */
@ -392,7 +392,7 @@ static int pppoe_rcv(struct sk_buff *skb,
if (!(skb = skb_share_check(skb, GFP_ATOMIC))) if (!(skb = skb_share_check(skb, GFP_ATOMIC)))
goto out; goto out;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto drop; goto drop;
if (!pskb_may_pull(skb, sizeof(struct pppoe_hdr))) if (!pskb_may_pull(skb, sizeof(struct pppoe_hdr)))
@ -424,7 +424,7 @@ static int pppoe_disc_rcv(struct sk_buff *skb,
struct pppoe_hdr *ph; struct pppoe_hdr *ph;
struct pppox_sock *po; struct pppox_sock *po;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto abort; goto abort;
if (!pskb_may_pull(skb, sizeof(struct pppoe_hdr))) if (!pskb_may_pull(skb, sizeof(struct pppoe_hdr)))

View File

@ -375,7 +375,7 @@ static int veth_newlink(struct net_device *dev,
else else
snprintf(ifname, IFNAMSIZ, DRV_NAME "%%d"); snprintf(ifname, IFNAMSIZ, DRV_NAME "%%d");
peer = rtnl_create_link(dev->nd_net, ifname, &veth_link_ops, tbp); peer = rtnl_create_link(dev_net(dev), ifname, &veth_link_ops, tbp);
if (IS_ERR(peer)) if (IS_ERR(peer))
return PTR_ERR(peer); return PTR_ERR(peer);

View File

@ -3464,7 +3464,7 @@ static int velocity_netdev_event(struct notifier_block *nb, unsigned long notifi
struct velocity_info *vptr; struct velocity_info *vptr;
unsigned long flags; unsigned long flags;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
spin_lock_irqsave(&velocity_dev_list_lock, flags); spin_lock_irqsave(&velocity_dev_list_lock, flags);

View File

@ -517,7 +517,7 @@ static int dlci_dev_event(struct notifier_block *unused,
{ {
struct net_device *dev = (struct net_device *) ptr; struct net_device *dev = (struct net_device *) ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (event == NETDEV_UNREGISTER) { if (event == NETDEV_UNREGISTER) {

View File

@ -68,7 +68,7 @@ static int hdlc_rcv(struct sk_buff *skb, struct net_device *dev,
{ {
struct hdlc_device *hdlc = dev_to_hdlc(dev); struct hdlc_device *hdlc = dev_to_hdlc(dev);
if (dev->nd_net != &init_net) { if (dev_net(dev) != &init_net) {
kfree_skb(skb); kfree_skb(skb);
return 0; return 0;
} }
@ -105,7 +105,7 @@ static int hdlc_device_event(struct notifier_block *this, unsigned long event,
unsigned long flags; unsigned long flags;
int on; int on;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (dev->get_stats != hdlc_get_stats) if (dev->get_stats != hdlc_get_stats)

View File

@ -91,7 +91,7 @@ static int lapbeth_rcv(struct sk_buff *skb, struct net_device *dev, struct packe
int len, err; int len, err;
struct lapbethdev *lapbeth; struct lapbethdev *lapbeth;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto drop; goto drop;
if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
@ -393,7 +393,7 @@ static int lapbeth_device_event(struct notifier_block *this,
struct lapbethdev *lapbeth; struct lapbethdev *lapbeth;
struct net_device *dev = ptr; struct net_device *dev = ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (!dev_is_ethdev(dev)) if (!dev_is_ethdev(dev))

View File

@ -1444,7 +1444,7 @@ static void sppp_print_bytes (u_char *p, u16 len)
static int sppp_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *p, struct net_device *orig_dev) static int sppp_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *p, struct net_device *orig_dev)
{ {
if (dev->nd_net != &init_net) { if (dev_net(dev) != &init_net) {
kfree_skb(skb); kfree_skb(skb);
return 0; return 0;
} }

View File

@ -3250,7 +3250,7 @@ static int qeth_l3_ip_event(struct notifier_block *this,
struct qeth_ipaddr *addr; struct qeth_ipaddr *addr;
struct qeth_card *card; struct qeth_card *card;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
QETH_DBF_TEXT(trace, 3, "ipevent"); QETH_DBF_TEXT(trace, 3, "ipevent");

View File

@ -70,13 +70,13 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
ipv4_devconf_set((in_dev), NET_IPV4_CONF_ ## attr, (val)) ipv4_devconf_set((in_dev), NET_IPV4_CONF_ ## attr, (val))
#define IN_DEV_ANDCONF(in_dev, attr) \ #define IN_DEV_ANDCONF(in_dev, attr) \
(IPV4_DEVCONF_ALL(in_dev->dev->nd_net, attr) && \ (IPV4_DEVCONF_ALL(dev_net(in_dev->dev), attr) && \
IN_DEV_CONF_GET((in_dev), attr)) IN_DEV_CONF_GET((in_dev), attr))
#define IN_DEV_ORCONF(in_dev, attr) \ #define IN_DEV_ORCONF(in_dev, attr) \
(IPV4_DEVCONF_ALL(in_dev->dev->nd_net, attr) || \ (IPV4_DEVCONF_ALL(dev_net(in_dev->dev), attr) || \
IN_DEV_CONF_GET((in_dev), attr)) IN_DEV_CONF_GET((in_dev), attr))
#define IN_DEV_MAXCONF(in_dev, attr) \ #define IN_DEV_MAXCONF(in_dev, attr) \
(max(IPV4_DEVCONF_ALL(in_dev->dev->nd_net, attr), \ (max(IPV4_DEVCONF_ALL(dev_net(in_dev->dev), attr), \
IN_DEV_CONF_GET((in_dev), attr))) IN_DEV_CONF_GET((in_dev), attr)))
#define IN_DEV_FORWARD(in_dev) IN_DEV_CONF_GET((in_dev), FORWARDING) #define IN_DEV_FORWARD(in_dev) IN_DEV_CONF_GET((in_dev), FORWARDING)

View File

@ -708,8 +708,10 @@ struct net_device
void (*poll_controller)(struct net_device *dev); void (*poll_controller)(struct net_device *dev);
#endif #endif
#ifdef CONFIG_NET_NS
/* Network namespace this network device is inside */ /* Network namespace this network device is inside */
struct net *nd_net; struct net *nd_net;
#endif
/* bridge stuff */ /* bridge stuff */
struct net_bridge_port *br_port; struct net_bridge_port *br_port;
@ -737,6 +739,27 @@ struct net_device
#define NETDEV_ALIGN 32 #define NETDEV_ALIGN 32
#define NETDEV_ALIGN_CONST (NETDEV_ALIGN - 1) #define NETDEV_ALIGN_CONST (NETDEV_ALIGN - 1)
/*
* Net namespace inlines
*/
static inline
struct net *dev_net(const struct net_device *dev)
{
#ifdef CONFIG_NET_NS
return dev->nd_net;
#else
return &init_net;
#endif
}
static inline
void dev_net_set(struct net_device *dev, const struct net *net)
{
#ifdef CONFIG_NET_NS
dev->nd_dev = net;
#endif
}
/** /**
* netdev_priv - access network device private data * netdev_priv - access network device private data
* @dev: network device * @dev: network device
@ -813,7 +836,7 @@ static inline struct net_device *next_net_device(struct net_device *dev)
struct list_head *lh; struct list_head *lh;
struct net *net; struct net *net;
net = dev->nd_net; net = dev_net(dev);
lh = dev->dev_list.next; lh = dev->dev_list.next;
return lh == &net->dev_base_head ? NULL : net_device_entry(lh); return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
} }

View File

@ -382,7 +382,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
int i, flgs; int i, flgs;
struct net_device *vlandev; struct net_device *vlandev;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (!grp) if (!grp)

View File

@ -153,7 +153,7 @@ int vlan_skb_recv(struct sk_buff *skb, struct net_device *dev,
struct net_device_stats *stats; struct net_device_stats *stats;
unsigned short vlan_TCI; unsigned short vlan_TCI;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto err_free; goto err_free;
skb = skb_share_check(skb, GFP_ATOMIC); skb = skb_share_check(skb, GFP_ATOMIC);

View File

@ -333,7 +333,7 @@ static int aarp_device_event(struct notifier_block *this, unsigned long event,
struct net_device *dev = ptr; struct net_device *dev = ptr;
int ct; int ct;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (event == NETDEV_DOWN) { if (event == NETDEV_DOWN) {
@ -716,7 +716,7 @@ static int aarp_rcv(struct sk_buff *skb, struct net_device *dev,
struct atalk_addr sa, *ma, da; struct atalk_addr sa, *ma, da;
struct atalk_iface *ifa; struct atalk_iface *ifa;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto out0; goto out0;
/* We only do Ethernet SNAP AARP. */ /* We only do Ethernet SNAP AARP. */

View File

@ -648,7 +648,7 @@ static int ddp_device_event(struct notifier_block *this, unsigned long event,
{ {
struct net_device *dev = ptr; struct net_device *dev = ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (event == NETDEV_DOWN) if (event == NETDEV_DOWN)
@ -1405,7 +1405,7 @@ static int atalk_rcv(struct sk_buff *skb, struct net_device *dev,
int origlen; int origlen;
__u16 len_hops; __u16 len_hops;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto freeit; goto freeit;
/* Don't mangle buffer if shared */ /* Don't mangle buffer if shared */
@ -1493,7 +1493,7 @@ freeit:
static int ltalk_rcv(struct sk_buff *skb, struct net_device *dev, static int ltalk_rcv(struct sk_buff *skb, struct net_device *dev,
struct packet_type *pt, struct net_device *orig_dev) struct packet_type *pt, struct net_device *orig_dev)
{ {
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto freeit; goto freeit;
/* Expand any short form frames */ /* Expand any short form frames */

View File

@ -612,7 +612,7 @@ static int clip_device_event(struct notifier_block *this, unsigned long event,
{ {
struct net_device *dev = arg; struct net_device *dev = arg;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (event == NETDEV_UNREGISTER) { if (event == NETDEV_UNREGISTER) {

View File

@ -964,7 +964,7 @@ static int mpoa_event_listener(struct notifier_block *mpoa_notifier, unsigned lo
dev = (struct net_device *)dev_ptr; dev = (struct net_device *)dev_ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (dev->name == NULL || strncmp(dev->name, "lec", 3)) if (dev->name == NULL || strncmp(dev->name, "lec", 3))

View File

@ -116,7 +116,7 @@ static int ax25_device_event(struct notifier_block *this, unsigned long event,
{ {
struct net_device *dev = (struct net_device *)ptr; struct net_device *dev = (struct net_device *)ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
/* Reject non AX.25 devices */ /* Reject non AX.25 devices */

View File

@ -451,7 +451,7 @@ int ax25_kiss_rcv(struct sk_buff *skb, struct net_device *dev,
skb->sk = NULL; /* Initially we don't know who it's for */ skb->sk = NULL; /* Initially we don't know who it's for */
skb->destructor = NULL; /* Who initializes this, dammit?! */ skb->destructor = NULL; /* Who initializes this, dammit?! */
if (dev->nd_net != &init_net) { if (dev_net(dev) != &init_net) {
kfree_skb(skb); kfree_skb(skb);
return 0; return 0;
} }

View File

@ -37,7 +37,7 @@ static int br_device_event(struct notifier_block *unused, unsigned long event, v
struct net_bridge_port *p = dev->br_port; struct net_bridge_port *p = dev->br_port;
struct net_bridge *br; struct net_bridge *br;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
/* not a port of a bridge */ /* not a port of a bridge */

View File

@ -142,7 +142,7 @@ int br_stp_rcv(struct sk_buff *skb, struct net_device *dev,
struct net_bridge *br; struct net_bridge *br;
const unsigned char *buf; const unsigned char *buf;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto err; goto err;
if (!p) if (!p)

View File

@ -599,7 +599,7 @@ static int can_rcv(struct sk_buff *skb, struct net_device *dev,
struct dev_rcv_lists *d; struct dev_rcv_lists *d;
int matches; int matches;
if (dev->type != ARPHRD_CAN || dev->nd_net != &init_net) { if (dev->type != ARPHRD_CAN || dev_net(dev) != &init_net) {
kfree_skb(skb); kfree_skb(skb);
return 0; return 0;
} }
@ -710,7 +710,7 @@ static int can_notifier(struct notifier_block *nb, unsigned long msg,
struct net_device *dev = (struct net_device *)data; struct net_device *dev = (struct net_device *)data;
struct dev_rcv_lists *d; struct dev_rcv_lists *d;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (dev->type != ARPHRD_CAN) if (dev->type != ARPHRD_CAN)

View File

@ -1285,7 +1285,7 @@ static int bcm_notifier(struct notifier_block *nb, unsigned long msg,
struct bcm_op *op; struct bcm_op *op;
int notify_enodev = 0; int notify_enodev = 0;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (dev->type != ARPHRD_CAN) if (dev->type != ARPHRD_CAN)

View File

@ -210,7 +210,7 @@ static int raw_notifier(struct notifier_block *nb,
struct raw_sock *ro = container_of(nb, struct raw_sock, notifier); struct raw_sock *ro = container_of(nb, struct raw_sock, notifier);
struct sock *sk = &ro->sk; struct sock *sk = &ro->sk;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (dev->type != ARPHRD_CAN) if (dev->type != ARPHRD_CAN)

View File

@ -216,7 +216,7 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex)
/* Device list insertion */ /* Device list insertion */
static int list_netdevice(struct net_device *dev) static int list_netdevice(struct net_device *dev)
{ {
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
ASSERT_RTNL(); ASSERT_RTNL();
@ -852,8 +852,8 @@ int dev_alloc_name(struct net_device *dev, const char *name)
struct net *net; struct net *net;
int ret; int ret;
BUG_ON(!dev->nd_net); BUG_ON(!dev_net(dev));
net = dev->nd_net; net = dev_net(dev);
ret = __dev_alloc_name(net, name, buf); ret = __dev_alloc_name(net, name, buf);
if (ret >= 0) if (ret >= 0)
strlcpy(dev->name, buf, IFNAMSIZ); strlcpy(dev->name, buf, IFNAMSIZ);
@ -877,9 +877,9 @@ int dev_change_name(struct net_device *dev, char *newname)
struct net *net; struct net *net;
ASSERT_RTNL(); ASSERT_RTNL();
BUG_ON(!dev->nd_net); BUG_ON(!dev_net(dev));
net = dev->nd_net; net = dev_net(dev);
if (dev->flags & IFF_UP) if (dev->flags & IFF_UP)
return -EBUSY; return -EBUSY;
@ -2615,7 +2615,7 @@ static int ptype_seq_show(struct seq_file *seq, void *v)
if (v == SEQ_START_TOKEN) if (v == SEQ_START_TOKEN)
seq_puts(seq, "Type Device Function\n"); seq_puts(seq, "Type Device Function\n");
else if (pt->dev == NULL || pt->dev->nd_net == seq_file_net(seq)) { else if (pt->dev == NULL || dev_net(pt->dev) == seq_file_net(seq)) {
if (pt->type == htons(ETH_P_ALL)) if (pt->type == htons(ETH_P_ALL))
seq_puts(seq, "ALL "); seq_puts(seq, "ALL ");
else else
@ -3689,8 +3689,8 @@ int register_netdevice(struct net_device *dev)
/* When net_device's are persistent, this will be fatal. */ /* When net_device's are persistent, this will be fatal. */
BUG_ON(dev->reg_state != NETREG_UNINITIALIZED); BUG_ON(dev->reg_state != NETREG_UNINITIALIZED);
BUG_ON(!dev->nd_net); BUG_ON(!dev_net(dev));
net = dev->nd_net; net = dev_net(dev);
spin_lock_init(&dev->queue_lock); spin_lock_init(&dev->queue_lock);
spin_lock_init(&dev->_xmit_lock); spin_lock_init(&dev->_xmit_lock);
@ -4011,7 +4011,7 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
dev = (struct net_device *) dev = (struct net_device *)
(((long)p + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST); (((long)p + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST);
dev->padded = (char *)dev - (char *)p; dev->padded = (char *)dev - (char *)p;
dev->nd_net = &init_net; dev_net_set(dev, &init_net);
if (sizeof_priv) { if (sizeof_priv) {
dev->priv = ((char *)dev + dev->priv = ((char *)dev +
@ -4136,7 +4136,7 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
/* Get out if there is nothing todo */ /* Get out if there is nothing todo */
err = 0; err = 0;
if (dev->nd_net == net) if (dev_net(dev) == net)
goto out; goto out;
/* Pick the destination device name, and ensure /* Pick the destination device name, and ensure
@ -4187,7 +4187,7 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
dev_addr_discard(dev); dev_addr_discard(dev);
/* Actually switch the network namespace */ /* Actually switch the network namespace */
dev->nd_net = net; dev_net_set(dev, net);
/* Assign the new device name */ /* Assign the new device name */
if (destname != dev->name) if (destname != dev->name)

View File

@ -279,7 +279,7 @@ static inline void dst_ifdown(struct dst_entry *dst, struct net_device *dev,
if (!unregister) { if (!unregister) {
dst->input = dst->output = dst_discard; dst->input = dst->output = dst_discard;
} else { } else {
dst->dev = dst->dev->nd_net->loopback_dev; dst->dev = dev_net(dst->dev)->loopback_dev;
dev_hold(dst->dev); dev_hold(dst->dev);
dev_put(dev); dev_put(dev);
if (dst->neighbour && dst->neighbour->dev == dev) { if (dst->neighbour && dst->neighbour->dev == dev) {

View File

@ -618,7 +618,7 @@ static int fib_rules_event(struct notifier_block *this, unsigned long event,
void *ptr) void *ptr)
{ {
struct net_device *dev = ptr; struct net_device *dev = ptr;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
struct fib_rules_ops *ops; struct fib_rules_ops *ops;
ASSERT_RTNL(); ASSERT_RTNL();

View File

@ -388,7 +388,7 @@ struct neighbour *neigh_lookup_nodev(struct neigh_table *tbl, struct net *net,
hash_val = tbl->hash(pkey, NULL); hash_val = tbl->hash(pkey, NULL);
for (n = tbl->hash_buckets[hash_val & tbl->hash_mask]; n; n = n->next) { for (n = tbl->hash_buckets[hash_val & tbl->hash_mask]; n; n = n->next) {
if (!memcmp(n->primary_key, pkey, key_len) && if (!memcmp(n->primary_key, pkey, key_len) &&
(net == n->dev->nd_net)) { dev_net(n->dev) == net) {
neigh_hold(n); neigh_hold(n);
NEIGH_CACHE_STAT_INC(tbl, hits); NEIGH_CACHE_STAT_INC(tbl, hits);
break; break;
@ -1298,7 +1298,7 @@ struct neigh_parms *neigh_parms_alloc(struct net_device *dev,
struct neigh_parms *p, *ref; struct neigh_parms *p, *ref;
struct net *net; struct net *net;
net = dev->nd_net; net = dev_net(dev);
ref = lookup_neigh_params(tbl, net, 0); ref = lookup_neigh_params(tbl, net, 0);
if (!ref) if (!ref)
return NULL; return NULL;
@ -2050,7 +2050,7 @@ static int neigh_dump_table(struct neigh_table *tbl, struct sk_buff *skb,
s_idx = 0; s_idx = 0;
for (n = tbl->hash_buckets[h], idx = 0; n; n = n->next) { for (n = tbl->hash_buckets[h], idx = 0; n; n = n->next) {
int lidx; int lidx;
if (n->dev->nd_net != net) if (dev_net(n->dev) != net)
continue; continue;
lidx = idx++; lidx = idx++;
if (lidx < s_idx) if (lidx < s_idx)
@ -2155,7 +2155,7 @@ static struct neighbour *neigh_get_first(struct seq_file *seq)
n = tbl->hash_buckets[bucket]; n = tbl->hash_buckets[bucket];
while (n) { while (n) {
if (n->dev->nd_net != net) if (dev_net(n->dev) != net)
goto next; goto next;
if (state->neigh_sub_iter) { if (state->neigh_sub_iter) {
loff_t fakep = 0; loff_t fakep = 0;
@ -2198,7 +2198,7 @@ static struct neighbour *neigh_get_next(struct seq_file *seq,
while (1) { while (1) {
while (n) { while (n) {
if (n->dev->nd_net != net) if (dev_net(n->dev) != net)
goto next; goto next;
if (state->neigh_sub_iter) { if (state->neigh_sub_iter) {
void *v = state->neigh_sub_iter(state, n, pos); void *v = state->neigh_sub_iter(state, n, pos);
@ -2482,7 +2482,7 @@ static inline size_t neigh_nlmsg_size(void)
static void __neigh_notify(struct neighbour *n, int type, int flags) static void __neigh_notify(struct neighbour *n, int type, int flags)
{ {
struct net *net = n->dev->nd_net; struct net *net = dev_net(n->dev);
struct sk_buff *skb; struct sk_buff *skb;
int err = -ENOBUFS; int err = -ENOBUFS;

View File

@ -1874,7 +1874,7 @@ static int pktgen_device_event(struct notifier_block *unused,
{ {
struct net_device *dev = ptr; struct net_device *dev = ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
/* It is OK that we do not hold the group lock right now, /* It is OK that we do not hold the group lock right now,

View File

@ -972,7 +972,7 @@ struct net_device *rtnl_create_link(struct net *net, char *ifname,
goto err_free; goto err_free;
} }
dev->nd_net = net; dev_net_set(dev, net);
dev->rtnl_link_ops = ops; dev->rtnl_link_ops = ops;
if (tb[IFLA_MTU]) if (tb[IFLA_MTU])
@ -1198,7 +1198,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) void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change)
{ {
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
struct sk_buff *skb; struct sk_buff *skb;
int err = -ENOBUFS; int err = -ENOBUFS;

View File

@ -2089,7 +2089,7 @@ static int dn_device_event(struct notifier_block *this, unsigned long event,
{ {
struct net_device *dev = (struct net_device *)ptr; struct net_device *dev = (struct net_device *)ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
switch(event) { switch(event) {

View File

@ -580,7 +580,7 @@ int dn_route_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type
struct dn_dev *dn = (struct dn_dev *)dev->dn_ptr; struct dn_dev *dn = (struct dn_dev *)dev->dn_ptr;
unsigned char padlen = 0; unsigned char padlen = 0;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto dump_it; goto dump_it;
if (dn == NULL) if (dn == NULL)

View File

@ -1064,7 +1064,7 @@ static int econet_rcv(struct sk_buff *skb, struct net_device *dev, struct packet
struct sock *sk; struct sock *sk;
struct ec_device *edev = dev->ec_ptr; struct ec_device *edev = dev->ec_ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto drop; goto drop;
if (skb->pkt_type == PACKET_OTHERHOST) if (skb->pkt_type == PACKET_OTHERHOST)
@ -1121,7 +1121,7 @@ static int econet_notifier(struct notifier_block *this, unsigned long msg, void
struct net_device *dev = (struct net_device *)data; struct net_device *dev = (struct net_device *)data;
struct ec_device *edev; struct ec_device *edev;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
switch (msg) { switch (msg) {

View File

@ -242,7 +242,7 @@ static int arp_constructor(struct neighbour *neigh)
return -EINVAL; return -EINVAL;
} }
neigh->type = inet_addr_type(dev->nd_net, addr); neigh->type = inet_addr_type(dev_net(dev), addr);
parms = in_dev->arp_parms; parms = in_dev->arp_parms;
__neigh_parms_put(neigh->parms); __neigh_parms_put(neigh->parms);
@ -341,14 +341,14 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
switch (IN_DEV_ARP_ANNOUNCE(in_dev)) { switch (IN_DEV_ARP_ANNOUNCE(in_dev)) {
default: default:
case 0: /* By default announce any local IP */ case 0: /* By default announce any local IP */
if (skb && inet_addr_type(dev->nd_net, ip_hdr(skb)->saddr) == RTN_LOCAL) if (skb && inet_addr_type(dev_net(dev), ip_hdr(skb)->saddr) == RTN_LOCAL)
saddr = ip_hdr(skb)->saddr; saddr = ip_hdr(skb)->saddr;
break; break;
case 1: /* Restrict announcements of saddr in same subnet */ case 1: /* Restrict announcements of saddr in same subnet */
if (!skb) if (!skb)
break; break;
saddr = ip_hdr(skb)->saddr; saddr = ip_hdr(skb)->saddr;
if (inet_addr_type(dev->nd_net, saddr) == RTN_LOCAL) { if (inet_addr_type(dev_net(dev), saddr) == RTN_LOCAL) {
/* saddr should be known to target */ /* saddr should be known to target */
if (inet_addr_onlink(in_dev, target, saddr)) if (inet_addr_onlink(in_dev, target, saddr))
break; break;
@ -424,7 +424,7 @@ static int arp_filter(__be32 sip, __be32 tip, struct net_device *dev)
int flag = 0; int flag = 0;
/*unsigned long now; */ /*unsigned long now; */
if (ip_route_output_key(dev->nd_net, &rt, &fl) < 0) if (ip_route_output_key(dev_net(dev), &rt, &fl) < 0)
return 1; return 1;
if (rt->u.dst.dev != dev) { if (rt->u.dst.dev != dev) {
NET_INC_STATS_BH(LINUX_MIB_ARPFILTER); NET_INC_STATS_BH(LINUX_MIB_ARPFILTER);
@ -477,7 +477,7 @@ int arp_find(unsigned char *haddr, struct sk_buff *skb)
paddr = skb->rtable->rt_gateway; paddr = skb->rtable->rt_gateway;
if (arp_set_predefined(inet_addr_type(dev->nd_net, paddr), haddr, paddr, dev)) if (arp_set_predefined(inet_addr_type(dev_net(dev), paddr), haddr, paddr, dev))
return 0; return 0;
n = __neigh_lookup(&arp_tbl, &paddr, dev, 1); n = __neigh_lookup(&arp_tbl, &paddr, dev, 1);
@ -709,7 +709,7 @@ static int arp_process(struct sk_buff *skb)
u16 dev_type = dev->type; u16 dev_type = dev->type;
int addr_type; int addr_type;
struct neighbour *n; struct neighbour *n;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
/* arp_rcv below verifies the ARP header and verifies the device /* arp_rcv below verifies the ARP header and verifies the device
* is ARP'able. * is ARP'able.
@ -858,7 +858,7 @@ static int arp_process(struct sk_buff *skb)
n = __neigh_lookup(&arp_tbl, &sip, dev, 0); n = __neigh_lookup(&arp_tbl, &sip, dev, 0);
if (IPV4_DEVCONF_ALL(dev->nd_net, ARP_ACCEPT)) { if (IPV4_DEVCONF_ALL(dev_net(dev), ARP_ACCEPT)) {
/* Unsolicited ARP is not accepted by default. /* Unsolicited ARP is not accepted by default.
It is possible, that this option should be enabled for some It is possible, that this option should be enabled for some
devices (strip is candidate) devices (strip is candidate)

View File

@ -165,7 +165,7 @@ static struct in_device *inetdev_init(struct net_device *dev)
if (!in_dev) if (!in_dev)
goto out; goto out;
INIT_RCU_HEAD(&in_dev->rcu_head); INIT_RCU_HEAD(&in_dev->rcu_head);
memcpy(&in_dev->cnf, dev->nd_net->ipv4.devconf_dflt, memcpy(&in_dev->cnf, dev_net(dev)->ipv4.devconf_dflt,
sizeof(in_dev->cnf)); sizeof(in_dev->cnf));
in_dev->cnf.sysctl = NULL; in_dev->cnf.sysctl = NULL;
in_dev->dev = dev; in_dev->dev = dev;
@ -872,7 +872,7 @@ __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope)
{ {
__be32 addr = 0; __be32 addr = 0;
struct in_device *in_dev; struct in_device *in_dev;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
rcu_read_lock(); rcu_read_lock();
in_dev = __in_dev_get_rcu(dev); in_dev = __in_dev_get_rcu(dev);
@ -974,7 +974,7 @@ __be32 inet_confirm_addr(struct in_device *in_dev,
if (scope != RT_SCOPE_LINK) if (scope != RT_SCOPE_LINK)
return confirm_addr_indev(in_dev, dst, local, scope); return confirm_addr_indev(in_dev, dst, local, scope);
net = in_dev->dev->nd_net; net = dev_net(in_dev->dev);
read_lock(&dev_base_lock); read_lock(&dev_base_lock);
rcu_read_lock(); rcu_read_lock();
for_each_netdev(net, dev) { for_each_netdev(net, dev) {
@ -1203,7 +1203,7 @@ static void rtmsg_ifa(int event, struct in_ifaddr* ifa, struct nlmsghdr *nlh,
int err = -ENOBUFS; int err = -ENOBUFS;
struct net *net; struct net *net;
net = ifa->ifa_dev->dev->nd_net; net = dev_net(ifa->ifa_dev->dev);
skb = nlmsg_new(inet_nlmsg_size(), GFP_KERNEL); skb = nlmsg_new(inet_nlmsg_size(), GFP_KERNEL);
if (skb == NULL) if (skb == NULL)
goto errout; goto errout;
@ -1517,7 +1517,7 @@ static void devinet_sysctl_register(struct in_device *idev)
{ {
neigh_sysctl_register(idev->dev, idev->arp_parms, NET_IPV4, neigh_sysctl_register(idev->dev, idev->arp_parms, NET_IPV4,
NET_IPV4_NEIGH, "ipv4", NULL, NULL); NET_IPV4_NEIGH, "ipv4", NULL, NULL);
__devinet_sysctl_register(idev->dev->nd_net, idev->dev->name, __devinet_sysctl_register(dev_net(idev->dev), idev->dev->name,
idev->dev->ifindex, &idev->cnf); idev->dev->ifindex, &idev->cnf);
} }

View File

@ -257,7 +257,7 @@ int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif,
if (in_dev == NULL) if (in_dev == NULL)
goto e_inval; goto e_inval;
net = dev->nd_net; net = dev_net(dev);
if (fib_lookup(net, &fl, &res)) if (fib_lookup(net, &fl, &res))
goto last_resort; goto last_resort;
if (res.type != RTN_UNICAST) if (res.type != RTN_UNICAST)
@ -674,7 +674,7 @@ out:
static void fib_magic(int cmd, int type, __be32 dst, int dst_len, struct in_ifaddr *ifa) static void fib_magic(int cmd, int type, __be32 dst, int dst_len, struct in_ifaddr *ifa)
{ {
struct net *net = ifa->ifa_dev->dev->nd_net; struct net *net = dev_net(ifa->ifa_dev->dev);
struct fib_table *tb; struct fib_table *tb;
struct fib_config cfg = { struct fib_config cfg = {
.fc_protocol = RTPROT_KERNEL, .fc_protocol = RTPROT_KERNEL,
@ -801,15 +801,15 @@ static void fib_del_ifaddr(struct in_ifaddr *ifa)
fib_magic(RTM_DELROUTE, RTN_LOCAL, ifa->ifa_local, 32, prim); fib_magic(RTM_DELROUTE, RTN_LOCAL, ifa->ifa_local, 32, prim);
/* Check, that this local address finally disappeared. */ /* Check, that this local address finally disappeared. */
if (inet_addr_type(dev->nd_net, ifa->ifa_local) != RTN_LOCAL) { if (inet_addr_type(dev_net(dev), ifa->ifa_local) != RTN_LOCAL) {
/* And the last, but not the least thing. /* And the last, but not the least thing.
We must flush stray FIB entries. We must flush stray FIB entries.
First of all, we scan fib_info list searching First of all, we scan fib_info list searching
for stray nexthop entries, then ignite fib_flush. for stray nexthop entries, then ignite fib_flush.
*/ */
if (fib_sync_down_addr(dev->nd_net, ifa->ifa_local)) if (fib_sync_down_addr(dev_net(dev), ifa->ifa_local))
fib_flush(dev->nd_net); fib_flush(dev_net(dev));
} }
} }
#undef LOCAL_OK #undef LOCAL_OK
@ -899,7 +899,7 @@ static void nl_fib_lookup_exit(struct net *net)
static void fib_disable_ip(struct net_device *dev, int force) static void fib_disable_ip(struct net_device *dev, int force)
{ {
if (fib_sync_down_dev(dev, force)) if (fib_sync_down_dev(dev, force))
fib_flush(dev->nd_net); fib_flush(dev_net(dev));
rt_cache_flush(0); rt_cache_flush(0);
arp_ifdown(dev); arp_ifdown(dev);
} }

View File

@ -351,7 +351,7 @@ static void icmp_push_reply(struct icmp_bxm *icmp_param,
struct sock *sk; struct sock *sk;
struct sk_buff *skb; struct sk_buff *skb;
sk = icmp_sk(rt->u.dst.dev->nd_net); sk = icmp_sk(dev_net(rt->u.dst.dev));
if (ip_append_data(sk, icmp_glue_bits, icmp_param, if (ip_append_data(sk, icmp_glue_bits, icmp_param,
icmp_param->data_len+icmp_param->head_len, icmp_param->data_len+icmp_param->head_len,
icmp_param->head_len, icmp_param->head_len,
@ -382,7 +382,7 @@ static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb)
{ {
struct ipcm_cookie ipc; struct ipcm_cookie ipc;
struct rtable *rt = skb->rtable; struct rtable *rt = skb->rtable;
struct net *net = rt->u.dst.dev->nd_net; struct net *net = dev_net(rt->u.dst.dev);
struct sock *sk = icmp_sk(net); struct sock *sk = icmp_sk(net);
struct inet_sock *inet = inet_sk(sk); struct inet_sock *inet = inet_sk(sk);
__be32 daddr; __be32 daddr;
@ -447,7 +447,7 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info)
if (!rt) if (!rt)
goto out; goto out;
net = rt->u.dst.dev->nd_net; net = dev_net(rt->u.dst.dev);
sk = icmp_sk(net); sk = icmp_sk(net);
/* /*
@ -677,7 +677,7 @@ static void icmp_unreach(struct sk_buff *skb)
u32 info = 0; u32 info = 0;
struct net *net; struct net *net;
net = skb->dst->dev->nd_net; net = dev_net(skb->dst->dev);
/* /*
* Incomplete header ? * Incomplete header ?

View File

@ -130,12 +130,12 @@
*/ */
#define IGMP_V1_SEEN(in_dev) \ #define IGMP_V1_SEEN(in_dev) \
(IPV4_DEVCONF_ALL(in_dev->dev->nd_net, FORCE_IGMP_VERSION) == 1 || \ (IPV4_DEVCONF_ALL(dev_net(in_dev->dev), FORCE_IGMP_VERSION) == 1 || \
IN_DEV_CONF_GET((in_dev), FORCE_IGMP_VERSION) == 1 || \ IN_DEV_CONF_GET((in_dev), FORCE_IGMP_VERSION) == 1 || \
((in_dev)->mr_v1_seen && \ ((in_dev)->mr_v1_seen && \
time_before(jiffies, (in_dev)->mr_v1_seen))) time_before(jiffies, (in_dev)->mr_v1_seen)))
#define IGMP_V2_SEEN(in_dev) \ #define IGMP_V2_SEEN(in_dev) \
(IPV4_DEVCONF_ALL(in_dev->dev->nd_net, FORCE_IGMP_VERSION) == 2 || \ (IPV4_DEVCONF_ALL(dev_net(in_dev->dev), FORCE_IGMP_VERSION) == 2 || \
IN_DEV_CONF_GET((in_dev), FORCE_IGMP_VERSION) == 2 || \ IN_DEV_CONF_GET((in_dev), FORCE_IGMP_VERSION) == 2 || \
((in_dev)->mr_v2_seen && \ ((in_dev)->mr_v2_seen && \
time_before(jiffies, (in_dev)->mr_v2_seen))) time_before(jiffies, (in_dev)->mr_v2_seen)))
@ -1198,7 +1198,7 @@ void ip_mc_inc_group(struct in_device *in_dev, __be32 addr)
ASSERT_RTNL(); ASSERT_RTNL();
if (in_dev->dev->nd_net != &init_net) if (dev_net(in_dev->dev) != &init_net)
return; return;
for (im=in_dev->mc_list; im; im=im->next) { for (im=in_dev->mc_list; im; im=im->next) {
@ -1280,7 +1280,7 @@ void ip_mc_dec_group(struct in_device *in_dev, __be32 addr)
ASSERT_RTNL(); ASSERT_RTNL();
if (in_dev->dev->nd_net != &init_net) if (dev_net(in_dev->dev) != &init_net)
return; return;
for (ip=&in_dev->mc_list; (i=*ip)!=NULL; ip=&i->next) { for (ip=&in_dev->mc_list; (i=*ip)!=NULL; ip=&i->next) {
@ -1310,7 +1310,7 @@ void ip_mc_down(struct in_device *in_dev)
ASSERT_RTNL(); ASSERT_RTNL();
if (in_dev->dev->nd_net != &init_net) if (dev_net(in_dev->dev) != &init_net)
return; return;
for (i=in_dev->mc_list; i; i=i->next) for (i=in_dev->mc_list; i; i=i->next)
@ -1333,7 +1333,7 @@ void ip_mc_init_dev(struct in_device *in_dev)
{ {
ASSERT_RTNL(); ASSERT_RTNL();
if (in_dev->dev->nd_net != &init_net) if (dev_net(in_dev->dev) != &init_net)
return; return;
in_dev->mc_tomb = NULL; in_dev->mc_tomb = NULL;
@ -1359,7 +1359,7 @@ void ip_mc_up(struct in_device *in_dev)
ASSERT_RTNL(); ASSERT_RTNL();
if (in_dev->dev->nd_net != &init_net) if (dev_net(in_dev->dev) != &init_net)
return; return;
ip_mc_inc_group(in_dev, IGMP_ALL_HOSTS); ip_mc_inc_group(in_dev, IGMP_ALL_HOSTS);
@ -1378,7 +1378,7 @@ void ip_mc_destroy_dev(struct in_device *in_dev)
ASSERT_RTNL(); ASSERT_RTNL();
if (in_dev->dev->nd_net != &init_net) if (dev_net(in_dev->dev) != &init_net)
return; return;
/* Deactivate timers */ /* Deactivate timers */

View File

@ -571,7 +571,7 @@ int ip_defrag(struct sk_buff *skb, u32 user)
IP_INC_STATS_BH(IPSTATS_MIB_REASMREQDS); IP_INC_STATS_BH(IPSTATS_MIB_REASMREQDS);
net = skb->dev ? skb->dev->nd_net : skb->dst->dev->nd_net; net = skb->dev ? dev_net(skb->dev) : dev_net(skb->dst->dev);
/* Start by cleaning up the memory. */ /* Start by cleaning up the memory. */
if (atomic_read(&net->ipv4.frags.mem) > net->ipv4.frags.high_thresh) if (atomic_read(&net->ipv4.frags.mem) > net->ipv4.frags.high_thresh)
ip_evictor(net); ip_evictor(net);

View File

@ -1190,7 +1190,7 @@ static int ipgre_close(struct net_device *dev)
struct ip_tunnel *t = netdev_priv(dev); struct ip_tunnel *t = netdev_priv(dev);
if (ipv4_is_multicast(t->parms.iph.daddr) && t->mlink) { if (ipv4_is_multicast(t->parms.iph.daddr) && t->mlink) {
struct in_device *in_dev; struct in_device *in_dev;
in_dev = inetdev_by_index(dev->nd_net, t->mlink); in_dev = inetdev_by_index(dev_net(dev), t->mlink);
if (in_dev) { if (in_dev) {
ip_mc_dec_group(in_dev, t->parms.iph.daddr); ip_mc_dec_group(in_dev, t->parms.iph.daddr);
in_dev_put(in_dev); in_dev_put(in_dev);

View File

@ -172,7 +172,7 @@ int ip_call_ra_chain(struct sk_buff *skb)
if (sk && inet_sk(sk)->num == protocol && if (sk && inet_sk(sk)->num == protocol &&
(!sk->sk_bound_dev_if || (!sk->sk_bound_dev_if ||
sk->sk_bound_dev_if == dev->ifindex) && sk->sk_bound_dev_if == dev->ifindex) &&
sk->sk_net == dev->nd_net) { sk->sk_net == dev_net(dev)) {
if (ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)) { if (ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)) {
if (ip_defrag(skb, IP_DEFRAG_CALL_RA_CHAIN)) { if (ip_defrag(skb, IP_DEFRAG_CALL_RA_CHAIN)) {
read_unlock(&ip_ra_lock); read_unlock(&ip_ra_lock);
@ -199,7 +199,7 @@ int ip_call_ra_chain(struct sk_buff *skb)
static int ip_local_deliver_finish(struct sk_buff *skb) static int ip_local_deliver_finish(struct sk_buff *skb)
{ {
struct net *net = skb->dev->nd_net; struct net *net = dev_net(skb->dev);
__skb_pull(skb, ip_hdrlen(skb)); __skb_pull(skb, ip_hdrlen(skb));
@ -291,7 +291,7 @@ static inline int ip_rcv_options(struct sk_buff *skb)
opt = &(IPCB(skb)->opt); opt = &(IPCB(skb)->opt);
opt->optlen = iph->ihl*4 - sizeof(struct iphdr); opt->optlen = iph->ihl*4 - sizeof(struct iphdr);
if (ip_options_compile(dev->nd_net, opt, skb)) { if (ip_options_compile(dev_net(dev), opt, skb)) {
IP_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); IP_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS);
goto drop; goto drop;
} }

View File

@ -145,7 +145,7 @@ int ip_options_echo(struct ip_options * dopt, struct sk_buff * skb)
__be32 addr; __be32 addr;
memcpy(&addr, sptr+soffset-1, 4); memcpy(&addr, sptr+soffset-1, 4);
if (inet_addr_type(skb->dst->dev->nd_net, addr) != RTN_LOCAL) { if (inet_addr_type(dev_net(skb->dst->dev), addr) != RTN_LOCAL) {
dopt->ts_needtime = 1; dopt->ts_needtime = 1;
soffset += 8; soffset += 8;
} }

View File

@ -434,7 +434,7 @@ ic_rarp_recv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt
unsigned char *sha, *tha; /* s for "source", t for "target" */ unsigned char *sha, *tha; /* s for "source", t for "target" */
struct ic_device *d; struct ic_device *d;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto drop; goto drop;
if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
@ -854,7 +854,7 @@ static int __init ic_bootp_recv(struct sk_buff *skb, struct net_device *dev, str
struct ic_device *d; struct ic_device *d;
int len, ext_len; int len, ext_len;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto drop; goto drop;
/* Perform verifications before taking the lock. */ /* Perform verifications before taking the lock. */

View File

@ -1089,7 +1089,7 @@ static int ipmr_device_event(struct notifier_block *this, unsigned long event, v
struct vif_device *v; struct vif_device *v;
int ct; int ct;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (event != NETDEV_UNREGISTER) if (event != NETDEV_UNREGISTER)

View File

@ -481,7 +481,7 @@ ipq_rcv_dev_event(struct notifier_block *this,
{ {
struct net_device *dev = ptr; struct net_device *dev = ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
/* Drop any packets associated with the downed device */ /* Drop any packets associated with the downed device */

View File

@ -120,7 +120,7 @@ static int masq_device_event(struct notifier_block *this,
{ {
const struct net_device *dev = ptr; const struct net_device *dev = ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (event == NETDEV_DOWN) { if (event == NETDEV_DOWN) {

View File

@ -168,7 +168,7 @@ static int raw_v4_input(struct sk_buff *skb, struct iphdr *iph, int hash)
if (hlist_empty(head)) if (hlist_empty(head))
goto out; goto out;
net = skb->dev->nd_net; net = dev_net(skb->dev);
sk = __raw_v4_lookup(net, __sk_head(head), iph->protocol, sk = __raw_v4_lookup(net, __sk_head(head), iph->protocol,
iph->saddr, iph->daddr, iph->saddr, iph->daddr,
skb->dev->ifindex); skb->dev->ifindex);
@ -276,7 +276,7 @@ void raw_icmp_error(struct sk_buff *skb, int protocol, u32 info)
raw_sk = sk_head(&raw_v4_hashinfo.ht[hash]); raw_sk = sk_head(&raw_v4_hashinfo.ht[hash]);
if (raw_sk != NULL) { if (raw_sk != NULL) {
iph = (struct iphdr *)skb->data; iph = (struct iphdr *)skb->data;
net = skb->dev->nd_net; net = dev_net(skb->dev);
while ((raw_sk = __raw_v4_lookup(net, raw_sk, protocol, while ((raw_sk = __raw_v4_lookup(net, raw_sk, protocol,
iph->daddr, iph->saddr, iph->daddr, iph->saddr,

View File

@ -284,7 +284,7 @@ static struct rtable *rt_cache_get_first(struct rt_cache_iter_state *st)
rcu_read_lock_bh(); rcu_read_lock_bh();
r = rcu_dereference(rt_hash_table[st->bucket].chain); r = rcu_dereference(rt_hash_table[st->bucket].chain);
while (r) { while (r) {
if (r->u.dst.dev->nd_net == st->p.net && if (dev_net(r->u.dst.dev) == st->p.net &&
r->rt_genid == st->genid) r->rt_genid == st->genid)
return r; return r;
r = rcu_dereference(r->u.dst.rt_next); r = rcu_dereference(r->u.dst.rt_next);
@ -312,7 +312,7 @@ static struct rtable *rt_cache_get_next(struct rt_cache_iter_state *st,
struct rtable *r) struct rtable *r)
{ {
while ((r = __rt_cache_get_next(st, r)) != NULL) { while ((r = __rt_cache_get_next(st, r)) != NULL) {
if (r->u.dst.dev->nd_net != st->p.net) if (dev_net(r->u.dst.dev) != st->p.net)
continue; continue;
if (r->rt_genid == st->genid) if (r->rt_genid == st->genid)
break; break;
@ -680,7 +680,7 @@ static inline int compare_keys(struct flowi *fl1, struct flowi *fl2)
static inline int compare_netns(struct rtable *rt1, struct rtable *rt2) static inline int compare_netns(struct rtable *rt1, struct rtable *rt2)
{ {
return rt1->u.dst.dev->nd_net == rt2->u.dst.dev->nd_net; return dev_net(rt1->u.dst.dev) == dev_net(rt2->u.dst.dev);
} }
/* /*
@ -1164,7 +1164,7 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
if (!in_dev) if (!in_dev)
return; return;
net = dev->nd_net; net = dev_net(dev);
if (new_gw == old_gw || !IN_DEV_RX_REDIRECTS(in_dev) if (new_gw == old_gw || !IN_DEV_RX_REDIRECTS(in_dev)
|| ipv4_is_multicast(new_gw) || ipv4_is_lbcast(new_gw) || ipv4_is_multicast(new_gw) || ipv4_is_lbcast(new_gw)
|| ipv4_is_zeronet(new_gw)) || ipv4_is_zeronet(new_gw))
@ -1195,7 +1195,7 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
rth->fl.oif != ikeys[k] || rth->fl.oif != ikeys[k] ||
rth->fl.iif != 0 || rth->fl.iif != 0 ||
rth->rt_genid != atomic_read(&rt_genid) || rth->rt_genid != atomic_read(&rt_genid) ||
rth->u.dst.dev->nd_net != net) { dev_net(rth->u.dst.dev) != net) {
rthp = &rth->u.dst.rt_next; rthp = &rth->u.dst.rt_next;
continue; continue;
} }
@ -1454,7 +1454,7 @@ unsigned short ip_rt_frag_needed(struct net *net, struct iphdr *iph,
rth->rt_src == iph->saddr && rth->rt_src == iph->saddr &&
rth->fl.iif == 0 && rth->fl.iif == 0 &&
!(dst_metric_locked(&rth->u.dst, RTAX_MTU)) && !(dst_metric_locked(&rth->u.dst, RTAX_MTU)) &&
rth->u.dst.dev->nd_net == net && dev_net(rth->u.dst.dev) == net &&
rth->rt_genid == atomic_read(&rt_genid)) { rth->rt_genid == atomic_read(&rt_genid)) {
unsigned short mtu = new_mtu; unsigned short mtu = new_mtu;
@ -1530,9 +1530,9 @@ static void ipv4_dst_ifdown(struct dst_entry *dst, struct net_device *dev,
{ {
struct rtable *rt = (struct rtable *) dst; struct rtable *rt = (struct rtable *) dst;
struct in_device *idev = rt->idev; struct in_device *idev = rt->idev;
if (dev != dev->nd_net->loopback_dev && idev && idev->dev == dev) { if (dev != dev_net(dev)->loopback_dev && idev && idev->dev == dev) {
struct in_device *loopback_idev = struct in_device *loopback_idev =
in_dev_get(dev->nd_net->loopback_dev); in_dev_get(dev_net(dev)->loopback_dev);
if (loopback_idev) { if (loopback_idev) {
rt->idev = loopback_idev; rt->idev = loopback_idev;
in_dev_put(idev); in_dev_put(idev);
@ -1576,7 +1576,7 @@ void ip_rt_get_source(u8 *addr, struct rtable *rt)
if (rt->fl.iif == 0) if (rt->fl.iif == 0)
src = rt->rt_src; src = rt->rt_src;
else if (fib_lookup(rt->u.dst.dev->nd_net, &rt->fl, &res) == 0) { else if (fib_lookup(dev_net(rt->u.dst.dev), &rt->fl, &res) == 0) {
src = FIB_RES_PREFSRC(res); src = FIB_RES_PREFSRC(res);
fib_res_put(&res); fib_res_put(&res);
} else } else
@ -1900,7 +1900,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
__be32 spec_dst; __be32 spec_dst;
int err = -EINVAL; int err = -EINVAL;
int free_res = 0; int free_res = 0;
struct net * net = dev->nd_net; struct net * net = dev_net(dev);
/* IP on this device is disabled. */ /* IP on this device is disabled. */
@ -2071,7 +2071,7 @@ int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr,
int iif = dev->ifindex; int iif = dev->ifindex;
struct net *net; struct net *net;
net = dev->nd_net; net = dev_net(dev);
tos &= IPTOS_RT_MASK; tos &= IPTOS_RT_MASK;
hash = rt_hash(daddr, saddr, iif); hash = rt_hash(daddr, saddr, iif);
@ -2084,7 +2084,7 @@ int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr,
rth->fl.oif == 0 && rth->fl.oif == 0 &&
rth->fl.mark == skb->mark && rth->fl.mark == skb->mark &&
rth->fl.fl4_tos == tos && rth->fl.fl4_tos == tos &&
rth->u.dst.dev->nd_net == net && dev_net(rth->u.dst.dev) == net &&
rth->rt_genid == atomic_read(&rt_genid)) { rth->rt_genid == atomic_read(&rt_genid)) {
dst_use(&rth->u.dst, jiffies); dst_use(&rth->u.dst, jiffies);
RT_CACHE_STAT_INC(in_hit); RT_CACHE_STAT_INC(in_hit);
@ -2486,7 +2486,7 @@ int __ip_route_output_key(struct net *net, struct rtable **rp,
rth->fl.mark == flp->mark && rth->fl.mark == flp->mark &&
!((rth->fl.fl4_tos ^ flp->fl4_tos) & !((rth->fl.fl4_tos ^ flp->fl4_tos) &
(IPTOS_RT_MASK | RTO_ONLINK)) && (IPTOS_RT_MASK | RTO_ONLINK)) &&
rth->u.dst.dev->nd_net == net && dev_net(rth->u.dst.dev) == net &&
rth->rt_genid == atomic_read(&rt_genid)) { rth->rt_genid == atomic_read(&rt_genid)) {
dst_use(&rth->u.dst, jiffies); dst_use(&rth->u.dst, jiffies);
RT_CACHE_STAT_INC(out_hit); RT_CACHE_STAT_INC(out_hit);
@ -2795,7 +2795,7 @@ int ip_rt_dump(struct sk_buff *skb, struct netlink_callback *cb)
rcu_read_lock_bh(); rcu_read_lock_bh();
for (rt = rcu_dereference(rt_hash_table[h].chain), idx = 0; rt; for (rt = rcu_dereference(rt_hash_table[h].chain), idx = 0; rt;
rt = rcu_dereference(rt->u.dst.rt_next), idx++) { rt = rcu_dereference(rt->u.dst.rt_next), idx++) {
if (rt->u.dst.dev->nd_net != net || idx < s_idx) if (dev_net(rt->u.dst.dev) != net || idx < s_idx)
continue; continue;
if (rt->rt_genid != atomic_read(&rt_genid)) if (rt->rt_genid != atomic_read(&rt_genid))
continue; continue;

View File

@ -353,7 +353,7 @@ void tcp_v4_err(struct sk_buff *skb, u32 info)
return; return;
} }
sk = inet_lookup(skb->dev->nd_net, &tcp_hashinfo, iph->daddr, th->dest, sk = inet_lookup(dev_net(skb->dev), &tcp_hashinfo, iph->daddr, th->dest,
iph->saddr, th->source, inet_iif(skb)); iph->saddr, th->source, inet_iif(skb));
if (!sk) { if (!sk) {
ICMP_INC_STATS_BH(ICMP_MIB_INERRORS); ICMP_INC_STATS_BH(ICMP_MIB_INERRORS);
@ -1644,7 +1644,7 @@ int tcp_v4_rcv(struct sk_buff *skb)
TCP_SKB_CB(skb)->flags = iph->tos; TCP_SKB_CB(skb)->flags = iph->tos;
TCP_SKB_CB(skb)->sacked = 0; TCP_SKB_CB(skb)->sacked = 0;
sk = __inet_lookup(skb->dev->nd_net, &tcp_hashinfo, iph->saddr, sk = __inet_lookup(dev_net(skb->dev), &tcp_hashinfo, iph->saddr,
th->source, iph->daddr, th->dest, inet_iif(skb)); th->source, iph->daddr, th->dest, inet_iif(skb));
if (!sk) if (!sk)
goto no_tcp_socket; goto no_tcp_socket;
@ -1718,7 +1718,7 @@ do_time_wait:
} }
switch (tcp_timewait_state_process(inet_twsk(sk), skb, th)) { switch (tcp_timewait_state_process(inet_twsk(sk), skb, th)) {
case TCP_TW_SYN: { case TCP_TW_SYN: {
struct sock *sk2 = inet_lookup_listener(skb->dev->nd_net, struct sock *sk2 = inet_lookup_listener(dev_net(skb->dev),
&tcp_hashinfo, &tcp_hashinfo,
iph->daddr, th->dest, iph->daddr, th->dest,
inet_iif(skb)); inet_iif(skb));

View File

@ -357,7 +357,7 @@ void __udp4_lib_err(struct sk_buff *skb, u32 info, struct hlist_head udptable[])
int harderr; int harderr;
int err; int err;
sk = __udp4_lib_lookup(skb->dev->nd_net, iph->daddr, uh->dest, sk = __udp4_lib_lookup(dev_net(skb->dev), iph->daddr, uh->dest,
iph->saddr, uh->source, skb->dev->ifindex, udptable); iph->saddr, uh->source, skb->dev->ifindex, udptable);
if (sk == NULL) { if (sk == NULL) {
ICMP_INC_STATS_BH(ICMP_MIB_INERRORS); ICMP_INC_STATS_BH(ICMP_MIB_INERRORS);
@ -1181,7 +1181,7 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[],
if (rt->rt_flags & (RTCF_BROADCAST|RTCF_MULTICAST)) if (rt->rt_flags & (RTCF_BROADCAST|RTCF_MULTICAST))
return __udp4_lib_mcast_deliver(skb, uh, saddr, daddr, udptable); return __udp4_lib_mcast_deliver(skb, uh, saddr, daddr, udptable);
sk = __udp4_lib_lookup(skb->dev->nd_net, saddr, uh->source, daddr, sk = __udp4_lib_lookup(dev_net(skb->dev), saddr, uh->source, daddr,
uh->dest, inet_iif(skb), udptable); uh->dest, inet_iif(skb), udptable);
if (sk != NULL) { if (sk != NULL) {

View File

@ -221,7 +221,7 @@ static void xfrm4_dst_ifdown(struct dst_entry *dst, struct net_device *dev,
xdst = (struct xfrm_dst *)dst; xdst = (struct xfrm_dst *)dst;
if (xdst->u.rt.idev->dev == dev) { if (xdst->u.rt.idev->dev == dev) {
struct in_device *loopback_idev = struct in_device *loopback_idev =
in_dev_get(dev->nd_net->loopback_dev); in_dev_get(dev_net(dev)->loopback_dev);
BUG_ON(!loopback_idev); BUG_ON(!loopback_idev);
do { do {

View File

@ -335,7 +335,7 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
rwlock_init(&ndev->lock); rwlock_init(&ndev->lock);
ndev->dev = dev; ndev->dev = dev;
memcpy(&ndev->cnf, dev->nd_net->ipv6.devconf_dflt, sizeof(ndev->cnf)); memcpy(&ndev->cnf, dev_net(dev)->ipv6.devconf_dflt, sizeof(ndev->cnf));
ndev->cnf.mtu6 = dev->mtu; ndev->cnf.mtu6 = dev->mtu;
ndev->cnf.sysctl = NULL; ndev->cnf.sysctl = NULL;
ndev->nd_parms = neigh_parms_alloc(dev, &nd_tbl); ndev->nd_parms = neigh_parms_alloc(dev, &nd_tbl);
@ -561,7 +561,7 @@ ipv6_add_addr(struct inet6_dev *idev, const struct in6_addr *addr, int pfxlen,
write_lock(&addrconf_hash_lock); write_lock(&addrconf_hash_lock);
/* Ignore adding duplicate addresses on an interface */ /* Ignore adding duplicate addresses on an interface */
if (ipv6_chk_same_addr(idev->dev->nd_net, addr, idev->dev)) { if (ipv6_chk_same_addr(dev_net(idev->dev), addr, idev->dev)) {
ADBG(("ipv6_add_addr: already assigned\n")); ADBG(("ipv6_add_addr: already assigned\n"));
err = -EEXIST; err = -EEXIST;
goto out; goto out;
@ -751,7 +751,7 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
if ((ifp->flags & IFA_F_PERMANENT) && onlink < 1) { if ((ifp->flags & IFA_F_PERMANENT) && onlink < 1) {
struct in6_addr prefix; struct in6_addr prefix;
struct rt6_info *rt; struct rt6_info *rt;
struct net *net = ifp->idev->dev->nd_net; struct net *net = dev_net(ifp->idev->dev);
ipv6_addr_prefix(&prefix, &ifp->addr, ifp->prefix_len); ipv6_addr_prefix(&prefix, &ifp->addr, ifp->prefix_len);
rt = rt6_lookup(net, &prefix, NULL, ifp->idev->dev->ifindex, 1); rt = rt6_lookup(net, &prefix, NULL, ifp->idev->dev->ifindex, 1);
@ -1044,7 +1044,7 @@ int ipv6_dev_get_saddr(struct net_device *dst_dev,
{ {
struct ipv6_saddr_score scores[2], struct ipv6_saddr_score scores[2],
*score = &scores[0], *hiscore = &scores[1]; *score = &scores[0], *hiscore = &scores[1];
struct net *net = dst_dev->nd_net; struct net *net = dev_net(dst_dev);
struct ipv6_saddr_dst dst; struct ipv6_saddr_dst dst;
struct net_device *dev; struct net_device *dev;
int dst_type; int dst_type;
@ -1217,7 +1217,7 @@ int ipv6_chk_addr(struct net *net, struct in6_addr *addr,
read_lock_bh(&addrconf_hash_lock); read_lock_bh(&addrconf_hash_lock);
for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) { for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) {
if (ifp->idev->dev->nd_net != net) if (dev_net(ifp->idev->dev) != net)
continue; continue;
if (ipv6_addr_equal(&ifp->addr, addr) && if (ipv6_addr_equal(&ifp->addr, addr) &&
!(ifp->flags&IFA_F_TENTATIVE)) { !(ifp->flags&IFA_F_TENTATIVE)) {
@ -1239,7 +1239,7 @@ int ipv6_chk_same_addr(struct net *net, const struct in6_addr *addr,
u8 hash = ipv6_addr_hash(addr); u8 hash = ipv6_addr_hash(addr);
for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) { for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) {
if (ifp->idev->dev->nd_net != net) if (dev_net(ifp->idev->dev) != net)
continue; continue;
if (ipv6_addr_equal(&ifp->addr, addr)) { if (ipv6_addr_equal(&ifp->addr, addr)) {
if (dev == NULL || ifp->idev->dev == dev) if (dev == NULL || ifp->idev->dev == dev)
@ -1257,7 +1257,7 @@ struct inet6_ifaddr *ipv6_get_ifaddr(struct net *net, struct in6_addr *addr,
read_lock_bh(&addrconf_hash_lock); read_lock_bh(&addrconf_hash_lock);
for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) { for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) {
if (ifp->idev->dev->nd_net != net) if (dev_net(ifp->idev->dev) != net)
continue; continue;
if (ipv6_addr_equal(&ifp->addr, addr)) { if (ipv6_addr_equal(&ifp->addr, addr)) {
if (dev == NULL || ifp->idev->dev == dev || if (dev == NULL || ifp->idev->dev == dev ||
@ -1559,7 +1559,7 @@ addrconf_prefix_route(struct in6_addr *pfx, int plen, struct net_device *dev,
.fc_expires = expires, .fc_expires = expires,
.fc_dst_len = plen, .fc_dst_len = plen,
.fc_flags = RTF_UP | flags, .fc_flags = RTF_UP | flags,
.fc_nlinfo.nl_net = dev->nd_net, .fc_nlinfo.nl_net = dev_net(dev),
}; };
ipv6_addr_copy(&cfg.fc_dst, pfx); ipv6_addr_copy(&cfg.fc_dst, pfx);
@ -1586,7 +1586,7 @@ static void addrconf_add_mroute(struct net_device *dev)
.fc_ifindex = dev->ifindex, .fc_ifindex = dev->ifindex,
.fc_dst_len = 8, .fc_dst_len = 8,
.fc_flags = RTF_UP, .fc_flags = RTF_UP,
.fc_nlinfo.nl_net = dev->nd_net, .fc_nlinfo.nl_net = dev_net(dev),
}; };
ipv6_addr_set(&cfg.fc_dst, htonl(0xFF000000), 0, 0, 0); ipv6_addr_set(&cfg.fc_dst, htonl(0xFF000000), 0, 0, 0);
@ -1603,7 +1603,7 @@ static void sit_route_add(struct net_device *dev)
.fc_ifindex = dev->ifindex, .fc_ifindex = dev->ifindex,
.fc_dst_len = 96, .fc_dst_len = 96,
.fc_flags = RTF_UP | RTF_NONEXTHOP, .fc_flags = RTF_UP | RTF_NONEXTHOP,
.fc_nlinfo.nl_net = dev->nd_net, .fc_nlinfo.nl_net = dev_net(dev),
}; };
/* prefix length - 96 bits "::d.d.d.d" */ /* prefix length - 96 bits "::d.d.d.d" */
@ -1704,7 +1704,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)
if (pinfo->onlink) { if (pinfo->onlink) {
struct rt6_info *rt; struct rt6_info *rt;
rt = rt6_lookup(dev->nd_net, &pinfo->prefix, NULL, rt = rt6_lookup(dev_net(dev), &pinfo->prefix, NULL,
dev->ifindex, 1); dev->ifindex, 1);
if (rt && ((rt->rt6i_flags & (RTF_GATEWAY | RTF_DEFAULT)) == 0)) { if (rt && ((rt->rt6i_flags & (RTF_GATEWAY | RTF_DEFAULT)) == 0)) {
@ -1748,7 +1748,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)
ok: ok:
ifp = ipv6_get_ifaddr(dev->nd_net, &addr, dev, 1); ifp = ipv6_get_ifaddr(dev_net(dev), &addr, dev, 1);
if (ifp == NULL && valid_lft) { if (ifp == NULL && valid_lft) {
int max_addresses = in6_dev->cnf.max_addresses; int max_addresses = in6_dev->cnf.max_addresses;
@ -2071,7 +2071,7 @@ static void sit_add_v4_addrs(struct inet6_dev *idev)
struct inet6_ifaddr * ifp; struct inet6_ifaddr * ifp;
struct in6_addr addr; struct in6_addr addr;
struct net_device *dev; struct net_device *dev;
struct net *net = idev->dev->nd_net; struct net *net = dev_net(idev->dev);
int scope; int scope;
ASSERT_RTNL(); ASSERT_RTNL();
@ -2261,7 +2261,7 @@ ipv6_inherit_linklocal(struct inet6_dev *idev, struct net_device *link_dev)
static void ip6_tnl_add_linklocal(struct inet6_dev *idev) static void ip6_tnl_add_linklocal(struct inet6_dev *idev)
{ {
struct net_device *link_dev; struct net_device *link_dev;
struct net *net = idev->dev->nd_net; struct net *net = dev_net(idev->dev);
/* first try to inherit the link-local address from the link device */ /* first try to inherit the link-local address from the link device */
if (idev->dev->iflink && if (idev->dev->iflink &&
@ -2442,7 +2442,7 @@ static int addrconf_ifdown(struct net_device *dev, int how)
{ {
struct inet6_dev *idev; struct inet6_dev *idev;
struct inet6_ifaddr *ifa, **bifa; struct inet6_ifaddr *ifa, **bifa;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
int i; int i;
ASSERT_RTNL(); ASSERT_RTNL();
@ -2771,7 +2771,7 @@ static struct inet6_ifaddr *if6_get_first(struct seq_file *seq)
for (state->bucket = 0; state->bucket < IN6_ADDR_HSIZE; ++state->bucket) { for (state->bucket = 0; state->bucket < IN6_ADDR_HSIZE; ++state->bucket) {
ifa = inet6_addr_lst[state->bucket]; ifa = inet6_addr_lst[state->bucket];
while (ifa && ifa->idev->dev->nd_net != net) while (ifa && dev_net(ifa->idev->dev) != net)
ifa = ifa->lst_next; ifa = ifa->lst_next;
if (ifa) if (ifa)
break; break;
@ -2787,7 +2787,7 @@ static struct inet6_ifaddr *if6_get_next(struct seq_file *seq, struct inet6_ifad
ifa = ifa->lst_next; ifa = ifa->lst_next;
try_again: try_again:
if (ifa) { if (ifa) {
if (ifa->idev->dev->nd_net != net) { if (dev_net(ifa->idev->dev) != net) {
ifa = ifa->lst_next; ifa = ifa->lst_next;
goto try_again; goto try_again;
} }
@ -2905,7 +2905,7 @@ int ipv6_chk_home_addr(struct net *net, struct in6_addr *addr)
u8 hash = ipv6_addr_hash(addr); u8 hash = ipv6_addr_hash(addr);
read_lock_bh(&addrconf_hash_lock); read_lock_bh(&addrconf_hash_lock);
for (ifp = inet6_addr_lst[hash]; ifp; ifp = ifp->lst_next) { for (ifp = inet6_addr_lst[hash]; ifp; ifp = ifp->lst_next) {
if (ifp->idev->dev->nd_net != net) if (dev_net(ifp->idev->dev) != net)
continue; continue;
if (ipv6_addr_cmp(&ifp->addr, addr) == 0 && if (ipv6_addr_cmp(&ifp->addr, addr) == 0 &&
(ifp->flags & IFA_F_HOMEADDRESS)) { (ifp->flags & IFA_F_HOMEADDRESS)) {
@ -3469,7 +3469,7 @@ errout:
static void inet6_ifa_notify(int event, struct inet6_ifaddr *ifa) static void inet6_ifa_notify(int event, struct inet6_ifaddr *ifa)
{ {
struct sk_buff *skb; struct sk_buff *skb;
struct net *net = ifa->idev->dev->nd_net; struct net *net = dev_net(ifa->idev->dev);
int err = -ENOBUFS; int err = -ENOBUFS;
skb = nlmsg_new(inet6_ifaddr_msgsize(), GFP_ATOMIC); skb = nlmsg_new(inet6_ifaddr_msgsize(), GFP_ATOMIC);
@ -3675,7 +3675,7 @@ cont:
void inet6_ifinfo_notify(int event, struct inet6_dev *idev) void inet6_ifinfo_notify(int event, struct inet6_dev *idev)
{ {
struct sk_buff *skb; struct sk_buff *skb;
struct net *net = idev->dev->nd_net; struct net *net = dev_net(idev->dev);
int err = -ENOBUFS; int err = -ENOBUFS;
skb = nlmsg_new(inet6_if_nlmsg_size(), GFP_ATOMIC); skb = nlmsg_new(inet6_if_nlmsg_size(), GFP_ATOMIC);
@ -3745,7 +3745,7 @@ static void inet6_prefix_notify(int event, struct inet6_dev *idev,
struct prefix_info *pinfo) struct prefix_info *pinfo)
{ {
struct sk_buff *skb; struct sk_buff *skb;
struct net *net = idev->dev->nd_net; struct net *net = dev_net(idev->dev);
int err = -ENOBUFS; int err = -ENOBUFS;
skb = nlmsg_new(inet6_prefix_nlmsg_size(), GFP_ATOMIC); skb = nlmsg_new(inet6_prefix_nlmsg_size(), GFP_ATOMIC);
@ -4157,7 +4157,7 @@ static void addrconf_sysctl_register(struct inet6_dev *idev)
NET_IPV6_NEIGH, "ipv6", NET_IPV6_NEIGH, "ipv6",
&ndisc_ifinfo_sysctl_change, &ndisc_ifinfo_sysctl_change,
NULL); NULL);
__addrconf_sysctl_register(idev->dev->nd_net, idev->dev->name, __addrconf_sysctl_register(dev_net(idev->dev), idev->dev->name,
idev->dev->ifindex, idev, &idev->cnf); idev->dev->ifindex, idev, &idev->cnf);
} }

View File

@ -306,7 +306,7 @@ static inline void mip6_addr_swap(struct sk_buff *skb) {}
void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info, void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
struct net_device *dev) struct net_device *dev)
{ {
struct net *net = skb->dev->nd_net; struct net *net = dev_net(skb->dev);
struct inet6_dev *idev = NULL; struct inet6_dev *idev = NULL;
struct ipv6hdr *hdr = ipv6_hdr(skb); struct ipv6hdr *hdr = ipv6_hdr(skb);
struct sock *sk; struct sock *sk;
@ -507,7 +507,7 @@ EXPORT_SYMBOL(icmpv6_send);
static void icmpv6_echo_reply(struct sk_buff *skb) static void icmpv6_echo_reply(struct sk_buff *skb)
{ {
struct net *net = skb->dev->nd_net; struct net *net = dev_net(skb->dev);
struct sock *sk; struct sock *sk;
struct inet6_dev *idev; struct inet6_dev *idev;
struct ipv6_pinfo *np; struct ipv6_pinfo *np;

View File

@ -402,7 +402,7 @@ int ip6_forward(struct sk_buff *skb)
struct dst_entry *dst = skb->dst; struct dst_entry *dst = skb->dst;
struct ipv6hdr *hdr = ipv6_hdr(skb); struct ipv6hdr *hdr = ipv6_hdr(skb);
struct inet6_skb_parm *opt = IP6CB(skb); struct inet6_skb_parm *opt = IP6CB(skb);
struct net *net = dst->dev->nd_net; struct net *net = dev_net(dst->dev);
if (ipv6_devconf.forwarding == 0) if (ipv6_devconf.forwarding == 0)
goto error; goto error;

View File

@ -1400,7 +1400,7 @@ mld_scount(struct ifmcaddr6 *pmc, int type, int gdeleted, int sdeleted)
static struct sk_buff *mld_newpack(struct net_device *dev, int size) static struct sk_buff *mld_newpack(struct net_device *dev, int size)
{ {
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
struct sock *sk = net->ipv6.igmp_sk; struct sock *sk = net->ipv6.igmp_sk;
struct sk_buff *skb; struct sk_buff *skb;
struct mld2_report *pmr; struct mld2_report *pmr;
@ -1448,7 +1448,7 @@ static void mld_sendpack(struct sk_buff *skb)
(struct mld2_report *)skb_transport_header(skb); (struct mld2_report *)skb_transport_header(skb);
int payload_len, mldlen; int payload_len, mldlen;
struct inet6_dev *idev = in6_dev_get(skb->dev); struct inet6_dev *idev = in6_dev_get(skb->dev);
struct net *net = skb->dev->nd_net; struct net *net = dev_net(skb->dev);
int err; int err;
struct flowi fl; struct flowi fl;
@ -1762,7 +1762,7 @@ static void mld_send_cr(struct inet6_dev *idev)
static void igmp6_send(struct in6_addr *addr, struct net_device *dev, int type) static void igmp6_send(struct in6_addr *addr, struct net_device *dev, int type)
{ {
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
struct sock *sk = net->ipv6.igmp_sk; struct sock *sk = net->ipv6.igmp_sk;
struct inet6_dev *idev; struct inet6_dev *idev;
struct sk_buff *skb; struct sk_buff *skb;

View File

@ -447,7 +447,7 @@ static void __ndisc_send(struct net_device *dev,
{ {
struct flowi fl; struct flowi fl;
struct dst_entry *dst; struct dst_entry *dst;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
struct sock *sk = net->ipv6.ndisc_sk; struct sock *sk = net->ipv6.ndisc_sk;
struct sk_buff *skb; struct sk_buff *skb;
struct icmp6hdr *hdr; struct icmp6hdr *hdr;
@ -539,7 +539,7 @@ static void ndisc_send_na(struct net_device *dev, struct neighbour *neigh,
}; };
/* for anycast or proxy, solicited_addr != src_addr */ /* for anycast or proxy, solicited_addr != src_addr */
ifp = ipv6_get_ifaddr(dev->nd_net, solicited_addr, dev, 1); ifp = ipv6_get_ifaddr(dev_net(dev), solicited_addr, dev, 1);
if (ifp) { if (ifp) {
src_addr = solicited_addr; src_addr = solicited_addr;
if (ifp->flags & IFA_F_OPTIMISTIC) if (ifp->flags & IFA_F_OPTIMISTIC)
@ -547,7 +547,7 @@ static void ndisc_send_na(struct net_device *dev, struct neighbour *neigh,
in6_ifa_put(ifp); in6_ifa_put(ifp);
} else { } else {
if (ipv6_dev_get_saddr(dev, daddr, if (ipv6_dev_get_saddr(dev, daddr,
inet6_sk(dev->nd_net->ipv6.ndisc_sk)->srcprefs, inet6_sk(dev_net(dev)->ipv6.ndisc_sk)->srcprefs,
&tmpaddr)) &tmpaddr))
return; return;
src_addr = &tmpaddr; src_addr = &tmpaddr;
@ -601,7 +601,7 @@ void ndisc_send_rs(struct net_device *dev, struct in6_addr *saddr,
* suppress the inclusion of the sllao. * suppress the inclusion of the sllao.
*/ */
if (send_sllao) { if (send_sllao) {
struct inet6_ifaddr *ifp = ipv6_get_ifaddr(dev->nd_net, saddr, struct inet6_ifaddr *ifp = ipv6_get_ifaddr(dev_net(dev), saddr,
dev, 1); dev, 1);
if (ifp) { if (ifp) {
if (ifp->flags & IFA_F_OPTIMISTIC) { if (ifp->flags & IFA_F_OPTIMISTIC) {
@ -639,7 +639,7 @@ static void ndisc_solicit(struct neighbour *neigh, struct sk_buff *skb)
struct in6_addr *target = (struct in6_addr *)&neigh->primary_key; struct in6_addr *target = (struct in6_addr *)&neigh->primary_key;
int probes = atomic_read(&neigh->probes); int probes = atomic_read(&neigh->probes);
if (skb && ipv6_chk_addr(dev->nd_net, &ipv6_hdr(skb)->saddr, dev, 1)) if (skb && ipv6_chk_addr(dev_net(dev), &ipv6_hdr(skb)->saddr, dev, 1))
saddr = &ipv6_hdr(skb)->saddr; saddr = &ipv6_hdr(skb)->saddr;
if ((probes -= neigh->parms->ucast_probes) < 0) { if ((probes -= neigh->parms->ucast_probes) < 0) {
@ -727,7 +727,7 @@ static void ndisc_recv_ns(struct sk_buff *skb)
inc = ipv6_addr_is_multicast(daddr); inc = ipv6_addr_is_multicast(daddr);
ifp = ipv6_get_ifaddr(dev->nd_net, &msg->target, dev, 1); ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1);
if (ifp) { if (ifp) {
if (ifp->flags & (IFA_F_TENTATIVE|IFA_F_OPTIMISTIC)) { if (ifp->flags & (IFA_F_TENTATIVE|IFA_F_OPTIMISTIC)) {
@ -776,7 +776,7 @@ static void ndisc_recv_ns(struct sk_buff *skb)
if (ipv6_chk_acast_addr(dev, &msg->target) || if (ipv6_chk_acast_addr(dev, &msg->target) ||
(idev->cnf.forwarding && (idev->cnf.forwarding &&
(ipv6_devconf.proxy_ndp || idev->cnf.proxy_ndp) && (ipv6_devconf.proxy_ndp || idev->cnf.proxy_ndp) &&
(pneigh = pneigh_lookup(&nd_tbl, dev->nd_net, (pneigh = pneigh_lookup(&nd_tbl, dev_net(dev),
&msg->target, dev, 0)) != NULL)) { &msg->target, dev, 0)) != NULL)) {
if (!(NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED) && if (!(NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED) &&
skb->pkt_type != PACKET_HOST && skb->pkt_type != PACKET_HOST &&
@ -886,7 +886,7 @@ static void ndisc_recv_na(struct sk_buff *skb)
return; return;
} }
} }
ifp = ipv6_get_ifaddr(dev->nd_net, &msg->target, dev, 1); ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1);
if (ifp) { if (ifp) {
if (ifp->flags & IFA_F_TENTATIVE) { if (ifp->flags & IFA_F_TENTATIVE) {
addrconf_dad_failure(ifp); addrconf_dad_failure(ifp);
@ -918,7 +918,7 @@ static void ndisc_recv_na(struct sk_buff *skb)
*/ */
if (lladdr && !memcmp(lladdr, dev->dev_addr, dev->addr_len) && if (lladdr && !memcmp(lladdr, dev->dev_addr, dev->addr_len) &&
ipv6_devconf.forwarding && ipv6_devconf.proxy_ndp && ipv6_devconf.forwarding && ipv6_devconf.proxy_ndp &&
pneigh_lookup(&nd_tbl, dev->nd_net, &msg->target, dev, 0)) { pneigh_lookup(&nd_tbl, dev_net(dev), &msg->target, dev, 0)) {
/* XXX: idev->cnf.prixy_ndp */ /* XXX: idev->cnf.prixy_ndp */
goto out; goto out;
} }
@ -1008,7 +1008,7 @@ static void ndisc_ra_useropt(struct sk_buff *ra, struct nd_opt_hdr *opt)
struct sk_buff *skb; struct sk_buff *skb;
struct nlmsghdr *nlh; struct nlmsghdr *nlh;
struct nduseroptmsg *ndmsg; struct nduseroptmsg *ndmsg;
struct net *net = ra->dev->nd_net; struct net *net = dev_net(ra->dev);
int err; int err;
int base_size = NLMSG_ALIGN(sizeof(struct nduseroptmsg) int base_size = NLMSG_ALIGN(sizeof(struct nduseroptmsg)
+ (opt->nd_opt_len << 3)); + (opt->nd_opt_len << 3));
@ -1395,7 +1395,7 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh,
struct in6_addr *target) struct in6_addr *target)
{ {
struct net_device *dev = skb->dev; struct net_device *dev = skb->dev;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
struct sock *sk = net->ipv6.ndisc_sk; struct sock *sk = net->ipv6.ndisc_sk;
int len = sizeof(struct icmp6hdr) + 2 * sizeof(struct in6_addr); int len = sizeof(struct icmp6hdr) + 2 * sizeof(struct in6_addr);
struct sk_buff *buff; struct sk_buff *buff;
@ -1597,7 +1597,7 @@ int ndisc_rcv(struct sk_buff *skb)
static int ndisc_netdev_event(struct notifier_block *this, unsigned long event, void *ptr) static int ndisc_netdev_event(struct notifier_block *this, unsigned long event, void *ptr)
{ {
struct net_device *dev = ptr; struct net_device *dev = ptr;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
switch (event) { switch (event) {
case NETDEV_CHANGEADDR: case NETDEV_CHANGEADDR:

View File

@ -484,7 +484,7 @@ ipq_rcv_dev_event(struct notifier_block *this,
{ {
struct net_device *dev = ptr; struct net_device *dev = ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
/* Drop any packets associated with the downed device */ /* Drop any packets associated with the downed device */

View File

@ -214,7 +214,7 @@ int snmp6_register_dev(struct inet6_dev *idev)
if (!idev || !idev->dev) if (!idev || !idev->dev)
return -EINVAL; return -EINVAL;
if (idev->dev->nd_net != &init_net) if (dev_net(idev->dev) != &init_net)
return 0; return 0;
if (!proc_net_devsnmp6) if (!proc_net_devsnmp6)

View File

@ -176,7 +176,7 @@ static int ipv6_raw_deliver(struct sk_buff *skb, int nexthdr)
if (sk == NULL) if (sk == NULL)
goto out; goto out;
net = skb->dev->nd_net; net = dev_net(skb->dev);
sk = __raw_v6_lookup(net, sk, nexthdr, daddr, saddr, IP6CB(skb)->iif); sk = __raw_v6_lookup(net, sk, nexthdr, daddr, saddr, IP6CB(skb)->iif);
while (sk) { while (sk) {
@ -363,7 +363,7 @@ void raw6_icmp_error(struct sk_buff *skb, int nexthdr,
if (sk != NULL) { if (sk != NULL) {
saddr = &ipv6_hdr(skb)->saddr; saddr = &ipv6_hdr(skb)->saddr;
daddr = &ipv6_hdr(skb)->daddr; daddr = &ipv6_hdr(skb)->daddr;
net = skb->dev->nd_net; net = dev_net(skb->dev);
while ((sk = __raw_v6_lookup(net, sk, nexthdr, saddr, daddr, while ((sk = __raw_v6_lookup(net, sk, nexthdr, saddr, daddr,
IP6CB(skb)->iif))) { IP6CB(skb)->iif))) {

View File

@ -600,7 +600,7 @@ static int ipv6_frag_rcv(struct sk_buff *skb)
return 1; return 1;
} }
net = skb->dev->nd_net; net = dev_net(skb->dev);
if (atomic_read(&net->ipv6.frags.mem) > net->ipv6.frags.high_thresh) if (atomic_read(&net->ipv6.frags.mem) > net->ipv6.frags.high_thresh)
ip6_evictor(net, ip6_dst_idev(skb->dst)); ip6_evictor(net, ip6_dst_idev(skb->dst));

View File

@ -208,7 +208,7 @@ static void ip6_dst_ifdown(struct dst_entry *dst, struct net_device *dev,
struct rt6_info *rt = (struct rt6_info *)dst; struct rt6_info *rt = (struct rt6_info *)dst;
struct inet6_dev *idev = rt->rt6i_idev; struct inet6_dev *idev = rt->rt6i_idev;
struct net_device *loopback_dev = struct net_device *loopback_dev =
dev->nd_net->loopback_dev; dev_net(dev)->loopback_dev;
if (dev != loopback_dev && idev != NULL && idev->dev == dev) { if (dev != loopback_dev && idev != NULL && idev->dev == dev) {
struct inet6_dev *loopback_idev = struct inet6_dev *loopback_idev =
@ -433,7 +433,7 @@ static struct rt6_info *rt6_select(struct fib6_node *fn, int oif, int strict)
RT6_TRACE("%s() => %p\n", RT6_TRACE("%s() => %p\n",
__func__, match); __func__, match);
net = rt0->rt6i_dev->nd_net; net = dev_net(rt0->rt6i_dev);
return (match ? match : net->ipv6.ip6_null_entry); return (match ? match : net->ipv6.ip6_null_entry);
} }
@ -441,7 +441,7 @@ static struct rt6_info *rt6_select(struct fib6_node *fn, int oif, int strict)
int rt6_route_rcv(struct net_device *dev, u8 *opt, int len, int rt6_route_rcv(struct net_device *dev, u8 *opt, int len,
struct in6_addr *gwaddr) struct in6_addr *gwaddr)
{ {
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
struct route_info *rinfo = (struct route_info *) opt; struct route_info *rinfo = (struct route_info *) opt;
struct in6_addr prefix_buf, *prefix; struct in6_addr prefix_buf, *prefix;
unsigned int pref; unsigned int pref;
@ -607,7 +607,7 @@ static int __ip6_ins_rt(struct rt6_info *rt, struct nl_info *info)
int ip6_ins_rt(struct rt6_info *rt) int ip6_ins_rt(struct rt6_info *rt)
{ {
struct nl_info info = { struct nl_info info = {
.nl_net = rt->rt6i_dev->nd_net, .nl_net = dev_net(rt->rt6i_dev),
}; };
return __ip6_ins_rt(rt, &info); return __ip6_ins_rt(rt, &info);
} }
@ -745,7 +745,7 @@ static struct rt6_info *ip6_pol_route_input(struct net *net, struct fib6_table *
void ip6_route_input(struct sk_buff *skb) void ip6_route_input(struct sk_buff *skb)
{ {
struct ipv6hdr *iph = ipv6_hdr(skb); struct ipv6hdr *iph = ipv6_hdr(skb);
struct net *net = skb->dev->nd_net; struct net *net = dev_net(skb->dev);
int flags = RT6_LOOKUP_F_HAS_SADDR; int flags = RT6_LOOKUP_F_HAS_SADDR;
struct flowi fl = { struct flowi fl = {
.iif = skb->dev->ifindex, .iif = skb->dev->ifindex,
@ -928,7 +928,7 @@ struct dst_entry *icmp6_dst_alloc(struct net_device *dev,
{ {
struct rt6_info *rt; struct rt6_info *rt;
struct inet6_dev *idev = in6_dev_get(dev); struct inet6_dev *idev = in6_dev_get(dev);
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
if (unlikely(idev == NULL)) if (unlikely(idev == NULL))
return NULL; return NULL;
@ -1252,7 +1252,7 @@ install_route:
rt->rt6i_idev = idev; rt->rt6i_idev = idev;
rt->rt6i_table = table; rt->rt6i_table = table;
cfg->fc_nlinfo.nl_net = dev->nd_net; cfg->fc_nlinfo.nl_net = dev_net(dev);
return __ip6_ins_rt(rt, &cfg->fc_nlinfo); return __ip6_ins_rt(rt, &cfg->fc_nlinfo);
@ -1270,7 +1270,7 @@ static int __ip6_del_rt(struct rt6_info *rt, struct nl_info *info)
{ {
int err; int err;
struct fib6_table *table; struct fib6_table *table;
struct net *net = rt->rt6i_dev->nd_net; struct net *net = dev_net(rt->rt6i_dev);
if (rt == net->ipv6.ip6_null_entry) if (rt == net->ipv6.ip6_null_entry)
return -ENOENT; return -ENOENT;
@ -1289,7 +1289,7 @@ static int __ip6_del_rt(struct rt6_info *rt, struct nl_info *info)
int ip6_del_rt(struct rt6_info *rt) int ip6_del_rt(struct rt6_info *rt)
{ {
struct nl_info info = { struct nl_info info = {
.nl_net = rt->rt6i_dev->nd_net, .nl_net = dev_net(rt->rt6i_dev),
}; };
return __ip6_del_rt(rt, &info); return __ip6_del_rt(rt, &info);
} }
@ -1401,7 +1401,7 @@ static struct rt6_info *ip6_route_redirect(struct in6_addr *dest,
struct net_device *dev) struct net_device *dev)
{ {
int flags = RT6_LOOKUP_F_HAS_SADDR; int flags = RT6_LOOKUP_F_HAS_SADDR;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
struct ip6rd_flowi rdfl = { struct ip6rd_flowi rdfl = {
.fl = { .fl = {
.oif = dev->ifindex, .oif = dev->ifindex,
@ -1428,7 +1428,7 @@ void rt6_redirect(struct in6_addr *dest, struct in6_addr *src,
{ {
struct rt6_info *rt, *nrt = NULL; struct rt6_info *rt, *nrt = NULL;
struct netevent_redirect netevent; struct netevent_redirect netevent;
struct net *net = neigh->dev->nd_net; struct net *net = dev_net(neigh->dev);
rt = ip6_route_redirect(dest, src, saddr, neigh->dev); rt = ip6_route_redirect(dest, src, saddr, neigh->dev);
@ -1477,7 +1477,7 @@ void rt6_redirect(struct in6_addr *dest, struct in6_addr *src,
nrt->rt6i_nexthop = neigh_clone(neigh); nrt->rt6i_nexthop = neigh_clone(neigh);
/* Reset pmtu, it may be better */ /* Reset pmtu, it may be better */
nrt->u.dst.metrics[RTAX_MTU-1] = ipv6_get_mtu(neigh->dev); nrt->u.dst.metrics[RTAX_MTU-1] = ipv6_get_mtu(neigh->dev);
nrt->u.dst.metrics[RTAX_ADVMSS-1] = ipv6_advmss(neigh->dev->nd_net, nrt->u.dst.metrics[RTAX_ADVMSS-1] = ipv6_advmss(dev_net(neigh->dev),
dst_mtu(&nrt->u.dst)); dst_mtu(&nrt->u.dst));
if (ip6_ins_rt(nrt)) if (ip6_ins_rt(nrt))
@ -1506,7 +1506,7 @@ void rt6_pmtu_discovery(struct in6_addr *daddr, struct in6_addr *saddr,
struct net_device *dev, u32 pmtu) struct net_device *dev, u32 pmtu)
{ {
struct rt6_info *rt, *nrt; struct rt6_info *rt, *nrt;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
int allfrag = 0; int allfrag = 0;
rt = rt6_lookup(net, daddr, saddr, dev->ifindex, 0); rt = rt6_lookup(net, daddr, saddr, dev->ifindex, 0);
@ -1583,7 +1583,7 @@ out:
static struct rt6_info * ip6_rt_copy(struct rt6_info *ort) static struct rt6_info * ip6_rt_copy(struct rt6_info *ort)
{ {
struct net *net = ort->rt6i_dev->nd_net; struct net *net = dev_net(ort->rt6i_dev);
struct rt6_info *rt = ip6_dst_alloc(net->ipv6.ip6_dst_ops); struct rt6_info *rt = ip6_dst_alloc(net->ipv6.ip6_dst_ops);
if (rt) { if (rt) {
@ -1682,7 +1682,7 @@ struct rt6_info *rt6_get_dflt_router(struct in6_addr *addr, struct net_device *d
struct rt6_info *rt; struct rt6_info *rt;
struct fib6_table *table; struct fib6_table *table;
table = fib6_get_table(dev->nd_net, RT6_TABLE_DFLT); table = fib6_get_table(dev_net(dev), RT6_TABLE_DFLT);
if (table == NULL) if (table == NULL)
return NULL; return NULL;
@ -1713,7 +1713,7 @@ struct rt6_info *rt6_add_dflt_router(struct in6_addr *gwaddr,
RTF_UP | RTF_EXPIRES | RTF_PREF(pref), RTF_UP | RTF_EXPIRES | RTF_PREF(pref),
.fc_nlinfo.pid = 0, .fc_nlinfo.pid = 0,
.fc_nlinfo.nlh = NULL, .fc_nlinfo.nlh = NULL,
.fc_nlinfo.nl_net = dev->nd_net, .fc_nlinfo.nl_net = dev_net(dev),
}; };
ipv6_addr_copy(&cfg.fc_gateway, gwaddr); ipv6_addr_copy(&cfg.fc_gateway, gwaddr);
@ -1862,7 +1862,7 @@ struct rt6_info *addrconf_dst_alloc(struct inet6_dev *idev,
const struct in6_addr *addr, const struct in6_addr *addr,
int anycast) int anycast)
{ {
struct net *net = idev->dev->nd_net; struct net *net = dev_net(idev->dev);
struct rt6_info *rt = ip6_dst_alloc(net->ipv6.ip6_dst_ops); struct rt6_info *rt = ip6_dst_alloc(net->ipv6.ip6_dst_ops);
if (rt == NULL) if (rt == NULL)
@ -1939,7 +1939,7 @@ static int rt6_mtu_change_route(struct rt6_info *rt, void *p_arg)
{ {
struct rt6_mtu_change_arg *arg = (struct rt6_mtu_change_arg *) p_arg; struct rt6_mtu_change_arg *arg = (struct rt6_mtu_change_arg *) p_arg;
struct inet6_dev *idev; struct inet6_dev *idev;
struct net *net = arg->dev->nd_net; struct net *net = dev_net(arg->dev);
/* In IPv6 pmtu discovery is not optional, /* In IPv6 pmtu discovery is not optional,
so that RTAX_MTU lock cannot disable it. so that RTAX_MTU lock cannot disable it.
@ -1983,7 +1983,7 @@ void rt6_mtu_change(struct net_device *dev, unsigned mtu)
.mtu = mtu, .mtu = mtu,
}; };
fib6_clean_all(dev->nd_net, rt6_mtu_change_route, 0, &arg); fib6_clean_all(dev_net(dev), rt6_mtu_change_route, 0, &arg);
} }
static const struct nla_policy rtm_ipv6_policy[RTA_MAX+1] = { static const struct nla_policy rtm_ipv6_policy[RTA_MAX+1] = {
@ -2321,7 +2321,7 @@ static int ip6_route_dev_notify(struct notifier_block *this,
unsigned long event, void *data) unsigned long event, void *data)
{ {
struct net_device *dev = (struct net_device *)data; struct net_device *dev = (struct net_device *)data;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
if (event == NETDEV_REGISTER && (dev->flags & IFF_LOOPBACK)) { if (event == NETDEV_REGISTER && (dev->flags & IFF_LOOPBACK)) {
net->ipv6.ip6_null_entry->u.dst.dev = dev; net->ipv6.ip6_null_entry->u.dst.dev = dev;

View File

@ -321,7 +321,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
struct tcp_sock *tp; struct tcp_sock *tp;
__u32 seq; __u32 seq;
sk = inet6_lookup(skb->dev->nd_net, &tcp_hashinfo, &hdr->daddr, sk = inet6_lookup(dev_net(skb->dev), &tcp_hashinfo, &hdr->daddr,
th->dest, &hdr->saddr, th->source, skb->dev->ifindex); th->dest, &hdr->saddr, th->source, skb->dev->ifindex);
if (sk == NULL) { if (sk == NULL) {
@ -988,7 +988,7 @@ static void tcp_v6_send_reset(struct sock *sk, struct sk_buff *skb)
struct tcphdr *th = tcp_hdr(skb), *t1; struct tcphdr *th = tcp_hdr(skb), *t1;
struct sk_buff *buff; struct sk_buff *buff;
struct flowi fl; struct flowi fl;
struct net *net = skb->dst->dev->nd_net; struct net *net = dev_net(skb->dst->dev);
struct sock *ctl_sk = net->ipv6.tcp_sk; struct sock *ctl_sk = net->ipv6.tcp_sk;
unsigned int tot_len = sizeof(*th); unsigned int tot_len = sizeof(*th);
#ifdef CONFIG_TCP_MD5SIG #ifdef CONFIG_TCP_MD5SIG
@ -1093,7 +1093,7 @@ static void tcp_v6_send_ack(struct tcp_timewait_sock *tw,
struct tcphdr *th = tcp_hdr(skb), *t1; struct tcphdr *th = tcp_hdr(skb), *t1;
struct sk_buff *buff; struct sk_buff *buff;
struct flowi fl; struct flowi fl;
struct net *net = skb->dev->nd_net; struct net *net = dev_net(skb->dev);
struct sock *ctl_sk = net->ipv6.tcp_sk; struct sock *ctl_sk = net->ipv6.tcp_sk;
unsigned int tot_len = sizeof(struct tcphdr); unsigned int tot_len = sizeof(struct tcphdr);
__be32 *topt; __be32 *topt;
@ -1739,7 +1739,7 @@ static int tcp_v6_rcv(struct sk_buff *skb)
TCP_SKB_CB(skb)->flags = ipv6_get_dsfield(ipv6_hdr(skb)); TCP_SKB_CB(skb)->flags = ipv6_get_dsfield(ipv6_hdr(skb));
TCP_SKB_CB(skb)->sacked = 0; TCP_SKB_CB(skb)->sacked = 0;
sk = __inet6_lookup(skb->dev->nd_net, &tcp_hashinfo, sk = __inet6_lookup(dev_net(skb->dev), &tcp_hashinfo,
&ipv6_hdr(skb)->saddr, th->source, &ipv6_hdr(skb)->saddr, th->source,
&ipv6_hdr(skb)->daddr, ntohs(th->dest), &ipv6_hdr(skb)->daddr, ntohs(th->dest),
inet6_iif(skb)); inet6_iif(skb));
@ -1822,7 +1822,7 @@ do_time_wait:
{ {
struct sock *sk2; struct sock *sk2;
sk2 = inet6_lookup_listener(skb->dev->nd_net, &tcp_hashinfo, sk2 = inet6_lookup_listener(dev_net(skb->dev), &tcp_hashinfo,
&ipv6_hdr(skb)->daddr, &ipv6_hdr(skb)->daddr,
ntohs(th->dest), inet6_iif(skb)); ntohs(th->dest), inet6_iif(skb));
if (sk2 != NULL) { if (sk2 != NULL) {

View File

@ -235,7 +235,7 @@ void __udp6_lib_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
struct sock *sk; struct sock *sk;
int err; int err;
sk = __udp6_lib_lookup(skb->dev->nd_net, daddr, uh->dest, sk = __udp6_lib_lookup(dev_net(skb->dev), daddr, uh->dest,
saddr, uh->source, inet6_iif(skb), udptable); saddr, uh->source, inet6_iif(skb), udptable);
if (sk == NULL) if (sk == NULL)
return; return;
@ -483,7 +483,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[],
* check socket cache ... must talk to Alan about his plans * check socket cache ... must talk to Alan about his plans
* for sock caches... i'll skip this for now. * for sock caches... i'll skip this for now.
*/ */
sk = __udp6_lib_lookup(skb->dev->nd_net, saddr, uh->source, sk = __udp6_lib_lookup(dev_net(skb->dev), saddr, uh->source,
daddr, uh->dest, inet6_iif(skb), udptable); daddr, uh->dest, inet6_iif(skb), udptable);
if (sk == NULL) { if (sk == NULL) {

View File

@ -247,7 +247,7 @@ static void xfrm6_dst_ifdown(struct dst_entry *dst, struct net_device *dev,
xdst = (struct xfrm_dst *)dst; xdst = (struct xfrm_dst *)dst;
if (xdst->u.rt6.rt6i_idev->dev == dev) { if (xdst->u.rt6.rt6i_idev->dev == dev) {
struct inet6_dev *loopback_idev = struct inet6_dev *loopback_idev =
in6_dev_get(dev->nd_net->loopback_dev); in6_dev_get(dev_net(dev)->loopback_dev);
BUG_ON(!loopback_idev); BUG_ON(!loopback_idev);
do { do {

View File

@ -335,7 +335,7 @@ static int ipxitf_device_event(struct notifier_block *notifier,
struct net_device *dev = ptr; struct net_device *dev = ptr;
struct ipx_interface *i, *tmp; struct ipx_interface *i, *tmp;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (event != NETDEV_DOWN && event != NETDEV_UP) if (event != NETDEV_DOWN && event != NETDEV_UP)
@ -1636,7 +1636,7 @@ static int ipx_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_ty
u16 ipx_pktsize; u16 ipx_pktsize;
int rc = 0; int rc = 0;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto drop; goto drop;
/* Not ours */ /* Not ours */

View File

@ -1326,7 +1326,7 @@ int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev,
int command; int command;
__u8 control; __u8 control;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto out; goto out;
/* FIXME: should we get our own field? */ /* FIXME: should we get our own field? */

View File

@ -146,7 +146,7 @@ int llc_rcv(struct sk_buff *skb, struct net_device *dev,
int (*rcv)(struct sk_buff *, struct net_device *, int (*rcv)(struct sk_buff *, struct net_device *,
struct packet_type *, struct net_device *); struct packet_type *, struct net_device *);
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto drop; goto drop;
/* /*

View File

@ -168,7 +168,7 @@ int nf_hook_slow(int pf, unsigned int hook, struct sk_buff *skb,
#ifdef CONFIG_NET_NS #ifdef CONFIG_NET_NS
struct net *net; struct net *net;
net = indev == NULL ? outdev->nd_net : indev->nd_net; net = indev == NULL ? dev_net(outdev) : dev_net(indev);
if (net != &init_net) if (net != &init_net)
return 1; return 1;
#endif #endif

View File

@ -557,7 +557,7 @@ nfqnl_rcv_dev_event(struct notifier_block *this,
{ {
struct net_device *dev = ptr; struct net_device *dev = ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
/* Drop any packets associated with the downed device */ /* Drop any packets associated with the downed device */

View File

@ -954,7 +954,7 @@ static int netlbl_unlhsh_netdev_handler(struct notifier_block *this,
struct net_device *dev = ptr; struct net_device *dev = ptr;
struct netlbl_unlhsh_iface *iface = NULL; struct netlbl_unlhsh_iface *iface = NULL;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
/* XXX - should this be a check for NETDEV_DOWN or _UNREGISTER? */ /* XXX - should this be a check for NETDEV_DOWN or _UNREGISTER? */

View File

@ -106,7 +106,7 @@ static int nr_device_event(struct notifier_block *this, unsigned long event, voi
{ {
struct net_device *dev = (struct net_device *)ptr; struct net_device *dev = (struct net_device *)ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (event != NETDEV_DOWN) if (event != NETDEV_DOWN)

View File

@ -263,7 +263,7 @@ static int packet_rcv_spkt(struct sk_buff *skb, struct net_device *dev, struct
if (skb->pkt_type == PACKET_LOOPBACK) if (skb->pkt_type == PACKET_LOOPBACK)
goto out; goto out;
if (dev->nd_net != sk->sk_net) if (dev_net(dev) != sk->sk_net)
goto out; goto out;
if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
@ -451,7 +451,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, struct packet
sk = pt->af_packet_priv; sk = pt->af_packet_priv;
po = pkt_sk(sk); po = pkt_sk(sk);
if (dev->nd_net != sk->sk_net) if (dev_net(dev) != sk->sk_net)
goto drop; goto drop;
skb->dev = dev; skb->dev = dev;
@ -568,7 +568,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, struct packe
sk = pt->af_packet_priv; sk = pt->af_packet_priv;
po = pkt_sk(sk); po = pkt_sk(sk);
if (dev->nd_net != sk->sk_net) if (dev_net(dev) != sk->sk_net)
goto drop; goto drop;
if (dev->header_ops) { if (dev->header_ops) {
@ -1450,7 +1450,7 @@ static int packet_notifier(struct notifier_block *this, unsigned long msg, void
struct sock *sk; struct sock *sk;
struct hlist_node *node; struct hlist_node *node;
struct net_device *dev = data; struct net_device *dev = data;
struct net *net = dev->nd_net; struct net *net = dev_net(dev);
read_lock(&net->packet.sklist_lock); read_lock(&net->packet.sklist_lock);
sk_for_each(sk, node, &net->packet.sklist) { sk_for_each(sk, node, &net->packet.sklist) {

View File

@ -197,7 +197,7 @@ static int rose_device_event(struct notifier_block *this, unsigned long event,
{ {
struct net_device *dev = (struct net_device *)ptr; struct net_device *dev = (struct net_device *)ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (event != NETDEV_DOWN) if (event != NETDEV_DOWN)

View File

@ -630,7 +630,7 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev,
struct sctp_sockaddr_entry *temp; struct sctp_sockaddr_entry *temp;
int found = 0; int found = 0;
if (ifa->ifa_dev->dev->nd_net != &init_net) if (dev_net(ifa->ifa_dev->dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
switch (ev) { switch (ev) {

View File

@ -101,7 +101,7 @@ static int recv_msg(struct sk_buff *buf, struct net_device *dev,
struct eth_bearer *eb_ptr = (struct eth_bearer *)pt->af_packet_priv; struct eth_bearer *eb_ptr = (struct eth_bearer *)pt->af_packet_priv;
u32 size; u32 size;
if (dev->nd_net != &init_net) { if (dev_net(dev) != &init_net) {
kfree_skb(buf); kfree_skb(buf);
return 0; return 0;
} }
@ -198,7 +198,7 @@ static int recv_notification(struct notifier_block *nb, unsigned long evt,
struct eth_bearer *eb_ptr = &eth_bearers[0]; struct eth_bearer *eb_ptr = &eth_bearers[0];
struct eth_bearer *stop = &eth_bearers[MAX_ETH_BEARERS]; struct eth_bearer *stop = &eth_bearers[MAX_ETH_BEARERS];
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
while ((eb_ptr->dev != dev)) { while ((eb_ptr->dev != dev)) {

View File

@ -1157,7 +1157,7 @@ static void rtmsg_iwinfo(struct net_device *dev, char *event, int event_len)
struct sk_buff *skb; struct sk_buff *skb;
int err; int err;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return; return;
skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC);

View File

@ -191,7 +191,7 @@ static int x25_device_event(struct notifier_block *this, unsigned long event,
struct net_device *dev = ptr; struct net_device *dev = ptr;
struct x25_neigh *nb; struct x25_neigh *nb;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (dev->type == ARPHRD_X25 if (dev->type == ARPHRD_X25

View File

@ -95,7 +95,7 @@ int x25_lapb_receive_frame(struct sk_buff *skb, struct net_device *dev,
struct sk_buff *nskb; struct sk_buff *nskb;
struct x25_neigh *nb; struct x25_neigh *nb;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
goto drop; goto drop;
nskb = skb_copy(skb, GFP_ATOMIC); nskb = skb_copy(skb, GFP_ATOMIC);

View File

@ -2079,7 +2079,7 @@ static int stale_bundle(struct dst_entry *dst)
void xfrm_dst_ifdown(struct dst_entry *dst, struct net_device *dev) void xfrm_dst_ifdown(struct dst_entry *dst, struct net_device *dev)
{ {
while ((dst = dst->child) && dst->xfrm && dst->dev == dev) { while ((dst = dst->child) && dst->xfrm && dst->dev == dev) {
dst->dev = dev->nd_net->loopback_dev; dst->dev = dev_net(dev)->loopback_dev;
dev_hold(dst->dev); dev_hold(dst->dev);
dev_put(dev); dev_put(dev);
} }
@ -2350,7 +2350,7 @@ static int xfrm_dev_event(struct notifier_block *this, unsigned long event, void
{ {
struct net_device *dev = ptr; struct net_device *dev = ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
switch (event) { switch (event) {

View File

@ -281,7 +281,7 @@ static int sel_netif_netdev_notifier_handler(struct notifier_block *this,
{ {
struct net_device *dev = ptr; struct net_device *dev = ptr;
if (dev->nd_net != &init_net) if (dev_net(dev) != &init_net)
return NOTIFY_DONE; return NOTIFY_DONE;
if (event == NETDEV_DOWN) if (event == NETDEV_DOWN)