gre: fix ToS/DiffServ inherit bug
authorAndreas Jaggi <aj@open.ch>
Tue, 14 Jul 2009 16:35:59 +0000 (09:35 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Jul 2009 16:35:59 +0000 (09:35 -0700)
Fixes two bugs:
- ToS/DiffServ inheritance was unintentionally activated when using impair fixed ToS values
- ECN bit was lost during ToS/DiffServ inheritance

Signed-off-by: Andreas Jaggi <aj@open.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_gre.c

index 44e2a3d..cb4a0f4 100644 (file)
@@ -735,10 +735,10 @@ static int ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
        }
 
        tos = tiph->tos;
-       if (tos&1) {
+       if (tos == 1) {
+               tos = 0;
                if (skb->protocol == htons(ETH_P_IP))
                        tos = old_iph->tos;
-               tos &= ~1;
        }
 
        {