diff options
author | Tom Herbert <therbert@google.com> | 2014-09-29 23:22:30 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-10-01 21:35:51 -0400 |
commit | 469471cdfc1902861fedafe8c5c1c8dbf5ad6ba6 (patch) | |
tree | 9761489a0fde80ede3322a7b1e1e4ebfec8305fa | |
parent | 8bce6d7d0d1ede22af334ee241841e9278365278 (diff) |
sit: Set inner IP protocol in sit
Call skb_set_inner_ipproto to set inner IP protocol to IPPROTO_IPV6
before tunnel_xmit. This is needed if UDP encapsulation (fou) is
being done.
Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/ipv6/sit.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index db75809ab843..0d4e27466f82 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c | |||
@@ -982,6 +982,8 @@ static netdev_tx_t ipip6_tunnel_xmit(struct sk_buff *skb, | |||
982 | goto tx_error; | 982 | goto tx_error; |
983 | } | 983 | } |
984 | 984 | ||
985 | skb_set_inner_ipproto(skb, IPPROTO_IPV6); | ||
986 | |||
985 | err = iptunnel_xmit(skb->sk, rt, skb, fl4.saddr, fl4.daddr, | 987 | err = iptunnel_xmit(skb->sk, rt, skb, fl4.saddr, fl4.daddr, |
986 | protocol, tos, ttl, df, | 988 | protocol, tos, ttl, df, |
987 | !net_eq(tunnel->net, dev_net(dev))); | 989 | !net_eq(tunnel->net, dev_net(dev))); |
@@ -1006,6 +1008,8 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1006 | if (IS_ERR(skb)) | 1008 | if (IS_ERR(skb)) |
1007 | goto out; | 1009 | goto out; |
1008 | 1010 | ||
1011 | skb_set_inner_ipproto(skb, IPPROTO_IPIP); | ||
1012 | |||
1009 | ip_tunnel_xmit(skb, dev, tiph, IPPROTO_IPIP); | 1013 | ip_tunnel_xmit(skb, dev, tiph, IPPROTO_IPIP); |
1010 | return NETDEV_TX_OK; | 1014 | return NETDEV_TX_OK; |
1011 | out: | 1015 | out: |