X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vnet%2Fvnet%2Fl2%2Fl2_bd.c;h=0676a2869a2f36d7d6296095883b6a84aa8be885;hb=530bd8e1e68973c0b0f67e60c5520d32bb2628ad;hp=24f96d5749cd92dd0e0de81f5e8c2547a4373eb4;hpb=cb9cadad578297ffd78fa8a33670bdf1ab669e7e;p=vpp.git diff --git a/vnet/vnet/l2/l2_bd.c b/vnet/vnet/l2/l2_bd.c index 24f96d5749c..0676a2869a2 100644 --- a/vnet/vnet/l2/l2_bd.c +++ b/vnet/vnet/l2/l2_bd.c @@ -36,7 +36,7 @@ bd_main_t bd_main; // Init bridge domain if not done already // For feature bitmap, set all bits except ARP termination -inline void +void bd_validate (l2_bridge_domain_t * bd_config) { if (!bd_is_valid (bd_config)) { @@ -54,9 +54,15 @@ u32 bd_find_or_add_bd_index (bd_main_t * bdm, u32 bd_id) uword * p; u32 rv; - p = hash_get (bdm->bd_index_by_bd_id, bd_id); - if (p) - return (p[0]); + if (bd_id == ~0) { + bd_id = 0; + while (hash_get (bdm->bd_index_by_bd_id, bd_id)) + bd_id++; + } else { + p = hash_get (bdm->bd_index_by_bd_id, bd_id); + if (p) + return (p[0]); + } rv = clib_bitmap_first_clear (bdm->bd_index_bitmap);