Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53b7997f authored by YOSHIFUJI Hideaki's avatar YOSHIFUJI Hideaki Committed by David S. Miller
Browse files

ipv6 netns: Make several "global" sysctl variables namespace aware.

parent 721499e8
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1863,6 +1863,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)
		struct inet6_ifaddr * ifp;
		struct in6_addr addr;
		int create = 0, update_lft = 0;
		struct net *net = dev_net(dev);

		if (pinfo->prefix_len == 64) {
			memcpy(&addr, &pinfo->prefix, 8);
@@ -1881,7 +1882,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)

ok:

		ifp = ipv6_get_ifaddr(dev_net(dev), &addr, dev, 1);
		ifp = ipv6_get_ifaddr(net, &addr, dev, 1);

		if (ifp == NULL && valid_lft) {
			int max_addresses = in6_dev->cnf.max_addresses;
@@ -1889,7 +1890,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)

#ifdef CONFIG_IPV6_OPTIMISTIC_DAD
			if (in6_dev->cnf.optimistic_dad &&
			    !ipv6_devconf.forwarding)
			    !net->ipv6.devconf_all->forwarding)
				addr_flags = IFA_F_OPTIMISTIC;
#endif

@@ -2314,11 +2315,12 @@ static void init_loopback(struct net_device *dev)
static void addrconf_add_linklocal(struct inet6_dev *idev, struct in6_addr *addr)
{
	struct inet6_ifaddr * ifp;
	struct net *net = dev_net(idev->dev);
	u32 addr_flags = IFA_F_PERMANENT;

#ifdef CONFIG_IPV6_OPTIMISTIC_DAD
	if (idev->cnf.optimistic_dad &&
	    !ipv6_devconf.forwarding)
	    !net->ipv6.devconf_all->forwarding)
		addr_flags |= IFA_F_OPTIMISTIC;
#endif

+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ int ipv6_sock_ac_join(struct sock *sk, int ifindex, struct in6_addr *addr)
	struct inet6_dev *idev;
	struct ipv6_ac_socklist *pac;
	struct net *net = sock_net(sk);
	int	ishost = !ipv6_devconf.forwarding;
	int	ishost = !net->ipv6.devconf_all->forwarding;
	int	err = 0;

	if (!capable(CAP_NET_ADMIN))
+1 −1
Original line number Diff line number Diff line
@@ -319,7 +319,7 @@ static int ipv6_rthdr_rcv(struct sk_buff *skb)
	int n, i;
	struct ipv6_rt_hdr *hdr;
	struct rt0_hdr *rthdr;
	int accept_source_route = ipv6_devconf.accept_source_route;
	int accept_source_route = dev_net(skb->dev)->ipv6.devconf_all->accept_source_route;

	idev = in6_dev_get(skb->dev);
	if (idev) {
+1 −1
Original line number Diff line number Diff line
@@ -249,7 +249,7 @@ int ip6_mc_input(struct sk_buff *skb)
	/*
	 *      IPv6 multicast router mode is now supported ;)
	 */
	if (ipv6_devconf.mc_forwarding &&
	if (dev_net(skb->dev)->ipv6.devconf_all->mc_forwarding &&
	    likely(!(IP6CB(skb)->flags & IP6SKB_FORWARDED))) {
		/*
		 * Okay, we try to forward - split and duplicate
+2 −2
Original line number Diff line number Diff line
@@ -411,7 +411,7 @@ int ip6_forward(struct sk_buff *skb)
	struct inet6_skb_parm *opt = IP6CB(skb);
	struct net *net = dev_net(dst->dev);

	if (ipv6_devconf.forwarding == 0)
	if (net->ipv6.devconf_all->forwarding == 0)
		goto error;

	if (skb_warn_if_lro(skb))
@@ -458,7 +458,7 @@ int ip6_forward(struct sk_buff *skb)
	}

	/* XXX: idev->cnf.proxy_ndp? */
	if (ipv6_devconf.proxy_ndp &&
	if (net->ipv6.devconf_all->proxy_ndp &&
	    pneigh_lookup(&nd_tbl, net, &hdr->daddr, skb->dev, 0)) {
		int proxied = ip6_forward_proxy_check(skb);
		if (proxied > 0)
Loading