[ovs-dev] [PATCH v2] datapath-windows: Update OvsIPv4TunnelKey flags in geneve decap.

aserdean at ovn.org aserdean at ovn.org
Fri Oct 20 16:10:30 UTC 2017


Acked-by: Alin Gabriel Serdean <aserdean at ovn.org>

> -----Original Message-----
> From: ovs-dev-bounces at openvswitch.org [mailto:ovs-dev-
> bounces at openvswitch.org] On Behalf Of Anand Kumar
> Sent: Thursday, October 19, 2017 11:26 PM
> To: dev at openvswitch.org
> Subject: [ovs-dev] [PATCH v2] datapath-windows: Update
> OvsIPv4TunnelKey flags in geneve decap.
> 
> Currently, the OvsLookupFlow fails for the decap packet, when the Geneve
> options are present in the packet as the OvsIPv4TunnelKey flags are not
set
> in the Geneve decap.
> 
> Set the OvsIPv4TunnelKey flags OVS_TNL_F_OAM and
> OVS_TNL_F_CRT_OPT in OvsDecapGeneve based on the geneve header.
> Also set OVS_TNL_F_GENEVE_OPT if the packet has geneve options.
> 
> Signed-off-by: Anand Kumar <kumaranand at vmware.com>
> ---
>  datapath-windows/ovsext/Geneve.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/datapath-windows/ovsext/Geneve.c b/datapath-
> windows/ovsext/Geneve.c
> index 43374e2..6dca69b 100644
> --- a/datapath-windows/ovsext/Geneve.c
> +++ b/datapath-windows/ovsext/Geneve.c
> @@ -324,10 +324,10 @@ NDIS_STATUS
> OvsDecapGeneve(POVS_SWITCH_CONTEXT switchContext,
>          status = STATUS_NDIS_INVALID_PACKET;
>          goto dropNbl;
>      }
> -    tunKey->flags = OVS_TNL_F_KEY;
> -    if (geneveHdr->oam) {
> -        tunKey->flags |= OVS_TNL_F_OAM;
> -    }
> +    /* Update tunnelKey flags. */
> +    tunKey->flags = OVS_TNL_F_KEY | (geneveHdr->oam ?
> OVS_TNL_F_OAM : 0) |
> +                    (geneveHdr->critical ? OVS_TNL_F_CRT_OPT : 0);
> +
>      tunKey->tunnelId = GENEVE_VNI_TO_TUNNELID(geneveHdr->vni);
>      tunKey->tunOptLen = (uint8)geneveHdr->optLen * 4;
>      if (tunKey->tunOptLen > TUN_OPT_MAX_LEN || @@ -349,6 +349,7 @@
> NDIS_STATUS OvsDecapGeneve(POVS_SWITCH_CONTEXT switchContext,
>              memcpy(TunnelKeyGetOptions(tunKey), optStart, tunKey-
> >tunOptLen);
>          }
>          NdisAdvanceNetBufferDataStart(curNb, tunKey->tunOptLen, FALSE,
> NULL);
> +        tunKey->flags |= OVS_TNL_F_GENEVE_OPT;
>      }
> 
>      return NDIS_STATUS_SUCCESS;
> --
> 2.9.3.windows.1
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev



More information about the dev mailing list