X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fethernet%2Finterface.c;h=2cb137c53b3aef76da464301cab824946f55bef3;hb=b7b929931a07fbb27b43d5cd105f366c3e29807e;hp=bef13b8672c04946cd337358bc0e86e2b318f494;hpb=78451a6a660cd26a67d2284219f48878a2dfe2c3;p=vpp.git diff --git a/src/vnet/ethernet/interface.c b/src/vnet/ethernet/interface.c index bef13b8672c..2cb137c53b3 100644 --- a/src/vnet/ethernet/interface.c +++ b/src/vnet/ethernet/interface.c @@ -42,6 +42,7 @@ #include #include #include +#include #include /** @@ -151,7 +152,7 @@ ethernet_build_rewrite (vnet_main_t * vnm, if (dst_address) clib_memcpy (h->dst_address, dst_address, sizeof (h->dst_address)); else - memset (h->dst_address, ~0, sizeof (h->dst_address)); /* broadcast */ + clib_memset (h->dst_address, ~0, sizeof (h->dst_address)); /* broadcast */ } if (PREDICT_FALSE (!is_p2p) && sub_sw->sub.eth.flags.one_tag) @@ -218,7 +219,8 @@ ethernet_update_adjacency (vnet_main_t * vnm, u32 sw_if_index, u32 ai) } static clib_error_t * -ethernet_mac_change (vnet_hw_interface_t * hi, char *mac_address) +ethernet_mac_change (vnet_hw_interface_t * hi, + const u8 * old_address, const u8 * mac_address) { ethernet_interface_t *ei; ethernet_main_t *em; @@ -340,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); + vlan_table->vlans[idx].qinqs = 0; } } pool_put_index (em->vlan_pool, main_intf->dot1q_vlans); @@ -353,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); + vlan_table->vlans[idx].qinqs = 0; } } pool_put_index (em->vlan_pool, main_intf->dot1ad_vlans); @@ -633,12 +637,23 @@ simulated_ethernet_admin_up_down (vnet_main_t * vnm, u32 hw_if_index, return 0; } +static clib_error_t * +simulated_ethernet_mac_change (vnet_hw_interface_t * hi, + const u8 * old_address, const u8 * mac_address) +{ + l2input_interface_mac_change (hi->sw_if_index, old_address, mac_address); + + return (NULL); +} + + /* *INDENT-OFF* */ VNET_DEVICE_CLASS (ethernet_simulated_device_class) = { .name = "Loopback", .format_device_name = format_simulated_ethernet_name, .tx_function = simulated_ethernet_interface_tx, .admin_up_down_function = simulated_ethernet_admin_up_down, + .mac_addr_change_function = simulated_ethernet_mac_change, }; /* *INDENT-ON* */ @@ -735,7 +750,7 @@ vnet_create_loopback_interface (u32 * sw_if_indexp, u8 * mac_address, *sw_if_indexp = (u32) ~ 0; - memset (address, 0, sizeof (address)); + clib_memset (address, 0, sizeof (address)); /* * Allocate a loopback instance. Either select on dynamically @@ -807,7 +822,7 @@ create_simulated_ethernet_interfaces (vlib_main_t * vm, u8 is_specified = 0; u32 user_instance = 0; - memset (mac_address, 0, sizeof (mac_address)); + clib_memset (mac_address, 0, sizeof (mac_address)); while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) {