]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: make link_drop() can take custom handler
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 9 May 2019 06:53:01 +0000 (15:53 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 10 May 2019 21:15:35 +0000 (06:15 +0900)
It will be used in the later commit.

src/network/netdev/netdev.c
src/network/networkd-link.c
src/network/networkd-link.h

index d8b8bca7e83d2fb7a136128220a4925f732c9ab8..b6aa860ba506b4574b11e656e9e6921e2f30b76c 100644 (file)
@@ -254,7 +254,7 @@ static int netdev_enslave_ready(NetDev *netdev, Link* link, link_netlink_message
 
         if (link->flags & IFF_UP && netdev->kind == NETDEV_KIND_BOND) {
                 log_netdev_debug(netdev, "Link '%s' was up when attempting to enslave it. Bringing link down.", link->ifname);
-                r = link_down(link);
+                r = link_down(link, NULL);
                 if (r < 0)
                         return log_netdev_error_errno(netdev, r, "Could not bring link down: %m");
         }
index 9f354b519f57779b8691c1f9a822af8262b3bc57..c5857da8fc456b47020c0f5778363b416cd6a786 100644 (file)
@@ -2128,7 +2128,7 @@ static int link_down_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link
         return 1;
 }
 
-int link_down(Link *link) {
+int link_down(Link *link, link_netlink_message_handler_t callback) {
         _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
         int r;
 
@@ -2147,7 +2147,8 @@ int link_down(Link *link) {
         if (r < 0)
                 return log_link_error_errno(link, r, "Could not set link flags: %m");
 
-        r = netlink_call_async(link->manager->rtnl, NULL, req, link_down_handler,
+        r = netlink_call_async(link->manager->rtnl, NULL, req,
+                               callback ?: link_down_handler,
                                link_netlink_destroy_callback, link);
         if (r < 0)
                 return log_link_error_errno(link, r, "Could not send rtnetlink message: %m");
@@ -2179,7 +2180,7 @@ static int link_handle_bound_to_list(Link *link) {
                 }
 
         if (!required_up && link_is_up) {
-                r = link_down(link);
+                r = link_down(link, NULL);
                 if (r < 0)
                         return r;
         } else if (required_up && !link_is_up) {
@@ -2912,7 +2913,7 @@ static int link_configure_can(Link *link) {
         if (streq_ptr(link->kind, "can")) {
                 /* The CAN interface must be down to configure bitrate, etc... */
                 if ((link->flags & IFF_UP)) {
-                        r = link_down(link);
+                        r = link_down(link, NULL);
                         if (r < 0) {
                                 link_enter_failed(link);
                                 return r;
index 930dd25f924d52a5a5d18c0c698da7917f83496d..e1f4b23a5ac01e9b803d045d6d9021156b2f1f0d 100644 (file)
@@ -139,7 +139,7 @@ int link_get(Manager *m, int ifindex, Link **ret);
 int link_add(Manager *manager, sd_netlink_message *message, Link **ret);
 void link_drop(Link *link);
 
-int link_down(Link *link);
+int link_down(Link *link, link_netlink_message_handler_t callback);
 
 void link_enter_failed(Link *link);
 int link_initialized(Link *link, sd_device *device);