X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fgbp%2Fgbp_recirc.h;h=3af77b42b4b39b03efa608d77a21101365183b78;hb=47feb1146ec3b0e1cf2ebd83cd5211e1df261194;hp=10f3da631c1b3e11d4207fffd400b299a2aa574c;hpb=25b049484fcf9161edb2c19250066b893c38c264;p=vpp.git diff --git a/src/plugins/gbp/gbp_recirc.h b/src/plugins/gbp/gbp_recirc.h index 10f3da631c1..3af77b42b4b 100644 --- a/src/plugins/gbp/gbp_recirc.h +++ b/src/plugins/gbp/gbp_recirc.h @@ -20,36 +20,49 @@ #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; + u32 gr_itf; + /** + * The endpoint created to represent the reric interface + */ + 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); /** @@ -58,7 +71,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]));