diff options
author | Hannes Frederic Sowa <hannes@stressinduktion.org> | 2013-08-26 12:31:23 +0200 |
---|---|---|
committer | Steffen Klassert <steffen.klassert@secunet.com> | 2013-08-26 12:46:24 +0200 |
commit | 9c9c9ad5fae7e9ef56a38acb508a01919b225e9a (patch) | |
tree | 55be017c3c5f7dd19e8f5735188e1ca43bb6122b /net/ipv6/raw.c | |
parent | xfrm: revert ipv4 mtu determination to dst_mtu (diff) | |
download | linux-9c9c9ad5fae7e9ef56a38acb508a01919b225e9a.tar.xz linux-9c9c9ad5fae7e9ef56a38acb508a01919b225e9a.zip |
ipv6: set skb->protocol on tcp, raw and ip6_append_data genereated skbs
Currently we don't initialize skb->protocol when transmitting data via
tcp, raw(with and without inclhdr) or udp+ufo or appending data directly
to the socket transmit queue (via ip6_append_data). This needs to be
done so that we can get the correct mtu in the xfrm layer.
Setting of skb->protocol happens only in functions where we also have
a transmitting socket and a new skb, so we don't overwrite old values.
Cc: Steffen Klassert <steffen.klassert@secunet.com>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to 'net/ipv6/raw.c')
-rw-r--r-- | net/ipv6/raw.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index c45f7a5c36e9..cdaed47ba932 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -628,6 +628,7 @@ static int rawv6_send_hdrinc(struct sock *sk, void *from, int length, goto error; skb_reserve(skb, hlen); + skb->protocol = htons(ETH_P_IPV6); skb->priority = sk->sk_priority; skb->mark = sk->sk_mark; skb_dst_set(skb, &rt->dst); |