X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fgbp%2Fgbp_recirc.h;h=2f3354b794e65837ba9d06ebbe619bb143b01c46;hb=59f71132e;hp=04a2378dcae1f1325509756882b719ce5e35eb0d;hpb=c0a93143412b4be7bba087bf633855aeeaee7c56;p=vpp.git diff --git a/src/plugins/gbp/gbp_recirc.h b/src/plugins/gbp/gbp_recirc.h index 04a2378dcae..2f3354b794e 100644 --- a/src/plugins/gbp/gbp_recirc.h +++ b/src/plugins/gbp/gbp_recirc.h @@ -17,32 +17,42 @@ #define __GBP_RECIRC_H__ #include +#include #include /** - * An Endpoint Group representation + * A GBP recirculation interface representation + * Thes interfaces join Bridge domains that are internal to those that are + * NAT external, so the packets can be NAT translated and then undergo the + * whole policy process again. */ typedef struct gpb_recirc_t_ { /** * EPG ID that packets will classify to when they arrive on this recirc */ - epg_id_t gr_epg; + sclass_t gr_sclass; + + /** + * The index of the EPG + */ + index_t gr_epgi; /** * FIB indices the EPG is mapped to */ - u32 gr_fib_index[FIB_PROTOCOL_IP_MAX]; + u32 gr_fib_index[DPO_PROTO_NUM]; /** - * Is the interface for packets post-NAT translatoin (i.e. ext) - * or pre-NAT ranslation (i.e. internal) + * Is the interface for packets post-NAT translation (i.e. ext) + * or pre-NAT translation (i.e. internal) */ u8 gr_is_ext; /** */ u32 gr_sw_if_index; + gbp_itf_hdl_t gr_itf; /** * The endpoint created to represent the reric interface @@ -50,10 +60,10 @@ typedef struct gpb_recirc_t_ index_t gr_ep; } gbp_recirc_t; -extern int gbp_recirc_add (u32 sw_if_index, epg_id_t epg_id, u8 is_ext); -extern void gbp_recirc_delete (u32 sw_if_index); +extern int gbp_recirc_add (u32 sw_if_index, sclass_t sclass, u8 is_ext); +extern int gbp_recirc_delete (u32 sw_if_index); -typedef int (*gbp_recirc_cb_t) (gbp_recirc_t * gbpe, void *ctx); +typedef walk_rc_t (*gbp_recirc_cb_t) (gbp_recirc_t * gbpe, void *ctx); extern void gbp_recirc_walk (gbp_recirc_cb_t bgpe, void *ctx); /** @@ -62,7 +72,7 @@ extern void gbp_recirc_walk (gbp_recirc_cb_t bgpe, void *ctx); extern gbp_recirc_t *gbp_recirc_pool; extern index_t *gbp_recirc_db; -always_inline const gbp_recirc_t * +always_inline gbp_recirc_t * gbp_recirc_get (u32 sw_if_index) { return (pool_elt_at_index (gbp_recirc_pool, gbp_recirc_db[sw_if_index]));