From abcd4402fec44a473a19cc790a9a3f00444a123f Mon Sep 17 00:00:00 2001 From: Justin Pettit Date: Tue, 25 Jun 2013 16:40:50 -0700 Subject: [PATCH] tunnel: Only un-wildcard the ECN bits for IP traffic. With tunnels carrying IP packets, ECN bits are always inherited by the encapsulating tunnel. However, it doesn't make sense to unwildcard the inner packet's TOS fields if the packet is not IP. Found by inspection. Signed-off-by: Justin Pettit --- ofproto/tunnel.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ofproto/tunnel.c b/ofproto/tunnel.c index dedfca892..1a39aeac3 100644 --- a/ofproto/tunnel.c +++ b/ofproto/tunnel.c @@ -253,11 +253,14 @@ tnl_port_send(const struct tnl_port *tnl_port, struct flow *flow, wc->masks.nw_tos = 0xff; flow->tunnel.ip_tos = flow->nw_tos & IP_DSCP_MASK; } else { - /* ECN fields are always inherited. */ - wc->masks.nw_tos |= IP_ECN_MASK; flow->tunnel.ip_tos = cfg->tos; } + /* ECN fields are always inherited. */ + if (is_ip_any(flow)) { + wc->masks.nw_tos |= IP_ECN_MASK; + } + if ((flow->nw_tos & IP_ECN_MASK) == IP_ECN_CE) { flow->tunnel.ip_tos |= IP_ECN_ECT_0; } else { -- 2.43.0