diff options
author | Florin Coras <florin.coras@gmail.com> | 2017-10-15 17:41:21 +0000 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2017-10-15 18:28:43 +0000 |
commit | d0a59722135ec77e637097ef99edb6865bc38929 (patch) | |
tree | b29d413e86361f682a79f5c372c942256b90fde2 /src/vnet/interface_api.c | |
parent | 46ade031466e0ee863668fd24981183e467d552f (diff) |
Revert "Enforce FIB table creation before use"
This reverts commit f9342023c19887da656133e2688a90d70383b0c5.
Reverting to unblock master. No idea why jjb +1ed this patch! On closer inspection it looks like it -1ed it and subsequently changed opinion. CSIT tests should be fixed before re-merging.
Change-Id: I26608912a962c52083073e16c7c9d2cc44a3cc8d
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/interface_api.c')
-rw-r--r-- | src/vnet/interface_api.c | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/src/vnet/interface_api.c b/src/vnet/interface_api.c index ee13135f086..c19f0a84297 100644 --- a/src/vnet/interface_api.c +++ b/src/vnet/interface_api.c @@ -365,14 +365,6 @@ ip_table_bind (fib_protocol_t fproto, fib_source_t src; mfib_source_t msrc; - fib_index = fib_table_find (fproto, table_id); - mfib_index = mfib_table_find (fproto, table_id); - - if (~0 == fib_index || ~0 == mfib_index) - { - return (VNET_API_ERROR_NO_SUCH_FIB); - } - if (is_api) { src = FIB_SOURCE_API; @@ -384,6 +376,32 @@ ip_table_bind (fib_protocol_t fproto, msrc = MFIB_SOURCE_CLI; } + /* + * This is temporary whilst I do the song and dance with the CSIT version + */ + if (0 != table_id) + { + fib_index = fib_table_find_or_create_and_lock (fproto, table_id, src); + mfib_index = + mfib_table_find_or_create_and_lock (fproto, table_id, msrc); + } + else + { + fib_index = 0; + mfib_index = 0; + } + + /* + * This if table does not exist = error is what we want in the end. + */ + /* fib_index = fib_table_find (fproto, table_id); */ + /* mfib_index = mfib_table_find (fproto, table_id); */ + + /* if (~0 == fib_index || ~0 == mfib_index) */ + /* { */ + /* return (VNET_API_ERROR_NO_SUCH_FIB); */ + /* } */ + if (FIB_PROTOCOL_IP6 == fproto) { /* @@ -490,6 +508,15 @@ ip_table_bind (fib_protocol_t fproto, ip4_main.mfib_index_by_sw_if_index[sw_if_index] = mfib_index; } + /* + * Temporary. undo the locks from the find and create at the staart + */ + if (0 != table_id) + { + fib_table_unlock (fib_index, fproto, src); + mfib_table_unlock (mfib_index, fproto, msrc); + } + return (0); } |