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 Original line 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 inet6_ifaddr * ifp;
		struct in6_addr addr;
		struct in6_addr addr;
		int create = 0, update_lft = 0;
		int create = 0, update_lft = 0;
		struct net *net = dev_net(dev);


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


ok:
ok:


		ifp = ipv6_get_ifaddr(dev_net(dev), &addr, dev, 1);
		ifp = ipv6_get_ifaddr(net, &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;
@@ -1889,7 +1890,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)


#ifdef CONFIG_IPV6_OPTIMISTIC_DAD
#ifdef CONFIG_IPV6_OPTIMISTIC_DAD
			if (in6_dev->cnf.optimistic_dad &&
			if (in6_dev->cnf.optimistic_dad &&
			    !ipv6_devconf.forwarding)
			    !net->ipv6.devconf_all->forwarding)
				addr_flags = IFA_F_OPTIMISTIC;
				addr_flags = IFA_F_OPTIMISTIC;
#endif
#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)
static void addrconf_add_linklocal(struct inet6_dev *idev, struct in6_addr *addr)
{
{
	struct inet6_ifaddr * ifp;
	struct inet6_ifaddr * ifp;
	struct net *net = dev_net(idev->dev);
	u32 addr_flags = IFA_F_PERMANENT;
	u32 addr_flags = IFA_F_PERMANENT;


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


+1 −1
Original line number Original line 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 inet6_dev *idev;
	struct ipv6_ac_socklist *pac;
	struct ipv6_ac_socklist *pac;
	struct net *net = sock_net(sk);
	struct net *net = sock_net(sk);
	int	ishost = !ipv6_devconf.forwarding;
	int	ishost = !net->ipv6.devconf_all->forwarding;
	int	err = 0;
	int	err = 0;


	if (!capable(CAP_NET_ADMIN))
	if (!capable(CAP_NET_ADMIN))
+1 −1
Original line number Original line Diff line number Diff line
@@ -319,7 +319,7 @@ static int ipv6_rthdr_rcv(struct sk_buff *skb)
	int n, i;
	int n, i;
	struct ipv6_rt_hdr *hdr;
	struct ipv6_rt_hdr *hdr;
	struct rt0_hdr *rthdr;
	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);
	idev = in6_dev_get(skb->dev);
	if (idev) {
	if (idev) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -249,7 +249,7 @@ int ip6_mc_input(struct sk_buff *skb)
	/*
	/*
	 *      IPv6 multicast router mode is now supported ;)
	 *      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))) {
	    likely(!(IP6CB(skb)->flags & IP6SKB_FORWARDED))) {
		/*
		/*
		 * Okay, we try to forward - split and duplicate
		 * Okay, we try to forward - split and duplicate
+2 −2
Original line number Original line Diff line number Diff line
@@ -411,7 +411,7 @@ int ip6_forward(struct sk_buff *skb)
	struct inet6_skb_parm *opt = IP6CB(skb);
	struct inet6_skb_parm *opt = IP6CB(skb);
	struct net *net = dev_net(dst->dev);
	struct net *net = dev_net(dst->dev);


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


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


	/* XXX: idev->cnf.proxy_ndp? */
	/* 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)) {
	    pneigh_lookup(&nd_tbl, net, &hdr->daddr, skb->dev, 0)) {
		int proxied = ip6_forward_proxy_check(skb);
		int proxied = ip6_forward_proxy_check(skb);
		if (proxied > 0)
		if (proxied > 0)
Loading