]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: wait for kernel to reply ipv6 peer address
authorSusant Sahani <ssahani@gmail.com>
Mon, 10 Dec 2018 17:05:40 +0000 (22:35 +0530)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 14 Jan 2019 22:36:14 +0000 (07:36 +0900)
When we configure address with peer, peer address is repliedby kernel.
Hence add the peer when it is available.

Closes #9130.

src/network/networkd-address.c

index d1ef45100438658ff12fb03e3d9cabce34848854..502b9e39dad3a32e12325077afabd0bd74bb52ba 100644 (file)
@@ -651,8 +651,7 @@ int address_configure(
         if (r < 0)
                 return r;
 
-        r = netlink_call_async(link->manager->rtnl, NULL, req, callback,
-                               link_netlink_destroy_callback, link);
+        r = netlink_call_async(link->manager->rtnl, NULL, req, callback, link_netlink_destroy_callback, link);
         if (r < 0) {
                 address_release(address);
                 return log_error_errno(r, "Could not send rtnetlink message: %m");
@@ -660,7 +659,10 @@ int address_configure(
 
         link_ref(link);
 
-        r = address_add(link, address->family, &address->in_addr, address->prefixlen, NULL);
+        if (address->family == AF_INET6 && !in_addr_is_null(address->family, &address->in_addr_peer))
+                r = address_add(link, address->family, &address->in_addr_peer, address->prefixlen, NULL);
+        else
+                r = address_add(link, address->family, &address->in_addr, address->prefixlen, NULL);
         if (r < 0) {
                 address_release(address);
                 return log_error_errno(r, "Could not add address: %m");