diff options
author | Jon Loeliger <jdl@netgate.com> | 2019-06-13 11:02:26 -0500 |
---|---|---|
committer | Jon Loeliger <jdl@netgate.com> | 2019-06-17 16:03:33 -0500 |
commit | dfa47ddf85adc1245647d4108a1a7a15c2b79969 (patch) | |
tree | 76a637d562001e8f5a16112b61c35f40926d352e /src/vnet/ip | |
parent | 72f2a3acb797797416a96dc10312ccd431126de7 (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>
Diffstat (limited to 'src/vnet/ip')
-rw-r--r--[-rwxr-xr-x] | src/vnet/ip/ip6_neighbor.c | 2 | ||||
-rw-r--r-- | src/vnet/ip/ip6_packet.h | 17 |
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; |