diff options
Diffstat (limited to 'net/ipv6/ip6_output.c')
| -rw-r--r-- | net/ipv6/ip6_output.c | 16 | 
1 files changed, 8 insertions, 8 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 46cf7bea676..4cfbb24b9e0 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -869,9 +869,9 @@ fail:  	return err;  } -static inline int ip6_rt_check(struct rt6key *rt_key, -			       struct in6_addr *fl_addr, -			       struct in6_addr *addr_cache) +static inline int ip6_rt_check(const struct rt6key *rt_key, +			       const struct in6_addr *fl_addr, +			       const struct in6_addr *addr_cache)  {  	return (rt_key->plen != 128 || !ipv6_addr_equal(fl_addr, &rt_key->addr)) &&  		(addr_cache == NULL || !ipv6_addr_equal(fl_addr, addr_cache)); @@ -879,7 +879,7 @@ static inline int ip6_rt_check(struct rt6key *rt_key,  static struct dst_entry *ip6_sk_dst_check(struct sock *sk,  					  struct dst_entry *dst, -					  struct flowi6 *fl6) +					  const struct flowi6 *fl6)  {  	struct ipv6_pinfo *np = inet6_sk(sk);  	struct rt6_info *rt = (struct rt6_info *)dst; @@ -930,10 +930,10 @@ static int ip6_dst_lookup_tail(struct sock *sk,  		goto out_err_release;  	if (ipv6_addr_any(&fl6->saddr)) { -		err = ipv6_dev_get_saddr(net, ip6_dst_idev(*dst)->dev, -					 &fl6->daddr, -					 sk ? inet6_sk(sk)->srcprefs : 0, -					 &fl6->saddr); +		struct rt6_info *rt = (struct rt6_info *) *dst; +		err = ip6_route_get_saddr(net, rt, &fl6->daddr, +					  sk ? inet6_sk(sk)->srcprefs : 0, +					  &fl6->saddr);  		if (err)  			goto out_err_release;  	}  |