X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fvxlan%2Fvxlan.h;h=772c9d77c93141966073609006facccccd012149;hb=e5d34919b4561a5ee11e41dec6b0184537b39696;hp=2c309bb8242d211378ff873e6bab2bf2bacd929c;hpb=a5679e86af3d06df46edbf2654d48103e05c4b48;p=vpp.git diff --git a/src/vnet/vxlan/vxlan.h b/src/vnet/vxlan/vxlan.h index 2c309bb8242..772c9d77c93 100644 --- a/src/vnet/vxlan/vxlan.h +++ b/src/vnet/vxlan/vxlan.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -59,6 +60,24 @@ typedef clib_bihash_kv_16_8_t vxlan4_tunnel_key_t; */ typedef clib_bihash_kv_24_8_t vxlan6_tunnel_key_t; +typedef union +{ + struct + { + u32 sw_if_index; /* unicast - input interface / mcast - stats interface */ + union + { + struct /* unicast action */ + { + u16 next_index; + u8 error; + }; + ip4_address_t local_ip; /* used as dst ip for mcast pkts to assign them to unicast tunnel */ + }; + }; + u64 as_u64; +} vxlan_decap_info_t; + typedef struct { /* Required for pool_get_aligned */ @@ -100,7 +119,7 @@ typedef struct adj_index_t mcast_adj_index; /** - * The tunnel is a child of the FIB entry for its desintion. This is + * The tunnel is a child of the FIB entry for its destination. This is * so it receives updates when the forwarding information for that entry * changes. * The tunnels sibling index on the FIB entry's dependency list. @@ -111,7 +130,7 @@ typedef struct u32 dev_instance; /* Real device instance in tunnel vector */ u32 user_instance; /* Instance name being shown to user */ - vnet_declare_rewrite (VLIB_BUFFER_PRE_DATA_SIZE); + VNET_DECLARE_REWRITE; } vxlan_tunnel_t; #define foreach_vxlan_input_next \ @@ -145,8 +164,7 @@ typedef struct /* local VTEP IPs ref count used by vxlan-bypass node to check if received VXLAN packet DIP matches any local VTEP address */ - uword *vtep4; /* local ip4 VTEPs keyed on their ip4 addr */ - uword *vtep6; /* local ip6 VTEPs keyed on their ip6 addr */ + vtep_table_t vtep_table; /* mcast shared info */ uword *mcast_shared; /* keyed on mcast ip46 addr */ @@ -154,6 +172,10 @@ typedef struct /* Mapping from sw_if_index to tunnel index */ u32 *tunnel_index_by_sw_if_index; + /* graph node state */ + uword *bm_ip4_bypass_enabled_by_sw_if; + uword *bm_ip6_bypass_enabled_by_sw_if; + /* convenience */ vlib_main_t *vlib_main; vnet_main_t *vnet_main; @@ -178,7 +200,7 @@ typedef struct u8 is_add; /* we normally use is_ip4, but since this adds to the - * structure, this seems less of abreaking change */ + * structure, this seems less of a breaking change */ u8 is_ip6; u32 instance; ip46_address_t src, dst;