summaryrefslogtreecommitdiff
path: root/src/network
diff options
context:
space:
mode:
authorSusant Sahani <ssahani@vmware.com>2020-02-28 03:51:28 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2020-03-01 00:49:24 +0900
commita781ddefe5043c9f0750a125694760a3c43b003a (patch)
tree0c2be9799216c9a426d604dec0e0ec0a9d384b30 /src/network
parentbd6379ec57c5a25b1cb4ae61771c8a12179ebd7a (diff)
downloadsystemd-a781ddefe5043c9f0750a125694760a3c43b003a.tar.gz
network: make use of generate_ipv6_eui_64_address
Diffstat (limited to 'src/network')
-rw-r--r--src/network/networkd-ndisc.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c
index c45fec5430..90cd0c81ab 100644
--- a/src/network/networkd-ndisc.c
+++ b/src/network/networkd-ndisc.c
@@ -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;