X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fethernet%2Farp.c;h=13b718d4c627edab34b29d8c769a36848acb246f;hb=18934e6d2b3b0b9dad286bd83cc42c66a7160284;hp=549e05d889c357aea0a32b49fd87bcddb2f42466;hpb=349f8caa054a656973e0b841c3ece75561ebf2f7;p=vpp.git diff --git a/src/vnet/ethernet/arp.c b/src/vnet/ethernet/arp.c index 549e05d889c..13b718d4c62 100644 --- a/src/vnet/ethernet/arp.c +++ b/src/vnet/ethernet/arp.c @@ -2608,6 +2608,30 @@ send_ip4_garp_w_addr (vlib_main_t * vm, } } +/* + * Remove any arp entries asociated with the specificed interface + */ +void +vnet_arp_delete_sw_interface (vnet_main_t * vnm, u32 sw_if_index, u32 is_add) +{ + if (!is_add && sw_if_index != ~0) + { + ethernet_arp_main_t *am = ðernet_arp_main; + ethernet_arp_ip4_entry_t *e; + /* *INDENT-OFF* */ + pool_foreach (e, am->ip4_entry_pool, ({ + if (e->sw_if_index != sw_if_index) + continue; + vnet_arp_set_ip4_over_ethernet_rpc_args_t args = { .sw_if_index = sw_if_index, + .a.ip4 = e->ip4_address }; + vnet_arp_unset_ip4_over_ethernet_internal (vnm, &args); + })); + /* *INDENT-ON* */ + } +} + +VNET_SW_INTERFACE_ADD_DEL_FUNCTION (vnet_arp_delete_sw_interface); + /* * fd.io coding-style-patch-verification: ON *