X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fgbp%2Fgbp_endpoint.h;h=3155e7be4e01555cb80983d9279f058ab0962964;hb=59f71132e;hp=4b4c2e0b627b291513f87b16caabc6ec21a603aa;hpb=b6a47953973f7c94239c394b649100e91bdb2152;p=vpp.git diff --git a/src/plugins/gbp/gbp_endpoint.h b/src/plugins/gbp/gbp_endpoint.h index 4b4c2e0b627..3155e7be4e0 100644 --- a/src/plugins/gbp/gbp_endpoint.h +++ b/src/plugins/gbp/gbp_endpoint.h @@ -17,6 +17,7 @@ #define __GBP_ENDPOINT_H__ #include +#include #include #include @@ -58,11 +59,13 @@ extern u8 *format_gbp_endpoint_flags (u8 * s, va_list * args); /** * Sources of Endpoints in priority order. The best (lowest value) source - * provides the forwarding information + * provides the forwarding information. + * Data-plane takes preference because the CP data is not always complete, + * it may not have the sclass. */ #define foreach_gbp_endpoint_src \ - _(CP, "control-plane") \ _(DP, "data-plane") \ + _(CP, "control-plane") \ _(RR, "recursive-resolution") typedef enum gbp_endpoint_src_t_ @@ -120,7 +123,7 @@ typedef struct gbp_endpoint_loc_t_ /** * The interface on which the EP is connected */ - u32 gel_sw_if_index; + gbp_itf_hdl_t gel_itf; /** * Endpoint flags @@ -156,7 +159,7 @@ typedef struct gbp_endpoint_fwd_t_ /** * The interface on which the EP is connected */ - index_t gef_itf; + gbp_itf_hdl_t gef_itf; /** * The L3 adj, if created @@ -164,9 +167,14 @@ typedef struct gbp_endpoint_fwd_t_ index_t *gef_adjs; /** - * Endpoint Group's ID. cached for fast DP access. + * Endpoint Group's sclass. cached for fast DP access. + */ + sclass_t gef_sclass; + + /** + * FIB index the EP is in */ - epg_id_t gef_epg_id; + u32 gef_fib_index; gbp_endpoint_flags_t gef_flags; } gbp_endpoint_fwd_t; @@ -222,7 +230,7 @@ extern int gbp_endpoint_update_and_lock (gbp_endpoint_src_t src, const ip46_address_t * ip, const mac_address_t * mac, index_t gbd, index_t grd, - epg_id_t epg_id, + sclass_t sclass, gbp_endpoint_flags_t flags, const ip46_address_t * tun_src, const ip46_address_t * tun_dst, @@ -236,7 +244,6 @@ extern void gbp_endpoint_child_remove (index_t gei, u32 sibling); typedef walk_rc_t (*gbp_endpoint_cb_t) (index_t gbpei, void *ctx); extern void gbp_endpoint_walk (gbp_endpoint_cb_t cb, void *ctx); extern void gbp_endpoint_scan (vlib_main_t * vm); -extern f64 gbp_endpoint_scan_threshold (void); extern int gbp_endpoint_is_remote (const gbp_endpoint_t * ge); extern int gbp_endpoint_is_local (const gbp_endpoint_t * ge); extern int gbp_endpoint_is_external (const gbp_endpoint_t * ge);