]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: start/stop LLDP client on carrier gained/lost
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 12 Jun 2021 03:26:37 +0000 (12:26 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 10 Aug 2021 05:43:54 +0000 (14:43 +0900)
Then, link_acquire_dynamic_conf() matches link_stop_engines().
Previously, LLDP client is started on interface is up, and stopped
on both down and carrier loss.

src/network/networkd-link.c
src/network/networkd-lldp-rx.c
src/network/networkd-lldp-rx.h

index 2cf84b0f1397bae1bd065979b8a983479eb6d9fb..c232a8d6c57093b41c7aa11609558ac68e22bc11 100644 (file)
@@ -690,6 +690,12 @@ static int link_acquire_dynamic_conf(Link *link) {
         if (r < 0)
                 return log_link_warning_errno(link, r, "Failed to start LLDP transmission: %m");
 
+        if (link->lldp) {
+                r = sd_lldp_start(link->lldp);
+                if (r < 0)
+                        return log_link_warning_errno(link, r, "Failed to start LLDP client: %m");
+        }
+
         return 0;
 }
 
@@ -1986,10 +1992,6 @@ static int link_update_flags(Link *link, sd_netlink_message *message) {
                         return r;
         }
 
-        r = link_update_lldp(link);
-        if (r < 0)
-                return r;
-
         if (!had_carrier && link_has_carrier(link)) {
                 log_link_info(link, "Gained carrier");
 
index c30cc36b51c0b48df6b629ca33206bebbd504e8c..57c8446adef0111f4bfde4f9ea3fbbf3c4c504cc 100644 (file)
@@ -103,38 +103,9 @@ int link_lldp_rx_configure(Link *link) {
         if (r < 0)
                 return r;
 
-        r = link_update_lldp(link);
-        if (r < 0)
-                return r;
-
         return 0;
 }
 
-int link_update_lldp(Link *link) {
-        int r;
-
-        assert(link);
-
-        if (!link->lldp)
-                return 0;
-
-        if (link->flags & IFF_UP) {
-                r = sd_lldp_start(link->lldp);
-                if (r < 0)
-                        return log_link_warning_errno(link, r, "Failed to start LLDP: %m");
-                if (r > 0)
-                        log_link_debug(link, "Started LLDP.");
-        } else {
-                r = sd_lldp_stop(link->lldp);
-                if (r < 0)
-                        return log_link_warning_errno(link, r, "Failed to stop LLDP: %m");
-                if (r > 0)
-                        log_link_debug(link, "Stopped LLDP.");
-        }
-
-        return r;
-}
-
 int link_lldp_save(Link *link) {
         _cleanup_(unlink_and_freep) char *temp_path = NULL;
         _cleanup_fclose_ FILE *f = NULL;
index 49306eafd0ae04d6e24a9efdacf1fccb362612cf..22f6602bd0ffd8c5f853c6680e3e6a957ca0d228 100644 (file)
@@ -14,7 +14,6 @@ typedef enum LLDPMode {
 } LLDPMode;
 
 int link_lldp_rx_configure(Link *link);
-int link_update_lldp(Link *link);
 int link_lldp_save(Link *link);
 
 const char* lldp_mode_to_string(LLDPMode m) _const_;