On 26/02/2018 15:09, Xueming Li wrote:
Should we define the VXLAN-GPE protocol and related macros in a separate file (say lib/librte_net/rte_vxlan_gpe.h)? I can see that VXLAN header also defined in the rte_ether.h file but we should consider moving that VXLAN definition in a separate header file (rte_vxlan.h) as well.diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h index 45daa91..fe02ad8 100644 --- a/lib/librte_net/rte_ether.h +++ b/lib/librte_net/rte_ether.h @@ -310,6 +310,31 @@ struct vxlan_hdr { /**< VXLAN tunnel header length. *//**+ * VXLAN-GPE protocol header. + * Contains the 8-bit flag, 8-bit next-protocol, 24-bit VXLAN Network + * Identifier and Reserved fields (16 bits and 8 bits). + */ +struct vxlan_gpe_hdr { + uint8_t vx_flags; /**< flag (8). */ + uint8_t reserved[2]; /**< Reserved (16). */ + uint8_t proto; /**< next-protocol (8). */ + uint32_t vx_vni; /**< VNI (24) + Reserved (8). */ +} __attribute__((__packed__)); + +/* VXLAN-GPE next protocol types */ +#define VXLAN_GPE_TYPE_IPv4 1 /**< IPv4 Protocol. */ +#define VXLAN_GPE_TYPE_IPv6 2 /**< IPv6 Protocol. */ +#define VXLAN_GPE_TYPE_ETH 3 /**< Ethernet Protocol. */ +#define VXLAN_GPE_TYPE_NSH 4 /**< NSH Protocol. */ +#define VXLAN_GPE_TYPE_MPLS 5 /**< MPLS Protocol. */ +#define VXLAN_GPE_TYPE_GBP 6 /**< GBP Protocol. */ +#define VXLAN_GPE_TYPE_VBNG 7 /**< vBNG Protocol. */ + +#define ETHER_VXLAN_GPE_HLEN (sizeof(struct udp_hdr) + \ + sizeof(struct vxlan_gpe_hdr)) +/**< VXLAN-GPE tunnel header length. */ + +/** * Extract VLAN tag information into mbuf * * Software version of VLAN stripping
Regards, Awal.

