Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
On interface deletion - make sure any vlan qinq table is cleared
[vpp.git]
/
src
/
vnet
/
ethernet
/
interface.c
diff --git
a/src/vnet/ethernet/interface.c
b/src/vnet/ethernet/interface.c
index
d44a8a8
..
e0d1295
100644
(file)
--- a/
src/vnet/ethernet/interface.c
+++ b/
src/vnet/ethernet/interface.c
@@
-342,6
+342,7
@@
ethernet_delete_interface (vnet_main_t * vnm, u32 hw_if_index)
if (vlan_table->vlans[idx].qinqs)
{
pool_put_index (em->qinq_pool, vlan_table->vlans[idx].qinqs);
if (vlan_table->vlans[idx].qinqs)
{
pool_put_index (em->qinq_pool, vlan_table->vlans[idx].qinqs);
+ vlan_table->vlans[idx].qinqs = 0;
}
}
pool_put_index (em->vlan_pool, main_intf->dot1q_vlans);
}
}
pool_put_index (em->vlan_pool, main_intf->dot1q_vlans);
@@
-355,6
+356,7
@@
ethernet_delete_interface (vnet_main_t * vnm, u32 hw_if_index)
if (vlan_table->vlans[idx].qinqs)
{
pool_put_index (em->qinq_pool, vlan_table->vlans[idx].qinqs);
if (vlan_table->vlans[idx].qinqs)
{
pool_put_index (em->qinq_pool, vlan_table->vlans[idx].qinqs);
+ vlan_table->vlans[idx].qinqs = 0;
}
}
pool_put_index (em->vlan_pool, main_intf->dot1ad_vlans);
}
}
pool_put_index (em->vlan_pool, main_intf->dot1ad_vlans);