aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/svs
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2018-10-02 07:28:16 -0700
committerDamjan Marion <dmarion@me.com>2018-10-05 16:25:55 +0000
commitccc70f6c6e1f35e5103bd959ff5cdf7b4457756c (patch)
tree66c5e1216cda34dea41753602e1baa1c87350e3a /src/plugins/svs
parentf9faf2420c74fd38f96d1a78af3ec1dee9b85db1 (diff)
Source VRF Select tests
Change-Id: Id6c16462fccf890eaa0e526ad048e032c9da8800 Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/plugins/svs')
-rw-r--r--src/plugins/svs/svs.c10
-rw-r--r--src/plugins/svs/svs_api.c14
2 files changed, 15 insertions, 9 deletions
diff --git a/src/plugins/svs/svs.c b/src/plugins/svs/svs.c
index d9e46a50de8..fcfddf9523e 100644
--- a/src/plugins/svs/svs.c
+++ b/src/plugins/svs/svs.c
@@ -37,10 +37,16 @@ svs_table_add (fib_protocol_t fproto, u32 table_id)
int
svs_table_delete (fib_protocol_t fproto, u32 table_id)
{
- u32 fib_index;
+ u32 fib_index, ii;
fib_index = fib_table_find (fproto, table_id);
+ vec_foreach_index (ii, svs_itf_db[fproto])
+ {
+ if (svs_itf_db[fproto][ii] == fib_index)
+ return VNET_API_ERROR_INSTANCE_IN_USE;
+ }
+
if (~0 == fib_index)
return VNET_API_ERROR_NO_SUCH_FIB;
@@ -193,7 +199,7 @@ svs_disable (fib_protocol_t fproto, u32 table_id, u32 sw_if_index)
if (~0 == fib_index)
return VNET_API_ERROR_NO_SUCH_FIB;
- if (sw_if_index <= vec_len (svs_itf_db[fproto]))
+ if (sw_if_index >= vec_len (svs_itf_db[fproto]))
return VNET_API_ERROR_INVALID_SW_IF_INDEX;
svs_itf_db[fproto][sw_if_index] = ~0;
diff --git a/src/plugins/svs/svs_api.c b/src/plugins/svs/svs_api.c
index 8bdafc286ff..b6c8117064d 100644
--- a/src/plugins/svs/svs_api.c
+++ b/src/plugins/svs/svs_api.c
@@ -101,11 +101,11 @@ vl_api_svs_table_add_del_t_handler (vl_api_svs_table_add_del_t * mp)
if (mp->is_add)
{
- svs_table_add (fproto, ntohl (mp->table_id));
+ rv = svs_table_add (fproto, ntohl (mp->table_id));
}
else
{
- svs_table_delete (fproto, ntohl (mp->table_id));
+ rv = svs_table_delete (fproto, ntohl (mp->table_id));
}
REPLY_MACRO (VL_API_SVS_TABLE_ADD_DEL_REPLY + svs_base_msg_id);
@@ -122,9 +122,8 @@ vl_api_svs_route_add_del_t_handler (vl_api_svs_route_add_del_t * mp)
if (mp->is_add)
{
- rv =
- svs_route_add (ntohl (mp->table_id), &pfx,
- ntohl (mp->source_table_id));
+ rv = svs_route_add (ntohl (mp->table_id), &pfx,
+ ntohl (mp->source_table_id));
}
else
{
@@ -147,11 +146,12 @@ vl_api_svs_enable_disable_t_handler (vl_api_svs_enable_disable_t * mp)
if (mp->is_enable)
{
- svs_enable (fproto, ntohl (mp->table_id), ntohl (mp->sw_if_index));
+ rv = svs_enable (fproto, ntohl (mp->table_id), ntohl (mp->sw_if_index));
}
else
{
- svs_disable (fproto, ntohl (mp->table_id), ntohl (mp->sw_if_index));
+ rv =
+ svs_disable (fproto, ntohl (mp->table_id), ntohl (mp->sw_if_index));
}
BAD_SW_IF_INDEX_LABEL;