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

Commit 606a2b48 authored by Daniel Lezcano's avatar Daniel Lezcano Committed by David S. Miller
Browse files

[NETNS][IPV6] route6 - Pass the network namespace parameter to rt6_lookup



Add a network namespace parameter to rt6_lookup().

Signed-off-by: default avatarDaniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: default avatarBenjamin Thery <benjamin.thery@bull.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cdb18761
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -69,7 +69,8 @@ extern void rt6_sndmsg(int type, struct in6_addr *dst,
					   int dstlen, int srclen,
					   int dstlen, int srclen,
					   int metric, __u32 flags);
					   int metric, __u32 flags);


extern struct rt6_info		*rt6_lookup(struct in6_addr *daddr,
extern struct rt6_info		*rt6_lookup(struct net *net,
					    struct in6_addr *daddr,
					    struct in6_addr *saddr,
					    struct in6_addr *saddr,
					    int oif, int flags);
					    int oif, int flags);


+2 −2
Original line number Original line Diff line number Diff line
@@ -753,7 +753,7 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
		struct rt6_info *rt;
		struct rt6_info *rt;


		ipv6_addr_prefix(&prefix, &ifp->addr, ifp->prefix_len);
		ipv6_addr_prefix(&prefix, &ifp->addr, ifp->prefix_len);
		rt = rt6_lookup(&prefix, NULL, ifp->idev->dev->ifindex, 1);
		rt = rt6_lookup(&init_net, &prefix, NULL, ifp->idev->dev->ifindex, 1);


		if (rt && ((rt->rt6i_flags & (RTF_GATEWAY | RTF_DEFAULT)) == 0)) {
		if (rt && ((rt->rt6i_flags & (RTF_GATEWAY | RTF_DEFAULT)) == 0)) {
			if (onlink == 0) {
			if (onlink == 0) {
@@ -1700,7 +1700,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(&pinfo->prefix, NULL, dev->ifindex, 1);
		rt = rt6_lookup(&init_net, &pinfo->prefix, NULL, dev->ifindex, 1);


		if (rt && ((rt->rt6i_flags & (RTF_GATEWAY | RTF_DEFAULT)) == 0)) {
		if (rt && ((rt->rt6i_flags & (RTF_GATEWAY | RTF_DEFAULT)) == 0)) {
			if (rt->rt6i_flags&RTF_EXPIRES) {
			if (rt->rt6i_flags&RTF_EXPIRES) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -101,7 +101,7 @@ int ipv6_sock_ac_join(struct sock *sk, int ifindex, struct in6_addr *addr)
	if (ifindex == 0) {
	if (ifindex == 0) {
		struct rt6_info *rt;
		struct rt6_info *rt;


		rt = rt6_lookup(addr, NULL, 0, 0);
		rt = rt6_lookup(&init_net, addr, NULL, 0, 0);
		if (rt) {
		if (rt) {
			dev = rt->rt6i_dev;
			dev = rt->rt6i_dev;
			dev_hold(dev);
			dev_hold(dev);
+2 −2
Original line number Original line Diff line number Diff line
@@ -602,7 +602,7 @@ ip6ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
		skb_reset_network_header(skb2);
		skb_reset_network_header(skb2);


		/* Try to guess incoming interface */
		/* Try to guess incoming interface */
		rt = rt6_lookup(&ipv6_hdr(skb2)->saddr, NULL, 0, 0);
		rt = rt6_lookup(&init_net, &ipv6_hdr(skb2)->saddr, NULL, 0, 0);


		if (rt && rt->rt6i_dev)
		if (rt && rt->rt6i_dev)
			skb2->dev = rt->rt6i_dev;
			skb2->dev = rt->rt6i_dev;
@@ -1112,7 +1112,7 @@ static void ip6_tnl_link_config(struct ip6_tnl *t)
		int strict = (ipv6_addr_type(&p->raddr) &
		int strict = (ipv6_addr_type(&p->raddr) &
			      (IPV6_ADDR_MULTICAST|IPV6_ADDR_LINKLOCAL));
			      (IPV6_ADDR_MULTICAST|IPV6_ADDR_LINKLOCAL));


		struct rt6_info *rt = rt6_lookup(&p->raddr, &p->laddr,
		struct rt6_info *rt = rt6_lookup(&init_net, &p->raddr, &p->laddr,
						 p->link, strict);
						 p->link, strict);


		if (rt == NULL)
		if (rt == NULL)
+2 −2
Original line number Original line Diff line number Diff line
@@ -208,7 +208,7 @@ int ipv6_sock_mc_join(struct sock *sk, int ifindex, struct in6_addr *addr)


	if (ifindex == 0) {
	if (ifindex == 0) {
		struct rt6_info *rt;
		struct rt6_info *rt;
		rt = rt6_lookup(addr, NULL, 0, 0);
		rt = rt6_lookup(&init_net, addr, NULL, 0, 0);
		if (rt) {
		if (rt) {
			dev = rt->rt6i_dev;
			dev = rt->rt6i_dev;
			dev_hold(dev);
			dev_hold(dev);
@@ -294,7 +294,7 @@ static struct inet6_dev *ip6_mc_find_dev(struct in6_addr *group, int ifindex)
	if (ifindex == 0) {
	if (ifindex == 0) {
		struct rt6_info *rt;
		struct rt6_info *rt;


		rt = rt6_lookup(group, NULL, 0, 0);
		rt = rt6_lookup(&init_net, group, NULL, 0, 0);
		if (rt) {
		if (rt) {
			dev = rt->rt6i_dev;
			dev = rt->rt6i_dev;
			dev_hold(dev);
			dev_hold(dev);
Loading