]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: make use of generate_ipv6_eui_64_address
authorSusant Sahani <ssahani@vmware.com>
Fri, 28 Feb 2020 02:51:28 +0000 (03:51 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 29 Feb 2020 15:49:24 +0000 (00:49 +0900)
src/network/networkd-ndisc.c

index c45fec5430508bd550e184281c84998648ea67c2..90cd0c81abd4acba9431680509898a01b990ff19 100644 (file)
@@ -324,16 +324,10 @@ static int ndisc_router_generate_addresses(Link *link, unsigned prefixlen, uint3
 
                 *new_address = *address;
 
-                /* see RFC4291 section 2.5.1 */
-                new_address->in_addr.in6.s6_addr[8]  = link->mac.ether_addr_octet[0];
-                new_address->in_addr.in6.s6_addr[8] ^= 1 << 1;
-                new_address->in_addr.in6.s6_addr[9]  = link->mac.ether_addr_octet[1];
-                new_address->in_addr.in6.s6_addr[10] = link->mac.ether_addr_octet[2];
-                new_address->in_addr.in6.s6_addr[11] = 0xff;
-                new_address->in_addr.in6.s6_addr[12] = 0xfe;
-                new_address->in_addr.in6.s6_addr[13] = link->mac.ether_addr_octet[3];
-                new_address->in_addr.in6.s6_addr[14] = link->mac.ether_addr_octet[4];
-                new_address->in_addr.in6.s6_addr[15] = link->mac.ether_addr_octet[5];
+                r = generate_ipv6_eui_64_address(link, &new_address->in_addr.in6);
+                if (r < 0)
+                        return log_link_error_errno(link, r, "Failed to generate EUI64 address: %m");
+
                 new_address->prefixlen = prefixlen;
                 new_address->flags = IFA_F_NOPREFIXROUTE|IFA_F_MANAGETEMPADDR;
                 new_address->cinfo.ifa_prefered = lifetime_preferred;