diff options
| author | David S. Miller <davem@davemloft.net> | 2011-05-03 20:25:42 -0700 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-05-03 20:25:42 -0700 | 
| commit | 31e4543db29fb85496a122b965d6482c8d1a2bfe (patch) | |
| tree | 3e49d61a1202e1b3c8c71e422f3fd8e4f2616d01 /net/ipv6 | |
| parent | f1390160ddcd64a3cfd48b3280d0a616a31b9520 (diff) | |
| download | linux-31e4543db29fb85496a122b965d6482c8d1a2bfe.tar.bz2 | |
ipv4: Make caller provide on-stack flow key to ip_route_output_ports().
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
| -rw-r--r-- | net/ipv6/ip6_tunnel.c | 5 | ||||
| -rw-r--r-- | net/ipv6/sit.c | 6 | 
2 files changed, 7 insertions, 4 deletions
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index 9dd0e964b8bd..3dff27cba95c 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c @@ -537,6 +537,7 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,  	struct sk_buff *skb2;  	const struct iphdr *eiph;  	struct rtable *rt; +	struct flowi4 fl4;  	err = ip6_tnl_err(skb, IPPROTO_IPIP, opt, &rel_type, &rel_code,  			  &rel_msg, &rel_info, offset); @@ -577,7 +578,7 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,  	eiph = ip_hdr(skb2);  	/* Try to guess incoming interface */ -	rt = ip_route_output_ports(dev_net(skb->dev), NULL, +	rt = ip_route_output_ports(dev_net(skb->dev), &fl4, NULL,  				   eiph->saddr, 0,  				   0, 0,  				   IPPROTO_IPIP, RT_TOS(eiph->tos), 0); @@ -590,7 +591,7 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,  	if (rt->rt_flags & RTCF_LOCAL) {  		ip_rt_put(rt);  		rt = NULL; -		rt = ip_route_output_ports(dev_net(skb->dev), NULL, +		rt = ip_route_output_ports(dev_net(skb->dev), &fl4, NULL,  					   eiph->daddr, eiph->saddr,  					   0, 0,  					   IPPROTO_IPIP, diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 34d896426701..a24fb14d91f3 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -674,6 +674,7 @@ static netdev_tx_t ipip6_tunnel_xmit(struct sk_buff *skb,  	struct iphdr  *iph;			/* Our new IP header */  	unsigned int max_headroom;		/* The extra header space needed */  	__be32 dst = tiph->daddr; +	struct flowi4 fl4;  	int    mtu;  	const struct in6_addr *addr6;  	int addr_type; @@ -733,7 +734,7 @@ static netdev_tx_t ipip6_tunnel_xmit(struct sk_buff *skb,  		dst = addr6->s6_addr32[3];  	} -	rt = ip_route_output_ports(dev_net(dev), NULL, +	rt = ip_route_output_ports(dev_net(dev), &fl4, NULL,  				   dst, tiph->saddr,  				   0, 0,  				   IPPROTO_IPV6, RT_TOS(tos), @@ -851,12 +852,13 @@ static void ipip6_tunnel_bind_dev(struct net_device *dev)  	struct net_device *tdev = NULL;  	struct ip_tunnel *tunnel;  	const struct iphdr *iph; +	struct flowi4 fl4;  	tunnel = netdev_priv(dev);  	iph = &tunnel->parms.iph;  	if (iph->daddr) { -		struct rtable *rt = ip_route_output_ports(dev_net(dev), NULL, +		struct rtable *rt = ip_route_output_ports(dev_net(dev), &fl4, NULL,  							  iph->daddr, iph->saddr,  							  0, 0,  							  IPPROTO_IPV6,  |