From b44c77d01dcf9ebf80d7bcab097515ad8135bc05 Mon Sep 17 00:00:00 2001 From: Benoît Ganne Date: Tue, 20 Oct 2020 16:24:17 +0200 Subject: ethernet: mac must support 64-bits loads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/plugins/dhcp/dhcp4_proxy_node.c | 4 ++-- src/plugins/dhcp/dhcp6_client_common_dp.c | 2 +- src/plugins/dhcp/dhcp6_proxy_node.c | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src/plugins/dhcp') diff --git a/src/plugins/dhcp/dhcp4_proxy_node.c b/src/plugins/dhcp/dhcp4_proxy_node.c index bf1d12ded1a..6a3c51018d1 100644 --- a/src/plugins/dhcp/dhcp4_proxy_node.c +++ b/src/plugins/dhcp/dhcp4_proxy_node.c @@ -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 diff --git a/src/plugins/dhcp/dhcp6_client_common_dp.c b/src/plugins/dhcp/dhcp6_client_common_dp.c index f8a96f151e3..2acd2f6ab90 100644 --- a/src/plugins/dhcp/dhcp6_client_common_dp.c +++ b/src/plugins/dhcp/dhcp6_client_common_dp.c @@ -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, ð_if->address, 6); else { clib_warning ("Failed to find any Ethernet interface, " diff --git a/src/plugins/dhcp/dhcp6_proxy_node.c b/src/plugins/dhcp/dhcp6_proxy_node.c index 9b62cafda77..3b95e7f9f09 100644 --- a/src/plugins/dhcp/dhcp6_proxy_node.c +++ b/src/plugins/dhcp/dhcp6_proxy_node.c @@ -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) -- cgit 1.2.3-korg