VPP-69: Create fib or bridge domain with arbitrary ID
[vpp.git] / vnet / vnet / l2 / l2_bd.c
index 24f96d5..0676a28 100644 (file)
@@ -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);