aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Loeliger <jdl@netgate.com>2019-06-13 11:02:26 -0500
committerJon Loeliger <jdl@netgate.com>2019-06-17 16:03:33 -0500
commitdfa47ddf85adc1245647d4108a1a7a15c2b79969 (patch)
tree76a637d562001e8f5a16112b61c35f40926d352e
parent72f2a3acb797797416a96dc10312ccd431126de7 (diff)
ip: consolidate IPv6 link-local-address functions.
Two codes diverged in the packet processor And sorry I could not use them both Long I stood being but one developer And studied one as far as I could To where the code said bitwise OR Then took the other, as just could see, And having perhaps the better bit, Because it followed the RFC And used the cryptic XOR in C, Had run them both a fair bit. And both equally ran that morning With packets dropped and flowing. Oh, I flagged the first for dropping! Yet knowing bug leads to debuging I hoped I'd never be returning. I shall be commiting this with a sigh Somewhere ages and ages hence: Two codes diverged by a bit, and I, I made the packets flow on by, And that has made all the difference. Type: fix Change-Id: If2698726d5501fde76211994f8efc37119345352 Signed-off-by: Jon Loeliger <jdl@netgate.com>
-rw-r--r--[-rwxr-xr-x]src/vnet/ip/ip6_neighbor.c2
-rw-r--r--src/vnet/ip/ip6_packet.h17
2 files changed, 1 insertions, 18 deletions
diff --git a/src/vnet/ip/ip6_neighbor.c b/src/vnet/ip/ip6_neighbor.c
index 4f9e0820999..c332b2c1bc9 100755..100644
--- a/src/vnet/ip/ip6_neighbor.c
+++ b/src/vnet/ip/ip6_neighbor.c
@@ -2701,7 +2701,7 @@ ip6_neighbor_sw_interface_add_del (vnet_main_t * vnm,
clib_memcpy (a->link_layer_address, eth_if0->address, 6);
/* fill in default link-local address (this may be overridden) */
- ip6_link_local_address_from_ethernet_address
+ ip6_link_local_address_from_ethernet_mac_address
(&a->link_local_address, eth_if0->address);
mhash_init (&a->address_to_prefix_index, sizeof (uword),
diff --git a/src/vnet/ip/ip6_packet.h b/src/vnet/ip/ip6_packet.h
index abbea5c46a1..ff47830dff3 100644
--- a/src/vnet/ip/ip6_packet.h
+++ b/src/vnet/ip/ip6_packet.h
@@ -211,23 +211,6 @@ ip6_set_solicited_node_multicast_address (ip6_address_t * a, u32 id)
}
always_inline void
-ip6_link_local_address_from_ethernet_address (ip6_address_t * a,
- const u8 * ethernet_address)
-{
- a->as_u64[0] = a->as_u64[1] = 0;
- a->as_u16[0] = clib_host_to_net_u16 (0xfe80);
- /* Always set locally administered bit (6). */
- a->as_u8[0x8] = ethernet_address[0] | (1 << 6);
- a->as_u8[0x9] = ethernet_address[1];
- a->as_u8[0xa] = ethernet_address[2];
- a->as_u8[0xb] = 0xff;
- a->as_u8[0xc] = 0xfe;
- a->as_u8[0xd] = ethernet_address[3];
- a->as_u8[0xe] = ethernet_address[4];
- a->as_u8[0xf] = ethernet_address[5];
-}
-
-always_inline void
ip6_multicast_ethernet_address (u8 * ethernet_address, u32 group_id)
{
ethernet_address[0] = 0x33;