diff options
author | Andrej Kozemcak <akozemca@cisco.com> | 2016-06-07 12:25:20 +0200 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2016-06-21 13:41:22 +0000 |
commit | 8ebb2a1632ccf2079cd6217af2d4045021dc3b9e (patch) | |
tree | ffe8e17141e620dc86d04ff7be8ca2b765308e21 /vnet/vnet/lisp-gpe/interface.c | |
parent | 0977e4baabd97d1de711a3d7a0f285364a84159c (diff) |
Check if LISP is enable
Lisp enable flag is enforced. DP API should not be call if the dp is disable.
Change-Id: I265cf3ea0460987f3fd5fd84b43127dd3b1c43c3
Signed-off-by: Andrej Kozemcak <akozemca@cisco.com>
Diffstat (limited to 'vnet/vnet/lisp-gpe/interface.c')
-rw-r--r-- | vnet/vnet/lisp-gpe/interface.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/vnet/vnet/lisp-gpe/interface.c b/vnet/vnet/lisp-gpe/interface.c index d52df25b550..7537962b3bc 100644 --- a/vnet/vnet/lisp-gpe/interface.c +++ b/vnet/vnet/lisp-gpe/interface.c @@ -480,7 +480,7 @@ lisp_gpe_iface_set_table (u32 sw_if_index, u32 table_id, u8 is_ip4) } } -void +int vnet_lisp_gpe_add_del_iface (vnet_lisp_gpe_add_del_iface_args_t * a, u32 * hw_if_indexp) { @@ -490,6 +490,12 @@ vnet_lisp_gpe_add_del_iface (vnet_lisp_gpe_add_del_iface_args_t * a, u32 hw_if_index = ~0, lookup_next_index4, lookup_next_index6, flen; uword * hip, * vni; + if (vnet_lisp_gpe_enable_disable_status() == 0) + { + clib_warning ("LISP is disabled!"); + return VNET_API_ERROR_LISP_DISABLED; + } + hip = hash_get(lgm->lisp_gpe_hw_if_index_by_table_id, a->table_id); if (a->is_add) @@ -497,7 +503,7 @@ vnet_lisp_gpe_add_del_iface (vnet_lisp_gpe_add_del_iface_args_t * a, if (hip) { clib_warning ("Interface for vrf %d already exists", a->table_id); - return; + return -1; } /* create hw lisp_gpeX iface if needed, otherwise reuse existing */ @@ -560,7 +566,7 @@ vnet_lisp_gpe_add_del_iface (vnet_lisp_gpe_add_del_iface_args_t * a, if (hip == 0) { clib_warning("The interface for vrf %d doesn't exist", a->table_id); - return; + return -1; } hi = vnet_get_hw_interface (vnm, hip[0]); @@ -579,6 +585,8 @@ vnet_lisp_gpe_add_del_iface (vnet_lisp_gpe_add_del_iface_args_t * a, add_del_lisp_gpe_default_route (a->table_id, /* is_v4 */1, 0); add_del_lisp_gpe_default_route (a->table_id, /* is_v4 */0, 0); } + + return 0; } static clib_error_t * @@ -587,6 +595,8 @@ lisp_gpe_add_del_iface_command_fn (vlib_main_t * vm, unformat_input_t * input, { unformat_input_t _line_input, * line_input = &_line_input; u8 is_add = 1; + clib_error_t * error = 0; + int rv = 0; u32 table_id; vnet_lisp_gpe_add_del_iface_args_t _a, * a = &_a; @@ -612,8 +622,14 @@ lisp_gpe_add_del_iface_command_fn (vlib_main_t * vm, unformat_input_t * input, a->is_add = is_add; a->table_id = table_id; - vnet_lisp_gpe_add_del_iface (a, 0); - return 0; + rv = vnet_lisp_gpe_add_del_iface (a, 0); + if (0 != rv) + { + error = clib_error_return(0, "failed to %s gpe iface!", + is_add ? "add" : "delete"); + } + + return error; } VLIB_CLI_COMMAND (add_del_lisp_gpe_iface_command, static) = { |