network: use route_remove_handler() as the default callback of route_remove()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 28 Nov 2018 20:22:42 +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-dhcp4.c
src/network/networkd-ipv4ll.c
src/network/networkd-link.c
src/network/networkd-link.h
src/network/networkd-route.c

index c8e07028f2f5dd5a9f56e1fe5647ba826b8dd82b..48c0d3e1e4a892501386c92223c98ee5762f3fd7 100644 (file)
@@ -216,8 +216,7 @@ static int dhcp_lease_lost(Link *link) {
                                         assert_se(sd_dhcp_route_get_destination(routes[i], &route->dst.in) >= 0);
                                         assert_se(sd_dhcp_route_get_destination_prefix_length(routes[i], &route->dst_prefixlen) >= 0);
 
-                                        route_remove(route, link,
-                                                     link_route_remove_handler);
+                                        route_remove(route, link, NULL);
                                 }
                         }
                 }
@@ -237,8 +236,7 @@ static int dhcp_lease_lost(Link *link) {
                                 route_gw->dst_prefixlen = 32;
                                 route_gw->scope = RT_SCOPE_LINK;
 
-                                route_remove(route_gw, link,
-                                             link_route_remove_handler);
+                                route_remove(route_gw, link, NULL);
                         }
 
                         r = route_new(&route);
@@ -246,8 +244,7 @@ static int dhcp_lease_lost(Link *link) {
                                 route->family = AF_INET;
                                 route->gw.in = gateway;
 
-                                route_remove(route, link,
-                                             link_route_remove_handler);
+                                route_remove(route, link, NULL);
                         }
                 }
 
index e0d2ef01f88035aec9a22967199cd2ce9ad689be..926dec9a8aa45b3a958de6e6b9eb99fe88b06190 100644 (file)
@@ -44,7 +44,7 @@ static int ipv4ll_address_lost(Link *link) {
         route->scope = RT_SCOPE_LINK;
         route->priority = IPV4LL_ROUTE_METRIC;
 
-        route_remove(route, link, link_route_remove_handler);
+        route_remove(route, link, NULL);
 
         link_check_ready(link);
 
index c4287ff342d676315e91776fc0514c955fc014b3..f525ba34ffa1363c0c8a9bc9065b1e3e73a9f6f2 100644 (file)
@@ -892,24 +892,6 @@ static int link_enter_set_routes(Link *link) {
         return 0;
 }
 
-int link_route_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 != -ESRCH)
-                log_link_warning_errno(link, r, "Could not drop route: %m");
-
-        return 1;
-}
-
 static int address_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
         Link *link = userdata;
         int r;
@@ -2662,7 +2644,7 @@ static int link_drop_foreign_config(Link *link) {
                         if (r < 0)
                                 return r;
                 } else {
-                        r = route_remove(route, link, link_route_remove_handler);
+                        r = route_remove(route, link, NULL);
                         if (r < 0)
                                 return r;
                 }
@@ -2701,7 +2683,7 @@ static int link_drop_config(Link *link) {
                 if (route->protocol == RTPROT_KERNEL)
                         continue;
 
-                r = route_remove(route, link, link_route_remove_handler);
+                r = route_remove(route, link, NULL);
                 if (r < 0)
                         return r;
         }
index a24d83c26241f06e870e5430ef9bfa70c08560f9..a1f4030971946f742383fbf317d6c0de3a1e2d6b 100644 (file)
@@ -140,8 +140,6 @@ void link_drop(Link *link);
 int link_up(Link *link);
 int link_down(Link *link);
 
-int link_route_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
-
 void link_enter_failed(Link *link);
 int link_initialized(Link *link, sd_device *device);
 
index 2f70844d47137ecb9b61fb30c89f8fea153d7338..edcfa604ed6e184f7bff9537928da9549b062b98 100644 (file)
@@ -378,6 +378,24 @@ void route_update(Route *route,
         route->type = type;
 }
 
+static int route_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 != -ESRCH)
+                log_link_warning_errno(link, r, "Could not drop route: %m");
+
+        return 1;
+}
+
 int route_remove(Route *route, Link *link,
                  sd_netlink_message_handler_t callback) {
 
@@ -454,7 +472,8 @@ int route_remove(Route *route, Link *link,
                         return log_error_errno(r, "Could not append RTA_OIF attribute: %m");
         }
 
-        r = sd_netlink_call_async(link->manager->rtnl, NULL, req, callback,
+        r = sd_netlink_call_async(link->manager->rtnl, NULL, req,
+                                  callback ?: route_remove_handler,
                                   link_netlink_destroy_callback, link, 0, __func__);
         if (r < 0)
                 return log_error_errno(r, "Could not send rtnetlink message: %m");
@@ -470,7 +489,7 @@ int route_expire_handler(sd_event_source *s, uint64_t usec, void *userdata) {
 
         assert(route);
 
-        r = route_remove(route, route->link, link_route_remove_handler);
+        r = route_remove(route, route->link, NULL);
         if (r < 0)
                 log_warning_errno(r, "Could not remove route: %m");
         else