diff options
| author | Eric Dumazet <eric.dumazet@gmail.com> | 2009-06-02 05:19:30 +0000 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-06-03 02:51:04 -0700 | 
| commit | adf30907d63893e4208dfe3f5c88ae12bc2f25d5 (patch) | |
| tree | 0f07542bb95de2ad537540868aba6cf87a86e17d /net/ipv6/tcp_ipv6.c | |
| parent | 511c3f92ad5b6d9f8f6464be1b4f85f0422be91a (diff) | |
| download | olio-linux-3.10-adf30907d63893e4208dfe3f5c88ae12bc2f25d5.tar.xz olio-linux-3.10-adf30907d63893e4208dfe3f5c88ae12bc2f25d5.zip  | |
net: skb->dst accessors
Define three accessors to get/set dst attached to a skb
struct dst_entry *skb_dst(const struct sk_buff *skb)
void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)
void skb_dst_drop(struct sk_buff *skb)
This one should replace occurrences of :
dst_release(skb->dst)
skb->dst = NULL;
Delete skb->dst field
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index ea37741062a..53b6a4192b1 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -981,9 +981,10 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,  	struct tcphdr *th = tcp_hdr(skb), *t1;  	struct sk_buff *buff;  	struct flowi fl; -	struct net *net = dev_net(skb->dst->dev); +	struct net *net = dev_net(skb_dst(skb)->dev);  	struct sock *ctl_sk = net->ipv6.tcp_sk;  	unsigned int tot_len = sizeof(struct tcphdr); +	struct dst_entry *dst;  	__be32 *topt;  	if (ts) @@ -1052,8 +1053,9 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,  	 * Underlying function will use this to retrieve the network  	 * namespace  	 */ -	if (!ip6_dst_lookup(ctl_sk, &buff->dst, &fl)) { -		if (xfrm_lookup(net, &buff->dst, &fl, NULL, 0) >= 0) { +	if (!ip6_dst_lookup(ctl_sk, &dst, &fl)) { +		if (xfrm_lookup(net, &dst, &fl, NULL, 0) >= 0) { +			skb_dst_set(buff, dst);  			ip6_xmit(ctl_sk, buff, &fl, NULL, 0);  			TCP_INC_STATS_BH(net, TCP_MIB_OUTSEGS);  			if (rst)  |