]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: use address_remove_handler() as the default callback of address_remove()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 28 Nov 2018 20:22:08 +0000 (21:22 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 2 Dec 2018 05:23:45 +0000 (06:23 +0100)
src/network/networkd-address.c
src/network/networkd-dhcp4.c
src/network/networkd-ipv4ll.c
src/network/networkd-link.c
src/network/networkd-link.h

index 09f041602ce25e8aa0c3502d4c75d736b2f167d5..19462d9a0adcb33c6c5356fdef0df7ed83480339 100644 (file)
@@ -428,6 +428,24 @@ int address_get(Link *link,
         return -ENOENT;
 }
 
+static int address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
+        Link *link = userdata;
+        int r;
+
+        assert(m);
+        assert(link);
+        assert(link->ifname);
+
+        if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER))
+                return 1;
+
+        r = sd_netlink_message_get_errno(m);
+        if (r < 0 && r != -EADDRNOTAVAIL)
+                log_link_warning_errno(link, r, "Could not drop address: %m");
+
+        return 1;
+}
+
 int address_remove(
                 Address *address,
                 Link *link,
@@ -465,7 +483,8 @@ int address_remove(
         if (r < 0)
                 return log_error_errno(r, "Could not append IFA_LOCAL attribute: %m");
 
-        r = sd_netlink_call_async(link->manager->rtnl, NULL, req, callback,
+        r = sd_netlink_call_async(link->manager->rtnl, NULL, req,
+                                  callback ?: address_remove_handler,
                                   link_netlink_destroy_callback, link, 0, __func__);
         if (r < 0)
                 return log_error_errno(r, "Could not send rtnetlink message: %m");
index 597791e02b863f0e81ceff0812cbd7b9dd33950b..c8e07028f2f5dd5a9f56e1fe5647ba826b8dd82b 100644 (file)
@@ -261,7 +261,7 @@ static int dhcp_lease_lost(Link *link) {
                         address->in_addr.in = addr;
                         address->prefixlen = prefixlen;
 
-                        address_remove(address, link, link_address_remove_handler);
+                        address_remove(address, link, NULL);
                 }
         }
 
index 0f333175da6aa89688086542b1fe035709a31d70..e0d2ef01f88035aec9a22967199cd2ce9ad689be 100644 (file)
@@ -34,7 +34,7 @@ static int ipv4ll_address_lost(Link *link) {
         address->prefixlen = 16;
         address->scope = RT_SCOPE_LINK;
 
-        address_remove(address, link, link_address_remove_handler);
+        address_remove(address, link, NULL);
 
         r = route_new(&route);
         if (r < 0)
index 891f72b6ab9d3b0e2f3e2bb4e86899e3b43c0494..c4287ff342d676315e91776fc0514c955fc014b3 100644 (file)
@@ -1214,24 +1214,6 @@ static int link_enter_set_addresses(Link *link) {
         return 0;
 }
 
-int link_address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
-        Link *link = userdata;
-        int r;
-
-        assert(m);
-        assert(link);
-        assert(link->ifname);
-
-        if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER))
-                return 1;
-
-        r = sd_netlink_message_get_errno(m);
-        if (r < 0 && r != -EADDRNOTAVAIL)
-                log_link_warning_errno(link, r, "Could not drop address: %m");
-
-        return 1;
-}
-
 static int link_set_bridge_vlan(Link *link) {
         int r = 0;
 
@@ -2664,7 +2646,7 @@ static int link_drop_foreign_config(Link *link) {
                         if (r < 0)
                                 return log_link_error_errno(link, r, "Failed to add address: %m");
                 } else {
-                        r = address_remove(address, link, link_address_remove_handler);
+                        r = address_remove(address, link, NULL);
                         if (r < 0)
                                 return r;
                 }
@@ -2700,7 +2682,7 @@ static int link_drop_config(Link *link) {
                 if (address->family == AF_INET6 && in_addr_is_link_local(AF_INET6, &address->in_addr) == 1)
                         continue;
 
-                r = address_remove(address, link, link_address_remove_handler);
+                r = address_remove(address, link, NULL);
                 if (r < 0)
                         return r;
 
index 7261b3142af7e5fc59ce113f052ea44bdf9c4b31..a24d83c26241f06e870e5430ef9bfa70c08560f9 100644 (file)
@@ -140,7 +140,6 @@ void link_drop(Link *link);
 int link_up(Link *link);
 int link_down(Link *link);
 
-int link_address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
 int link_route_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
 
 void link_enter_failed(Link *link);