Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Prevent Bridge Domain operations on BD 0.
[vpp.git]
/
src
/
vnet
/
l2
/
l2_bd.c
diff --git
a/src/vnet/l2/l2_bd.c
b/src/vnet/l2/l2_bd.c
index
7c55789
..
4ebbb54
100644
(file)
--- a/
src/vnet/l2/l2_bd.c
+++ b/
src/vnet/l2/l2_bd.c
@@
-304,6
+304,10
@@
bd_learn (vlib_main_t * vm,
goto done;
}
goto done;
}
+ if (bd_id == 0)
+ return clib_error_return (0,
+ "No operations on the default bridge domain are supported");
+
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p == 0)
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p == 0)
@@
-369,6
+373,10
@@
bd_fwd (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd)
goto done;
}
goto done;
}
+ if (bd_id == 0)
+ return clib_error_return (0,
+ "No operations on the default bridge domain are supported");
+
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p == 0)
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p == 0)
@@
-436,6
+444,10
@@
bd_flood (vlib_main_t * vm,
goto done;
}
goto done;
}
+ if (bd_id == 0)
+ return clib_error_return (0,
+ "No operations on the default bridge domain are supported");
+
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p == 0)
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p == 0)
@@
-502,6
+514,10
@@
bd_uu_flood (vlib_main_t * vm,
goto done;
}
goto done;
}
+ if (bd_id == 0)
+ return clib_error_return (0,
+ "No operations on the default bridge domain are supported");
+
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p == 0)
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p == 0)
@@
-568,6
+584,10
@@
bd_arp_term (vlib_main_t * vm,
goto done;
}
goto done;
}
+ if (bd_id == 0)
+ return clib_error_return (0,
+ "No operations on the default bridge domain are supported");
+
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p)
bd_index = *p;
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p)
bd_index = *p;
@@
-607,6
+627,10
@@
bd_mac_age (vlib_main_t * vm,
goto done;
}
goto done;
}
+ if (bd_id == 0)
+ return clib_error_return (0,
+ "No operations on the default bridge domain are supported");
+
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p == 0)
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p == 0)
@@
-780,6
+804,10
@@
bd_arp_entry (vlib_main_t * vm,
goto done;
}
goto done;
}
+ if (bd_id == 0)
+ return clib_error_return (0,
+ "No operations on the default bridge domain are supported");
+
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p)
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p)
@@
-900,7
+928,7
@@
bd_show (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd)
u32 bd_id = ~0;
uword *p;
u32 bd_id = ~0;
uword *p;
- start =
0
;
+ start =
1
;
end = vec_len (l2input_main.bd_configs);
if (unformat (input, "%d", &bd_id))
end = vec_len (l2input_main.bd_configs);
if (unformat (input, "%d", &bd_id))
@@
-914,6
+942,10
@@
bd_show (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd)
if (unformat (input, "arp"))
arp = 1;
if (unformat (input, "arp"))
arp = 1;
+ if (bd_id == 0)
+ return clib_error_return (0,
+ "No operations on the default bridge domain are supported");
+
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p)
bd_index = *p;
p = hash_get (bdm->bd_index_by_bd_id, bd_id);
if (p)
bd_index = *p;
@@
-1125,6
+1157,8
@@
bd_add_del (l2_bridge_domain_add_del_args_t * a)
{
if (bd_index == ~0)
return VNET_API_ERROR_NO_SUCH_ENTRY;
{
if (bd_index == ~0)
return VNET_API_ERROR_NO_SUCH_ENTRY;
+ if (bd_index == 0)
+ return VNET_API_ERROR_BD_NOT_MODIFIABLE;
if (vec_len (l2input_main.bd_configs[bd_index].members))
return VNET_API_ERROR_BD_IN_USE;
rv = bd_delete (bdm, bd_index);
if (vec_len (l2input_main.bd_configs[bd_index].members))
return VNET_API_ERROR_BD_IN_USE;
rv = bd_delete (bdm, bd_index);
@@
-1188,6
+1222,12
@@
bd_add_del_command_fn (vlib_main_t * vm, unformat_input_t * input,
goto done;
}
goto done;
}
+ if (bd_id == 0)
+ {
+ error = clib_error_return (0, "bridge domain 0 can not be modified");
+ goto done;
+ }
+
if (mac_age > 255)
{
error = clib_error_return (0, "mac age must be less than 256");
if (mac_age > 255)
{
error = clib_error_return (0, "mac age must be less than 256");
@@
-1218,6
+1258,9
@@
bd_add_del_command_fn (vlib_main_t * vm, unformat_input_t * input,
case VNET_API_ERROR_NO_SUCH_ENTRY:
error = clib_error_return (0, "bridge domain id does not exist");
goto done;
case VNET_API_ERROR_NO_SUCH_ENTRY:
error = clib_error_return (0, "bridge domain id does not exist");
goto done;
+ case VNET_API_ERROR_BD_NOT_MODIFIABLE:
+ error = clib_error_return (0, "bridge domain 0 can not be modified");
+ goto done;
default:
error = clib_error_return (0, "bd_add_del returned %d", rv);
goto done;
default:
error = clib_error_return (0, "bd_add_del returned %d", rv);
goto done;