ip: Fix crash in ip address add on sub-int without exact-match 44/33444/5
authorPim van Pelt <pim@ipng.nl>
Tue, 10 Aug 2021 21:44:44 +0000 (23:44 +0200)
committerNeale Ranns <neale@graphiant.com>
Sat, 14 Aug 2021 12:05:39 +0000 (12:05 +0000)
commit76b19ceafcf892b56a679d3d7fe5c6f4b93f7de7
tree947c5d5f7dba6a2abc02ac63fc1772de5b6f0f8c
parent2a1783fd6ae7e17c994010fca414c180eb48bc40
ip: Fix crash in ip address add on sub-int without exact-match

Type: fix

Creating a sub-int without exact-match set, and subsequently adding an
IPv4 or IPv6 address will crash VPP. This fix catches this situation and
refuses to allow the caller to add an IPv4 or IPv6 address on an
ethernet sub-int that does not have exact-match set.

TESTED:
Before this change, the following crashes VPP:

```
DBGvpp# cre sub TenGigabitEthernet3/0/0 1 dot1q 10
TenGigabitEthernet3/0/0.1
DBGvpp# set interface ip address TenGigabitEthernet3/0/0.1 2001:db8::1/64
<crash>
```

After the change, VPP refuses to act:

```
DBGvpp# cre sub TenGigabitEthernet3/0/0 1 dot1q 10
TenGigabitEthernet3/0/0.1
DBGvpp# set interface ip address TenGigabitEthernet3/0/0.1 192.0.2.1/30
set interface ip address: sub-interface without exact-match doesn't support IP addressing
DBGvpp# set interface ip address TenGigabitEthernet3/0/0.1 2001:db8:1/64
set interface ip address: sub-interface without exact-match doesn't support IP addressing
```

Signed-off-by: Pim van Pelt <pim@ipng.nl>
Change-Id: I42997db314225cd186ebb54013b5717ace7f7bd6
src/vnet/interface.c
src/vnet/interface_funcs.h
src/vnet/ip/ip4_forward.c
src/vnet/ip/ip6_forward.c