diff options
author | Eyal Bari <ebari@cisco.com> | 2016-12-21 12:45:47 +0200 |
---|---|---|
committer | Damjan Marion <dmarion.lists@gmail.com> | 2016-12-21 17:50:42 +0000 |
commit | fff67c89c5135263989c48b9ed923eb785efa67e (patch) | |
tree | baa33d7f49c49cbe18b8937b746155b102118d26 /vnet/vnet/vxlan/vxlan.h | |
parent | 4348c85b3da576936dd99e0ac6b56921dd7fd9e9 (diff) |
Support multiple VXLAN tunnels with same mcast dst
Support multiple vni's with the same group(multicast) address.
Implemented by sharing local adj. and rewrite among tunnels.
Change-Id: I8ca036b87af65dd6a8f1aff7da1855f72b4c8f4b
Signed-off-by: Eyal Bari <ebari@cisco.com>
Diffstat (limited to 'vnet/vnet/vxlan/vxlan.h')
-rw-r--r-- | vnet/vnet/vxlan/vxlan.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/vnet/vnet/vxlan/vxlan.h b/vnet/vnet/vxlan/vxlan.h index f475bbacf9d..7605d94aa98 100644 --- a/vnet/vnet/vxlan/vxlan.h +++ b/vnet/vnet/vxlan/vxlan.h @@ -138,18 +138,28 @@ typedef enum { } vxlan_input_error_t; typedef struct { + ip46_address_t ip; + fib_node_index_t fib_entry_index; + adj_index_t mcast_adj_index; +} mcast_remote_t; + +typedef struct { /* vector of encap tunnel instances */ - vxlan_tunnel_t *tunnels; + vxlan_tunnel_t * tunnels; /* lookup tunnel by key */ uword * vxlan4_tunnel_by_key; /* keyed on ipv4.dst + vni */ uword * vxlan6_tunnel_by_key; /* keyed on ipv6.dst + vni */ - /* local VTEP IPs used by vxlan-bypass node to check if received - VXLAN packet DIP matches any local VTEP address */ + /* 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 */ + /* set of active remote mcast VTEP */ + mcast_remote_t * mcast_eps; + uword * mcast_ep_by_ip; /* mcast VTEPs keyed on their ip46 addr */ + /* Free vlib hw_if_indices */ u32 * free_vxlan_tunnel_hw_if_indices; |