[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:
@@ -335,7 +335,7 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
|
||||
|
||||
rwlock_init(&ndev->lock);
|
||||
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.sysctl = NULL;
|
||||
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);
|
||||
|
||||
/* 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"));
|
||||
err = -EEXIST;
|
||||
goto out;
|
||||
@@ -751,7 +751,7 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
|
||||
if ((ifp->flags & IFA_F_PERMANENT) && onlink < 1) {
|
||||
struct in6_addr prefix;
|
||||
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);
|
||||
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],
|
||||
*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 net_device *dev;
|
||||
int dst_type;
|
||||
@@ -1217,7 +1217,7 @@ int ipv6_chk_addr(struct net *net, struct in6_addr *addr,
|
||||
|
||||
read_lock_bh(&addrconf_hash_lock);
|
||||
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;
|
||||
if (ipv6_addr_equal(&ifp->addr, addr) &&
|
||||
!(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);
|
||||
|
||||
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;
|
||||
if (ipv6_addr_equal(&ifp->addr, addr)) {
|
||||
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);
|
||||
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;
|
||||
if (ipv6_addr_equal(&ifp->addr, addr)) {
|
||||
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_dst_len = plen,
|
||||
.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);
|
||||
@@ -1586,7 +1586,7 @@ static void addrconf_add_mroute(struct net_device *dev)
|
||||
.fc_ifindex = dev->ifindex,
|
||||
.fc_dst_len = 8,
|
||||
.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);
|
||||
@@ -1603,7 +1603,7 @@ static void sit_route_add(struct net_device *dev)
|
||||
.fc_ifindex = dev->ifindex,
|
||||
.fc_dst_len = 96,
|
||||
.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" */
|
||||
@@ -1704,7 +1704,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)
|
||||
|
||||
if (pinfo->onlink) {
|
||||
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);
|
||||
|
||||
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:
|
||||
|
||||
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) {
|
||||
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 in6_addr addr;
|
||||
struct net_device *dev;
|
||||
struct net *net = idev->dev->nd_net;
|
||||
struct net *net = dev_net(idev->dev);
|
||||
int scope;
|
||||
|
||||
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)
|
||||
{
|
||||
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 */
|
||||
if (idev->dev->iflink &&
|
||||
@@ -2442,7 +2442,7 @@ static int addrconf_ifdown(struct net_device *dev, int how)
|
||||
{
|
||||
struct inet6_dev *idev;
|
||||
struct inet6_ifaddr *ifa, **bifa;
|
||||
struct net *net = dev->nd_net;
|
||||
struct net *net = dev_net(dev);
|
||||
int i;
|
||||
|
||||
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) {
|
||||
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;
|
||||
if (ifa)
|
||||
break;
|
||||
@@ -2787,7 +2787,7 @@ static struct inet6_ifaddr *if6_get_next(struct seq_file *seq, struct inet6_ifad
|
||||
ifa = ifa->lst_next;
|
||||
try_again:
|
||||
if (ifa) {
|
||||
if (ifa->idev->dev->nd_net != net) {
|
||||
if (dev_net(ifa->idev->dev) != net) {
|
||||
ifa = ifa->lst_next;
|
||||
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);
|
||||
read_lock_bh(&addrconf_hash_lock);
|
||||
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;
|
||||
if (ipv6_addr_cmp(&ifp->addr, addr) == 0 &&
|
||||
(ifp->flags & IFA_F_HOMEADDRESS)) {
|
||||
@@ -3469,7 +3469,7 @@ errout:
|
||||
static void inet6_ifa_notify(int event, struct inet6_ifaddr *ifa)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
struct net *net = ifa->idev->dev->nd_net;
|
||||
struct net *net = dev_net(ifa->idev->dev);
|
||||
int err = -ENOBUFS;
|
||||
|
||||
skb = nlmsg_new(inet6_ifaddr_msgsize(), GFP_ATOMIC);
|
||||
@@ -3675,7 +3675,7 @@ cont:
|
||||
void inet6_ifinfo_notify(int event, struct inet6_dev *idev)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
struct net *net = idev->dev->nd_net;
|
||||
struct net *net = dev_net(idev->dev);
|
||||
int err = -ENOBUFS;
|
||||
|
||||
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 sk_buff *skb;
|
||||
struct net *net = idev->dev->nd_net;
|
||||
struct net *net = dev_net(idev->dev);
|
||||
int err = -ENOBUFS;
|
||||
|
||||
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",
|
||||
&ndisc_ifinfo_sysctl_change,
|
||||
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);
|
||||
}
|
||||
|
||||
|
@@ -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,
|
||||
struct net_device *dev)
|
||||
{
|
||||
struct net *net = skb->dev->nd_net;
|
||||
struct net *net = dev_net(skb->dev);
|
||||
struct inet6_dev *idev = NULL;
|
||||
struct ipv6hdr *hdr = ipv6_hdr(skb);
|
||||
struct sock *sk;
|
||||
@@ -507,7 +507,7 @@ EXPORT_SYMBOL(icmpv6_send);
|
||||
|
||||
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 inet6_dev *idev;
|
||||
struct ipv6_pinfo *np;
|
||||
|
@@ -402,7 +402,7 @@ int ip6_forward(struct sk_buff *skb)
|
||||
struct dst_entry *dst = skb->dst;
|
||||
struct ipv6hdr *hdr = ipv6_hdr(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)
|
||||
goto error;
|
||||
|
@@ -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)
|
||||
{
|
||||
struct net *net = dev->nd_net;
|
||||
struct net *net = dev_net(dev);
|
||||
struct sock *sk = net->ipv6.igmp_sk;
|
||||
struct sk_buff *skb;
|
||||
struct mld2_report *pmr;
|
||||
@@ -1448,7 +1448,7 @@ static void mld_sendpack(struct sk_buff *skb)
|
||||
(struct mld2_report *)skb_transport_header(skb);
|
||||
int payload_len, mldlen;
|
||||
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;
|
||||
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)
|
||||
{
|
||||
struct net *net = dev->nd_net;
|
||||
struct net *net = dev_net(dev);
|
||||
struct sock *sk = net->ipv6.igmp_sk;
|
||||
struct inet6_dev *idev;
|
||||
struct sk_buff *skb;
|
||||
|
@@ -447,7 +447,7 @@ static void __ndisc_send(struct net_device *dev,
|
||||
{
|
||||
struct flowi fl;
|
||||
struct dst_entry *dst;
|
||||
struct net *net = dev->nd_net;
|
||||
struct net *net = dev_net(dev);
|
||||
struct sock *sk = net->ipv6.ndisc_sk;
|
||||
struct sk_buff *skb;
|
||||
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 */
|
||||
ifp = ipv6_get_ifaddr(dev->nd_net, solicited_addr, dev, 1);
|
||||
ifp = ipv6_get_ifaddr(dev_net(dev), solicited_addr, dev, 1);
|
||||
if (ifp) {
|
||||
src_addr = solicited_addr;
|
||||
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);
|
||||
} else {
|
||||
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))
|
||||
return;
|
||||
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.
|
||||
*/
|
||||
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);
|
||||
if (ifp) {
|
||||
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;
|
||||
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;
|
||||
|
||||
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);
|
||||
|
||||
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->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) ||
|
||||
(idev->cnf.forwarding &&
|
||||
(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)) {
|
||||
if (!(NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED) &&
|
||||
skb->pkt_type != PACKET_HOST &&
|
||||
@@ -886,7 +886,7 @@ static void ndisc_recv_na(struct sk_buff *skb)
|
||||
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->flags & IFA_F_TENTATIVE) {
|
||||
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) &&
|
||||
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 */
|
||||
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 nlmsghdr *nlh;
|
||||
struct nduseroptmsg *ndmsg;
|
||||
struct net *net = ra->dev->nd_net;
|
||||
struct net *net = dev_net(ra->dev);
|
||||
int err;
|
||||
int base_size = NLMSG_ALIGN(sizeof(struct nduseroptmsg)
|
||||
+ (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 net_device *dev = skb->dev;
|
||||
struct net *net = dev->nd_net;
|
||||
struct net *net = dev_net(dev);
|
||||
struct sock *sk = net->ipv6.ndisc_sk;
|
||||
int len = sizeof(struct icmp6hdr) + 2 * sizeof(struct in6_addr);
|
||||
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)
|
||||
{
|
||||
struct net_device *dev = ptr;
|
||||
struct net *net = dev->nd_net;
|
||||
struct net *net = dev_net(dev);
|
||||
|
||||
switch (event) {
|
||||
case NETDEV_CHANGEADDR:
|
||||
|
@@ -484,7 +484,7 @@ ipq_rcv_dev_event(struct notifier_block *this,
|
||||
{
|
||||
struct net_device *dev = ptr;
|
||||
|
||||
if (dev->nd_net != &init_net)
|
||||
if (dev_net(dev) != &init_net)
|
||||
return NOTIFY_DONE;
|
||||
|
||||
/* Drop any packets associated with the downed device */
|
||||
|
@@ -214,7 +214,7 @@ int snmp6_register_dev(struct inet6_dev *idev)
|
||||
if (!idev || !idev->dev)
|
||||
return -EINVAL;
|
||||
|
||||
if (idev->dev->nd_net != &init_net)
|
||||
if (dev_net(idev->dev) != &init_net)
|
||||
return 0;
|
||||
|
||||
if (!proc_net_devsnmp6)
|
||||
|
@@ -176,7 +176,7 @@ static int ipv6_raw_deliver(struct sk_buff *skb, int nexthdr)
|
||||
if (sk == NULL)
|
||||
goto out;
|
||||
|
||||
net = skb->dev->nd_net;
|
||||
net = dev_net(skb->dev);
|
||||
sk = __raw_v6_lookup(net, sk, nexthdr, daddr, saddr, IP6CB(skb)->iif);
|
||||
|
||||
while (sk) {
|
||||
@@ -363,7 +363,7 @@ void raw6_icmp_error(struct sk_buff *skb, int nexthdr,
|
||||
if (sk != NULL) {
|
||||
saddr = &ipv6_hdr(skb)->saddr;
|
||||
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,
|
||||
IP6CB(skb)->iif))) {
|
||||
|
@@ -600,7 +600,7 @@ static int ipv6_frag_rcv(struct sk_buff *skb)
|
||||
return 1;
|
||||
}
|
||||
|
||||
net = skb->dev->nd_net;
|
||||
net = dev_net(skb->dev);
|
||||
if (atomic_read(&net->ipv6.frags.mem) > net->ipv6.frags.high_thresh)
|
||||
ip6_evictor(net, ip6_dst_idev(skb->dst));
|
||||
|
||||
|
@@ -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 inet6_dev *idev = rt->rt6i_idev;
|
||||
struct net_device *loopback_dev =
|
||||
dev->nd_net->loopback_dev;
|
||||
dev_net(dev)->loopback_dev;
|
||||
|
||||
if (dev != loopback_dev && idev != NULL && idev->dev == dev) {
|
||||
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",
|
||||
__func__, match);
|
||||
|
||||
net = rt0->rt6i_dev->nd_net;
|
||||
net = dev_net(rt0->rt6i_dev);
|
||||
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,
|
||||
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 in6_addr prefix_buf, *prefix;
|
||||
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)
|
||||
{
|
||||
struct nl_info info = {
|
||||
.nl_net = rt->rt6i_dev->nd_net,
|
||||
.nl_net = dev_net(rt->rt6i_dev),
|
||||
};
|
||||
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)
|
||||
{
|
||||
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;
|
||||
struct flowi fl = {
|
||||
.iif = skb->dev->ifindex,
|
||||
@@ -928,7 +928,7 @@ struct dst_entry *icmp6_dst_alloc(struct net_device *dev,
|
||||
{
|
||||
struct rt6_info *rt;
|
||||
struct inet6_dev *idev = in6_dev_get(dev);
|
||||
struct net *net = dev->nd_net;
|
||||
struct net *net = dev_net(dev);
|
||||
|
||||
if (unlikely(idev == NULL))
|
||||
return NULL;
|
||||
@@ -1252,7 +1252,7 @@ install_route:
|
||||
rt->rt6i_idev = idev;
|
||||
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);
|
||||
|
||||
@@ -1270,7 +1270,7 @@ static int __ip6_del_rt(struct rt6_info *rt, struct nl_info *info)
|
||||
{
|
||||
int err;
|
||||
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)
|
||||
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)
|
||||
{
|
||||
struct nl_info info = {
|
||||
.nl_net = rt->rt6i_dev->nd_net,
|
||||
.nl_net = dev_net(rt->rt6i_dev),
|
||||
};
|
||||
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)
|
||||
{
|
||||
int flags = RT6_LOOKUP_F_HAS_SADDR;
|
||||
struct net *net = dev->nd_net;
|
||||
struct net *net = dev_net(dev);
|
||||
struct ip6rd_flowi rdfl = {
|
||||
.fl = {
|
||||
.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 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);
|
||||
|
||||
@@ -1477,7 +1477,7 @@ void rt6_redirect(struct in6_addr *dest, struct in6_addr *src,
|
||||
nrt->rt6i_nexthop = neigh_clone(neigh);
|
||||
/* Reset pmtu, it may be better */
|
||||
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));
|
||||
|
||||
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 rt6_info *rt, *nrt;
|
||||
struct net *net = dev->nd_net;
|
||||
struct net *net = dev_net(dev);
|
||||
int allfrag = 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)
|
||||
{
|
||||
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);
|
||||
|
||||
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 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)
|
||||
return NULL;
|
||||
|
||||
@@ -1713,7 +1713,7 @@ struct rt6_info *rt6_add_dflt_router(struct in6_addr *gwaddr,
|
||||
RTF_UP | RTF_EXPIRES | RTF_PREF(pref),
|
||||
.fc_nlinfo.pid = 0,
|
||||
.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);
|
||||
@@ -1862,7 +1862,7 @@ struct rt6_info *addrconf_dst_alloc(struct inet6_dev *idev,
|
||||
const struct in6_addr *addr,
|
||||
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);
|
||||
|
||||
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 inet6_dev *idev;
|
||||
struct net *net = arg->dev->nd_net;
|
||||
struct net *net = dev_net(arg->dev);
|
||||
|
||||
/* In IPv6 pmtu discovery is not optional,
|
||||
so that RTAX_MTU lock cannot disable it.
|
||||
@@ -1983,7 +1983,7 @@ void rt6_mtu_change(struct net_device *dev, unsigned 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] = {
|
||||
@@ -2321,7 +2321,7 @@ static int ip6_route_dev_notify(struct notifier_block *this,
|
||||
unsigned long event, void *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)) {
|
||||
net->ipv6.ip6_null_entry->u.dst.dev = dev;
|
||||
|
@@ -321,7 +321,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
||||
struct tcp_sock *tp;
|
||||
__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);
|
||||
|
||||
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 sk_buff *buff;
|
||||
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;
|
||||
unsigned int tot_len = sizeof(*th);
|
||||
#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 sk_buff *buff;
|
||||
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;
|
||||
unsigned int tot_len = sizeof(struct tcphdr);
|
||||
__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)->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)->daddr, ntohs(th->dest),
|
||||
inet6_iif(skb));
|
||||
@@ -1822,7 +1822,7 @@ do_time_wait:
|
||||
{
|
||||
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,
|
||||
ntohs(th->dest), inet6_iif(skb));
|
||||
if (sk2 != NULL) {
|
||||
|
@@ -235,7 +235,7 @@ void __udp6_lib_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
||||
struct sock *sk;
|
||||
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);
|
||||
if (sk == NULL)
|
||||
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
|
||||
* 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);
|
||||
|
||||
if (sk == NULL) {
|
||||
|
@@ -247,7 +247,7 @@ static void xfrm6_dst_ifdown(struct dst_entry *dst, struct net_device *dev,
|
||||
xdst = (struct xfrm_dst *)dst;
|
||||
if (xdst->u.rt6.rt6i_idev->dev == dev) {
|
||||
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);
|
||||
|
||||
do {
|
||||
|
Reference in New Issue
Block a user