]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network/lldp: do not save LLDP neighbors under /run/systemd
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 26 Feb 2024 06:47:46 +0000 (15:47 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 1 Mar 2024 00:40:26 +0000 (09:40 +0900)
Now LLDP neighbors are exposed through varlink. Hence, it is not
necessary to save to a file.

src/network/networkd-link.c
src/network/networkd-link.h
src/network/networkd-lldp-rx.c
src/network/networkd-lldp-rx.h
src/network/networkd-state-file.c
src/network/networkd.c
tmpfiles.d/systemd-network.conf

index 6304ead97ad69bd09026c804c762b64a71683781..650e94c31378626b3bb38dcfc8fd78bb1d5a1a91 100644 (file)
@@ -272,7 +272,6 @@ static Link *link_free(Link *link) {
         free(link->driver);
 
         unlink_and_free(link->lease_file);
-        unlink_and_free(link->lldp_file);
         unlink_and_free(link->state_file);
 
         sd_device_unref(link->dev);
@@ -2653,7 +2652,7 @@ static Link *link_drop_or_unref(Link *link) {
 DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_drop_or_unref);
 
 static int link_new(Manager *manager, sd_netlink_message *message, Link **ret) {
-        _cleanup_free_ char *ifname = NULL, *kind = NULL, *state_file = NULL, *lease_file = NULL, *lldp_file = NULL;
+        _cleanup_free_ char *ifname = NULL, *kind = NULL, *state_file = NULL, *lease_file = NULL;
         _cleanup_(link_drop_or_unrefp) Link *link = NULL;
         unsigned short iftype;
         int r, ifindex;
@@ -2694,9 +2693,6 @@ static int link_new(Manager *manager, sd_netlink_message *message, Link **ret) {
 
                 if (asprintf(&lease_file, "/run/systemd/netif/leases/%d", ifindex) < 0)
                         return log_oom_debug();
-
-                if (asprintf(&lldp_file, "/run/systemd/netif/lldp/%d", ifindex) < 0)
-                        return log_oom_debug();
         }
 
         link = new(Link, 1);
@@ -2719,7 +2715,6 @@ static int link_new(Manager *manager, sd_netlink_message *message, Link **ret) {
 
                 .state_file = TAKE_PTR(state_file),
                 .lease_file = TAKE_PTR(lease_file),
-                .lldp_file = TAKE_PTR(lldp_file),
 
                 .n_dns = UINT_MAX,
                 .dns_default_route = -1,
index 0167b1988d3ca535e69ef525cfdc7e384d2302ed..b3e8bb001fede8e05b50aa35cb8673f1796435b0 100644 (file)
@@ -181,7 +181,6 @@ typedef struct Link {
 
         /* This is about LLDP reception */
         sd_lldp_rx *lldp_rx;
-        char *lldp_file;
 
         /* This is about LLDP transmission */
         sd_lldp_tx *lldp_tx;
index c45d3e32d740178c57acc0f98bef5dc0ced5d117..f74485488eb91c4bee95c5f322137c1fc0c46e73 100644 (file)
@@ -52,8 +52,6 @@ static void lldp_rx_handler(sd_lldp_rx *lldp_rx, sd_lldp_rx_event_t event, sd_ll
         Link *link = ASSERT_PTR(userdata);
         int r;
 
-        (void) link_lldp_save(link);
-
         if (link->lldp_tx && event == SD_LLDP_RX_EVENT_ADDED) {
                 /* If we received information about a new neighbor, restart the LLDP "fast" logic */
 
@@ -104,70 +102,3 @@ int link_lldp_rx_configure(Link *link) {
 
         return 0;
 }
-
-int link_lldp_save(Link *link) {
-        _cleanup_(unlink_and_freep) char *temp_path = NULL;
-        _cleanup_fclose_ FILE *f = NULL;
-        sd_lldp_neighbor **l = NULL;
-        int n = 0, r, i;
-
-        assert(link);
-
-        if (isempty(link->lldp_file))
-                return 0; /* Do not update state file when running in test mode. */
-
-        if (!link->lldp_rx) {
-                (void) unlink(link->lldp_file);
-                return 0;
-        }
-
-        r = sd_lldp_rx_get_neighbors(link->lldp_rx, &l);
-        if (r < 0)
-                return r;
-        if (r == 0) {
-                (void) unlink(link->lldp_file);
-                return 0;
-        }
-
-        n = r;
-
-        r = fopen_temporary(link->lldp_file, &f, &temp_path);
-        if (r < 0)
-                goto finish;
-
-        (void) fchmod(fileno(f), 0644);
-
-        for (i = 0; i < n; i++) {
-                const void *p;
-                le64_t u;
-                size_t sz;
-
-                r = sd_lldp_neighbor_get_raw(l[i], &p, &sz);
-                if (r < 0)
-                        goto finish;
-
-                u = htole64(sz);
-                fwrite(&u, 1, sizeof(u), f);
-                fwrite(p, 1, sz, f);
-        }
-
-        r = fflush_and_check(f);
-        if (r < 0)
-                goto finish;
-
-        r = conservative_rename(temp_path, link->lldp_file);
-        if (r < 0)
-                goto finish;
-
-finish:
-        if (r < 0)
-                log_link_error_errno(link, r, "Failed to save LLDP data to %s: %m", link->lldp_file);
-
-        if (l) {
-                for (i = 0; i < n; i++)
-                        sd_lldp_neighbor_unref(l[i]);
-                free(l);
-        }
-
-        return r;
-}
index 22f6602bd0ffd8c5f853c6680e3e6a957ca0d228..75c9f8ca8602fbfc3b992c1e589319de82c038e7 100644 (file)
@@ -14,7 +14,6 @@ typedef enum LLDPMode {
 } LLDPMode;
 
 int link_lldp_rx_configure(Link *link);
-int link_lldp_save(Link *link);
 
 const char* lldp_mode_to_string(LLDPMode m) _const_;
 LLDPMode lldp_mode_from_string(const char *s) _pure_;
index 1cd23bb4ca80ac9a7eb6e101ec4cc39a6ccd18e2..117db0af6c30590ee00b76e25c41ea78807cb0ac 100644 (file)
@@ -583,8 +583,6 @@ static int link_save(Link *link) {
         if (link->state == LINK_STATE_LINGER)
                 return 0;
 
-        link_lldp_save(link);
-
         admin_state = link_state_to_string(link->state);
         assert(admin_state);
 
index 3384c7c3eae094eb9ad6d00d87e2f922ac11ef06..69a28647c8eb38b8d97fa4cff13451cc33db1197 100644 (file)
@@ -72,8 +72,7 @@ static int run(int argc, char *argv[]) {
          * to support old kernels not supporting AmbientCapabilities=. */
         FOREACH_STRING(p,
                        "/run/systemd/netif/links/",
-                       "/run/systemd/netif/leases/",
-                       "/run/systemd/netif/lldp/") {
+                       "/run/systemd/netif/leases/") {
                 r = mkdir_safe_label(p, 0755, UID_INVALID, GID_INVALID, MKDIR_WARN_MODE);
                 if (r < 0)
                         log_warning_errno(r, "Could not create directory '%s': %m", p);
index b30bc914a58d795d17a7271d7d1bc1136cd1d9a7..24197555ee8d025f7869bd36a0a41f942daa455a 100644 (file)
@@ -10,4 +10,3 @@
 d /run/systemd/netif 0755 systemd-network systemd-network -
 d /run/systemd/netif/links 0755 systemd-network systemd-network -
 d /run/systemd/netif/leases 0755 systemd-network systemd-network -
-d /run/systemd/netif/lldp 0755 systemd-network systemd-network -