summaryrefslogtreecommitdiff
path: root/net/ipv6/sit.c
diff options
context:
space:
mode:
authorLionel Elie Mamane <lionel@mamane.lu>2011-08-13 14:04:38 +0000
committerDavid S. Miller <davem@davemloft.net>2011-08-16 16:28:55 -0700
commitc2bceb3d7f145af5a0916bea700f2f9d380901ea (patch)
tree90a46a5155a4d9b23791426716ec596e494f5fd7 /net/ipv6/sit.c
parent588dc91151d99e9307c2f9a8468453274fe43ecd (diff)
downloadlinux-3.10-c2bceb3d7f145af5a0916bea700f2f9d380901ea.tar.gz
linux-3.10-c2bceb3d7f145af5a0916bea700f2f9d380901ea.tar.bz2
linux-3.10-c2bceb3d7f145af5a0916bea700f2f9d380901ea.zip
sit tunnels: propagate IPv6 transport class to IPv4 Type of Service
sit tunnels (IPv6 tunnel over IPv4) do not implement the "tos inherit" case to copy the IPv6 transport class byte from the inner packet to the IPv4 type of service byte in the outer packet. By contrast, ipip tunnels and GRE tunnels do. This patch, adapted from the similar code in net/ipv4/ipip.c and net/ipv4/ip_gre.c, implements that. This patch applies to 3.0.1, and has been tested on that version. Signed-off-by: Lionel Elie Mamane <lionel@mamane.lu> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/sit.c')
-rw-r--r--net/ipv6/sit.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
index 07bf1085458..00b15ac7a70 100644
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -672,6 +672,9 @@ static netdev_tx_t ipip6_tunnel_xmit(struct sk_buff *skb,
if (skb->protocol != htons(ETH_P_IPV6))
goto tx_error;
+ if (tos == 1)
+ tos = ipv6_get_dsfield(iph6);
+
/* ISATAP (RFC4214) - must come before 6to4 */
if (dev->priv_flags & IFF_ISATAP) {
struct neighbour *neigh = NULL;