Hi Jon,
I see the problem in the delete path where the hash_unset() call is using the
tunnel instance instead of the user_instance of the tunnel starting at about
line 558 of vxlan.c:
vnet_delete_hw_interface (vnm, t->hw_if_index);
hash_unset (vxm->instance_used, instance);
Do you mind submit a patch to fix it, please?
Regards,
John
From: Jon Loeliger [mailto:[email protected]]
Sent: Friday, February 23, 2018 4:57 PM
To: vpp-dev <[email protected]>; John Lo (loj) <[email protected]>
Subject: VXLAN Instances Not Freed Properly?
John, et al,
I stumbled across this interesting behavior in VXLAN tunnels:
vpp# create vxlan tunnel src 1.2.3.4 dst 10.11.12.13 vni 1 instance 101
vxlan_tunnel101
vpp# create vxlan tunnel src 1.2.3.4 dst 10.11.12.13 vni 1 instance 101 del
vpp# create vxlan tunnel src 1.2.3.4 dst 10.11.12.13 vni 1 instance 101
create vxlan tunnel: Instance is in use
And note the actual interface has been removed, so 101 should be free:
vpp# show int
Name Idx State Counter Count
TenGigabitEthernet6/0/0 1 down
TenGigabitEthernet6/0/1 2 down
TenGigabitEthernet6/0/2 3 down
TenGigabitEthernet6/0/3 4 down
local0 0 down
I was pretty sure this was working, but I might have botched that patch somehow?
Any chance you stumbled into this problem?
It might be worth noting that the equivalent GRE does work:
vpp# create gre tunnel src 1.2.3.4 dst 10.11.12.13 instance 14
gre14
vpp# create gre tunnel src 1.2.3.4 dst 10.11.12.13 instance 14 del
DELETED
vpp# create gre tunnel src 1.2.3.4 dst 10.11.12.13 instance 14
gre14
I feel like this might be some typo or easy oversight in the VXLAN case.
Thanks,
jdl