ethernet: mac must support 64-bits loads

ethernet dataplane loads MAC addresses as 64-bits loads for efficiency.
We must make sure it is valid, especially for the vector of secondary
MACs.

Type: fix

Change-Id: I851e319b8a973c154e85ff9f05f3b8e385939788
Signed-off-by: Benoît Ganne <bganne@cisco.com>
This commit is contained in:
Benoît Ganne
2020-10-20 16:24:17 +02:00
committed by Damjan Marion
parent 41c0f45a56
commit b44c77d01d
14 changed files with 88 additions and 59 deletions

View File

@@ -738,8 +738,8 @@ dhcp_proxy_to_client_input (vlib_main_t * vm,
hi0 = vnet_get_sup_hw_interface (vnm, original_sw_if_index);
ei0 = pool_elt_at_index (em->interfaces, hi0->hw_instance);
clib_memcpy (mac0->src_address, ei0->address,
sizeof (ei0->address));
clib_memcpy (mac0->src_address, &ei0->address,
sizeof (mac0->src_address));
clib_memset (mac0->dst_address, 0xff, sizeof (mac0->dst_address));
if (si0->type == VNET_SW_INTERFACE_TYPE_SUB

View File

@@ -71,7 +71,7 @@ generate_client_duid (void)
/* *INDENT-ON* */
if (eth_if)
clib_memcpy (client_duid.lla, eth_if->address, 6);
clib_memcpy (client_duid.lla, &eth_if->address, 6);
else
{
clib_warning ("Failed to find any Ethernet interface, "

View File

@@ -784,7 +784,8 @@ dhcpv6_proxy_to_client_input (vlib_main_t * vm,
hi0 = vnet_get_sup_hw_interface (vnm, original_sw_if_index);
ei0 = pool_elt_at_index (em->interfaces, hi0->hw_instance);
clib_memcpy (mac0->src_address, ei0->address, sizeof (ei0->address));
clib_memcpy (mac0->src_address, &ei0->address,
sizeof (mac0->src_address));
clib_memset (&mac0->dst_address, 0xff, sizeof (mac0->dst_address));
if (si0->type == VNET_SW_INTERFACE_TYPE_SUB && outer_vlan != (u32) ~ 0)