[ovs-dev] [ECNv2 5/5] tunnel: Mark ECN status on decapsulated tunnel packets.

Ben Pfaff blp at nicira.com
Tue Mar 5 17:58:49 UTC 2013


On Mon, Mar 04, 2013 at 10:56:21PM -0800, Justin Pettit wrote:
> In the kernel tunnel implementation, if a packet was marked as ECN CE on
> the outer packet then we would carry this over to the inner packet on
> decapsulation.  With the switch to flow based tunneling, this stopped
> happening.  This commit reintroduces that behavior by using the set IP
> header action.
> 
> Bug #15072
> 
> Signed-off-by: Justin Pettit <jpettit at nicira.com>

This looks good, thanks.  I have one trivial comment.

The indentation of the && clause here looks funny to me, also there's an
extra set of () around the == clause:
>      if (is_ip_any(&ctx->base_flow)
> -        && (ctx->base_flow.tunnel.ip_tos & IP_ECN_MASK) == IP_ECN_CE
> -        && (ctx->base_flow.nw_tos & IP_ECN_MASK) == IP_ECN_NOT_ECT) {
> -        VLOG_WARN_RL(&rl, "dropping tunnel packet marked ECN CE but is not ECN"
> -                     " capable");
> -        return false;
> +            && ((ctx->base_flow.tunnel.ip_tos & IP_ECN_MASK) == IP_ECN_CE)) {
> +
> +        if ((ctx->base_flow.nw_tos & IP_ECN_MASK) == IP_ECN_NOT_ECT) {
> +            VLOG_WARN_RL(&rl, "dropping tunnel packet marked ECN CE"
> +                         " but is not ECN capable");
> +            return false;
> +        } else {
> +            /* Set the ECN CE value in the tunneled packet. */
> +            ctx->flow.nw_tos |= IP_ECN_CE;
> +        }
>      }



More information about the dev mailing list