X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fgbp%2Fgbp_vxlan.h;h=6e01dc14d3884e2941be243385d0836314f16baa;hb=f2984bbb0;hp=acf5f4b1c7c1584f03323d394d576cf022f43c6c;hpb=6fa5dac5fe9699c5eeed383c5bcb3f08507e1548;p=vpp.git diff --git a/src/plugins/gbp/gbp_vxlan.h b/src/plugins/gbp/gbp_vxlan.h index acf5f4b1c7c..6e01dc14d38 100644 --- a/src/plugins/gbp/gbp_vxlan.h +++ b/src/plugins/gbp/gbp_vxlan.h @@ -17,6 +17,7 @@ #define __GBP_VXLAN_H__ #include +#include #define forecah_gbp_vxlan_tunnel_layer \ _(L2, "l2") \ @@ -51,10 +52,6 @@ typedef struct gbp_vxlan_tunnel_t_ { struct { - /** - * BD index (if L2) - */ - u32 gt_bd_index; /** * Reference to the GPB-BD */ @@ -62,10 +59,6 @@ typedef struct gbp_vxlan_tunnel_t_ }; struct { - /** - * FIB inidices (if L3) - */ - u32 gt_fib_index[FIB_PROTOCOL_IP_MAX]; /** * References to the GBP-RD */ @@ -76,12 +69,17 @@ typedef struct gbp_vxlan_tunnel_t_ /** * gbp-itf config for this interface */ - index_t gt_itf; + gbp_itf_hdl_t gt_itf; /** * list of child vxlan-gbp tunnels built from this template */ index_t *gt_tuns; + + /** + * The source address to use for child tunnels + */ + ip46_address_t gt_src; } gbp_vxlan_tunnel_t; /** @@ -103,18 +101,21 @@ typedef enum gbp_vxlan_tunnel_type_t_ } gbp_vxlan_tunnel_type_t; extern int gbp_vxlan_tunnel_add (u32 vni, gbp_vxlan_tunnel_layer_t layer, - u32 bd_rd_id, u32 * sw_if_indexp); + u32 bd_rd_id, + const ip4_address_t * src, + u32 * sw_if_indexp); extern int gbp_vxlan_tunnel_del (u32 vni); extern gbp_vxlan_tunnel_type_t gbp_vxlan_tunnel_get_type (u32 sw_if_index); -extern u32 gbp_vxlan_tunnel_clone_and_lock (u32 parent_tunnel, - const ip46_address_t * src, - const ip46_address_t * dst); +extern gbp_itf_hdl_t gbp_vxlan_tunnel_clone_and_lock (u32 parent_tunnel, + const ip46_address_t * + src, + const ip46_address_t * + dst); -extern void vxlan_gbp_tunnel_lock (u32 sw_if_index); -extern void vxlan_gbp_tunnel_unlock (u32 sw_if_index); extern u32 vxlan_gbp_tunnel_get_parent (u32 sw_if_index); +extern gbp_itf_hdl_t vxlan_gbp_tunnel_lock_itf (u32 sw_if_index); typedef walk_rc_t (*gbp_vxlan_cb_t) (gbp_vxlan_tunnel_t * gt, void *ctx); extern void gbp_vxlan_walk (gbp_vxlan_cb_t cb, void *ctx);