ip6_tunnel: fix traffic class routing for tunnels

[ Upstream commit 5f733ee68f ]

ip6_route_output() requires that the flowlabel contains the traffic
class for policy routing.

Commit 0e9a709560 ("ip6_tunnel, ip6_gre: fix setting of DSCP on
encapsulated packets") removed the code which previously added the
traffic class to the flowlabel.

The traffic class is added here because only route lookup needs the
flowlabel to contain the traffic class.

Fixes: 0e9a709560 ("ip6_tunnel, ip6_gre: fix setting of DSCP on encapsulated packets")
Signed-off-by: Liam McBirnie <liam.mcbirnie@boeing.com>
Acked-by: Peter Dawson <peter.a.dawson@boeing.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Liam McBirnie
2017-06-01 15:36:01 +10:00
committed by Greg Kroah-Hartman
parent 7f851311e4
commit fdd62a4286

View File

@@ -1097,6 +1097,9 @@ int ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev, __u8 dsfield,
if (!dst) {
route_lookup:
/* add dsfield to flowlabel for route lookup */
fl6->flowlabel = ip6_make_flowinfo(dsfield, fl6->flowlabel);
dst = ip6_route_output(net, NULL, fl6);
if (dst->error)