diff options
author | Neale Ranns <nranns@cisco.com> | 2019-01-21 23:34:18 -0800 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2019-01-22 14:37:51 +0000 |
commit | 879d11c250a4710759ddefe22afd7fc05bda2946 (patch) | |
tree | 86f1984cf7324e05d8b100f9201ea69df83edc56 /src/plugins/gbp/gbp_endpoint_group.c | |
parent | 03ae24b97498bcc9265d4650efe3ddaa5e1d3255 (diff) |
GBP: Sclass to src-epg conversions
Change-Id: Ica88268fd6a6ee01da7e9219bb4e81f22ed2fd4b
Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/plugins/gbp/gbp_endpoint_group.c')
-rw-r--r-- | src/plugins/gbp/gbp_endpoint_group.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/plugins/gbp/gbp_endpoint_group.c b/src/plugins/gbp/gbp_endpoint_group.c index 834f865bc92..cefdbea3652 100644 --- a/src/plugins/gbp/gbp_endpoint_group.c +++ b/src/plugins/gbp/gbp_endpoint_group.c @@ -33,6 +33,12 @@ gbp_endpoint_group_t *gbp_endpoint_group_pool; * DB of endpoint_groups */ gbp_endpoint_group_db_t gbp_endpoint_group_db; + +/** + * Map sclass to EPG + */ +uword *gbp_epg_sclass_db; + vlib_log_class_t gg_logger; #define GBP_EPG_DBG(...) \ @@ -68,6 +74,7 @@ gbp_endpoint_group_find (epg_id_t epg_id) int gbp_endpoint_group_add_and_lock (epg_id_t epg_id, + u16 sclass, u32 bd_id, u32 rd_id, u32 uplink_sw_if_index) { gbp_endpoint_group_t *gg; @@ -105,6 +112,10 @@ gbp_endpoint_group_add_and_lock (epg_id_t epg_id, gg->gg_uplink_sw_if_index = uplink_sw_if_index; gg->gg_locks = 1; + gg->gg_sclass = sclass; + + if (SCLASS_INVALID != gg->gg_sclass) + hash_set (gbp_epg_sclass_db, gg->gg_sclass, gg->gg_id); /* * an egress DVR dpo for internal subnets to use when sending @@ -179,6 +190,8 @@ gbp_endpoint_group_unlock (index_t ggi) gbp_bridge_domain_unlock (gg->gg_gbd); gbp_route_domain_unlock (gg->gg_rd); + if (SCLASS_INVALID != gg->gg_sclass) + hash_unset (gbp_epg_sclass_db, gg->gg_sclass); hash_unset (gbp_endpoint_group_db.gg_hash, gg->gg_id); pool_put (gbp_endpoint_group_pool, gg); @@ -243,8 +256,8 @@ static clib_error_t * gbp_endpoint_group_cli (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { + epg_id_t epg_id = EPG_INVALID, sclass; vnet_main_t *vnm = vnet_get_main (); - epg_id_t epg_id = EPG_INVALID; u32 uplink_sw_if_index = ~0; u32 bd_id = ~0; u32 rd_id = ~0; @@ -261,6 +274,8 @@ gbp_endpoint_group_cli (vlib_main_t * vm, add = 0; else if (unformat (input, "epg %d", &epg_id)) ; + else if (unformat (input, "sclass %d", &sclass)) + ; else if (unformat (input, "bd %d", &bd_id)) ; else if (unformat (input, "rd %d", &rd_id)) @@ -281,7 +296,7 @@ gbp_endpoint_group_cli (vlib_main_t * vm, if (~0 == rd_id) return clib_error_return (0, "route-domain must be specified"); - gbp_endpoint_group_add_and_lock (epg_id, bd_id, rd_id, + gbp_endpoint_group_add_and_lock (epg_id, sclass, bd_id, rd_id, uplink_sw_if_index); } else |