diff options
author | Jon Loeliger <jdl@netgate.com> | 2017-09-28 13:54:16 -0500 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2017-10-03 10:15:53 +0000 |
commit | 35ffa3e8f6b032f6e324234d495f769049d8feea (patch) | |
tree | 877225cf1f8997501e2dd1efdaf011fdedb7d95f /src/vnet/ip | |
parent | e2efd12b8418558cd8e701368287860409e8d265 (diff) |
Propagate duplicate IF addr add/del error up to API.
Identify and complain when the same IP prefix is assigned
to two different SW interfaces:
vpp# set int ip address TenGigabitEthernet6/0/0 1.2.3.4/32
vpp# set int ip address TenGigabitEthernet6/0/1 1.2.3.4/32
set interface ip address: Prefix 1.2.3.4/32 already found on
interface TenGigabitEthernet6/0/0
Change-Id: I1aee1b6a7ddd00d3109a53d8e1b6ce97bf45e372
Signed-off-by: Jon Loeliger <jdl@netgate.com>
Diffstat (limited to 'src/vnet/ip')
-rw-r--r--[-rwxr-xr-x] | src/vnet/ip/lookup.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/vnet/ip/lookup.c b/src/vnet/ip/lookup.c index d9922f46453..856c4942ea4 100755..100644 --- a/src/vnet/ip/lookup.c +++ b/src/vnet/ip/lookup.c @@ -165,11 +165,21 @@ ip_interface_address_add_del (ip_lookup_main_t * lm, } else { + if (sw_if_index != a->sw_if_index) + { + if (result_if_address_index) + *result_if_address_index = ~0; + vnm->api_errno = VNET_API_ERROR_DUPLICATE_IF_ADDRESS; + return clib_error_create + ("Prefix %U already found on interface %U", + lm->format_address_and_length, addr_fib, address_length, + format_vnet_sw_if_index_name, vnm, a->sw_if_index); + } + if (result_if_address_index) *result_if_address_index = a - lm->if_address_pool; } - return /* no error */ 0; } |