aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/ip6-nd
diff options
context:
space:
mode:
authorBenoît Ganne <bganne@cisco.com>2020-10-20 16:24:17 +0200
committerDamjan Marion <dmarion@me.com>2020-11-13 11:17:50 +0000
commitb44c77d01dcf9ebf80d7bcab097515ad8135bc05 (patch)
tree71070f6ea6b5dc989730e1775f6c7916a07938fc /src/vnet/ip6-nd
parent41c0f45a56d4db5b2ee4ae4fff7f3f0571a23189 (diff)
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>
Diffstat (limited to 'src/vnet/ip6-nd')
-rw-r--r--src/vnet/ip6-nd/ip6_nd.c4
-rw-r--r--src/vnet/ip6-nd/ip6_ra.c4
-rw-r--r--src/vnet/ip6-nd/rd_cp.c2
3 files changed, 5 insertions, 5 deletions
diff --git a/src/vnet/ip6-nd/ip6_nd.c b/src/vnet/ip6-nd/ip6_nd.c
index a8f7f15aa94..da4966657c7 100644
--- a/src/vnet/ip6-nd/ip6_nd.c
+++ b/src/vnet/ip6-nd/ip6_nd.c
@@ -263,7 +263,7 @@ icmp6_neighbor_solicitation_or_advertisement (vlib_main_t * vm,
ethernet_get_interface (&ethernet_main, sw_if0->hw_if_index);
if (eth_if0 && o0)
{
- clib_memcpy (o0->ethernet_address, eth_if0->address, 6);
+ clib_memcpy (o0->ethernet_address, &eth_if0->address, 6);
o0->header.type =
ICMP6_NEIGHBOR_DISCOVERY_OPTION_target_link_layer_address;
}
@@ -284,7 +284,7 @@ icmp6_neighbor_solicitation_or_advertisement (vlib_main_t * vm,
eth0 = vlib_buffer_get_current (p0);
clib_memcpy (eth0->dst_address, eth0->src_address, 6);
if (eth_if0)
- clib_memcpy (eth0->src_address, eth_if0->address, 6);
+ clib_memcpy (eth0->src_address, &eth_if0->address, 6);
/* Setup input and output sw_if_index for packet */
ASSERT (vnet_buffer (p0)->sw_if_index[VLIB_RX] == sw_if_index0);
diff --git a/src/vnet/ip6-nd/ip6_ra.c b/src/vnet/ip6-nd/ip6_ra.c
index 5605939c092..2bfa4251480 100644
--- a/src/vnet/ip6-nd/ip6_ra.c
+++ b/src/vnet/ip6-nd/ip6_ra.c
@@ -477,7 +477,7 @@ icmp6_router_solicitation (vlib_main_t * vm,
/* copy ll address */
clib_memcpy (&h.ethernet_address[0],
- eth_if0->address, 6);
+ &eth_if0->address, 6);
if (vlib_buffer_add_data
(vm, &bi0, (void *) &h,
@@ -633,7 +633,7 @@ icmp6_router_solicitation (vlib_main_t * vm,
eth0 = vlib_buffer_get_current (p0);
clib_memcpy (eth0->dst_address, eth0->src_address,
6);
- clib_memcpy (eth0->src_address, eth_if0->address,
+ clib_memcpy (eth0->src_address, &eth_if0->address,
6);
next0 =
is_dropped ? next0 :
diff --git a/src/vnet/ip6-nd/rd_cp.c b/src/vnet/ip6-nd/rd_cp.c
index 9c5d2b9aaf0..bab1b6520a4 100644
--- a/src/vnet/ip6-nd/rd_cp.c
+++ b/src/vnet/ip6-nd/rd_cp.c
@@ -211,7 +211,7 @@ get_interface_mac_address (u32 sw_if_index, u8 mac[])
return 1;
}
- clib_memcpy_fast (mac, eth_if->address, 6);
+ clib_memcpy_fast (mac, &eth_if->address, 6);
return 0;
}