Migrate to libyang2
Also update buildroot to latest master:
- the sdbus-cpp version bump patch has been removed, because upstream
now bumped it to an even newer version
- Fix RAUC not able to start a service
(https://github.com/buildroot/buildroot/commit/72308ab9a32de6e8b4b23e42f115ed5ee87e5f33)
Depends-on: https://cesnet-gerrit-czechlight/c/CzechLight/netconf-cli/+/4539
Depends-on: https://gerrit.cesnet.cz/c/CzechLight/netconf-cli/+/4539
Depends-on: https://cesnet-gerrit-czechlight/c/CzechLight/rousette/+/5391
Depends-on: https://gerrit.cesnet.cz/c/CzechLight/rousette/+/5391
Depends-on: https://gerrit.cesnet.cz/c/CzechLight/cla-sysrepo/+/5292
Depends-on: https://cesnet-gerrit-czechlight/c/CzechLight/velia/+/5237
Depends-on: https://gerrit.cesnet.cz/c/CzechLight/velia/+/5237
Change-Id: I6edc19f35accfd41a4b32f7b396981d470e0c07b
diff --git a/board/czechlight/common/patches/systemd/0001-network-Serialize-LLDP-neighbor-to-JSON-format.patch b/board/czechlight/common/patches/systemd/0001-network-Serialize-LLDP-neighbor-to-JSON-format.patch
index 8f85d59..dc8666c 100644
--- a/board/czechlight/common/patches/systemd/0001-network-Serialize-LLDP-neighbor-to-JSON-format.patch
+++ b/board/czechlight/common/patches/systemd/0001-network-Serialize-LLDP-neighbor-to-JSON-format.patch
@@ -1,4 +1,4 @@
-From 64d19ae11c2a3014fa58a0c05620b6ee95352125 Mon Sep 17 00:00:00 2001
+From a98772047310c422872163a54ddf17a9669929e0 Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@users.noreply.github.com>
Date: Thu, 7 Oct 2021 11:16:57 +0200
Subject: [PATCH 1/9] network: Serialize LLDP neighbor to JSON format
@@ -9,13 +9,13 @@
neighbor. Also it possibly contains an integer coding the enabled system
capabilities and port description.
---
- src/libsystemd-network/lldp-neighbor.c | 22 +++++++++++++++
- src/libsystemd-network/sd-lldp.c | 37 ++++++++++++++++++++++++++
- src/systemd/sd-lldp.h | 4 +++
- 3 files changed, 63 insertions(+)
+ src/libsystemd-network/lldp-neighbor.c | 22 ++++++++++++
+ src/libsystemd-network/sd-lldp-rx.c | 46 +++++++++++++++++++++++++-
+ src/systemd/sd-lldp-rx.h | 4 +++
+ 3 files changed, 71 insertions(+), 1 deletion(-)
diff --git a/src/libsystemd-network/lldp-neighbor.c b/src/libsystemd-network/lldp-neighbor.c
-index 3bd775158e..5c00205110 100644
+index 44847b2b92..cacad8adea 100644
--- a/src/libsystemd-network/lldp-neighbor.c
+++ b/src/libsystemd-network/lldp-neighbor.c
@@ -5,6 +5,7 @@
@@ -23,10 +23,10 @@
#include "hexdecoct.h"
#include "in-addr-util.h"
+#include "json.h"
- #include "lldp-internal.h"
#include "lldp-neighbor.h"
#include "memory-util.h"
-@@ -777,3 +778,24 @@ _public_ int sd_lldp_neighbor_get_timestamp(sd_lldp_neighbor *n, clockid_t clock
+ #include "missing_network.h"
+@@ -790,3 +791,24 @@ int sd_lldp_neighbor_get_timestamp(sd_lldp_neighbor *n, clockid_t clock, uint64_
*ret = triple_timestamp_by_clock(&n->timestamp, clock);
return 0;
}
@@ -51,31 +51,32 @@
+ JSON_BUILD_PAIR("portId", JSON_BUILD_STRING(port_id)),
+ JSON_BUILD_PAIR_CONDITION(port_description, "portDescription", JSON_BUILD_STRING(port_description))))));
+}
-diff --git a/src/libsystemd-network/sd-lldp.c b/src/libsystemd-network/sd-lldp.c
-index 49aa876a53..2d51992237 100644
---- a/src/libsystemd-network/sd-lldp.c
-+++ b/src/libsystemd-network/sd-lldp.c
+diff --git a/src/libsystemd-network/sd-lldp-rx.c b/src/libsystemd-network/sd-lldp-rx.c
+index 34bdcb644b..ae4d2d599c 100644
+--- a/src/libsystemd-network/sd-lldp-rx.c
++++ b/src/libsystemd-network/sd-lldp-rx.c
@@ -10,6 +10,7 @@
#include "ether-addr-util.h"
#include "event-util.h"
#include "fd-util.h"
+#include "json.h"
- #include "lldp-internal.h"
#include "lldp-neighbor.h"
#include "lldp-network.h"
-@@ -488,6 +489,42 @@ _public_ int sd_lldp_get_neighbors(sd_lldp *lldp, sd_lldp_neighbor ***ret) {
+ #include "lldp-rx-internal.h"
+@@ -492,7 +493,50 @@ int sd_lldp_rx_get_neighbors(sd_lldp_rx *lldp_rx, sd_lldp_neighbor ***ret) {
return k;
}
-+_public_ int sd_lldp_get_neighbors_json(sd_lldp *lldp, JsonVariant ***ret) {
+-int sd_lldp_rx_set_neighbors_max(sd_lldp_rx *lldp_rx, uint64_t m) {
++_public_ int sd_lldp_rx_get_neighbors_json(sd_lldp_rx *lldp, JsonVariant ***ret) {
+ int i, j, r, n = 0;
-+ sd_lldp_neighbor **l = NULL;
++ _cleanup_free_ sd_lldp_neighbor **l = NULL;
+ JsonVariant **v = NULL;
+
+ assert_return(lldp, -EINVAL);
+ assert_return(ret, -EINVAL);
+
-+ r = sd_lldp_get_neighbors(lldp, &l);
++ r = sd_lldp_rx_get_neighbors(lldp, &l);
+ if (r < 0)
+ return r;
+
@@ -89,13 +90,20 @@
+ r = sd_lldp_neighbor_build_json(l[i], v + i);
+ if (r < 0)
+ goto clear;
++ else
++ sd_lldp_neighbor_unref(l[i]);
+ }
+
+ *ret = v;
+
++ for (i = 0; i < n; j++)
++
+ return n;
+
+clear:
++ for (j = i; j < n; j++)
++ sd_lldp_neighbor_unref(l[j]);
++
+ for (j = 0; j < i; j++)
+ json_variant_unrefp(v + j);
+
@@ -103,27 +111,28 @@
+ return r;
+}
+
- _public_ int sd_lldp_set_neighbors_max(sd_lldp *lldp, uint64_t m) {
- assert_return(lldp, -EINVAL);
++_public_ int sd_lldp_rx_set_neighbors_max(sd_lldp_rx *lldp_rx, uint64_t m) {
+ assert_return(lldp_rx, -EINVAL);
assert_return(m > 0, -EINVAL);
-diff --git a/src/systemd/sd-lldp.h b/src/systemd/sd-lldp.h
-index 64047ee817..7594502802 100644
---- a/src/systemd/sd-lldp.h
-+++ b/src/systemd/sd-lldp.h
-@@ -28,6 +28,8 @@
- _SD_BEGIN_DECLARATIONS;
+diff --git a/src/systemd/sd-lldp-rx.h b/src/systemd/sd-lldp-rx.h
+index bfeac14ce3..8a538b2444 100644
+--- a/src/systemd/sd-lldp-rx.h
++++ b/src/systemd/sd-lldp-rx.h
+@@ -32,6 +32,8 @@ _SD_BEGIN_DECLARATIONS;
+ typedef struct sd_lldp_rx sd_lldp_rx;
+ typedef struct sd_lldp_neighbor sd_lldp_neighbor;
+typedef struct JsonVariant JsonVariant;
+
- /* IEEE 802.1AB-2009 Clause 8: TLV Types */
- enum {
- SD_LLDP_TYPE_END = 0,
-@@ -156,10 +158,12 @@ int sd_lldp_match_capabilities(sd_lldp *lldp, uint16_t mask);
- int sd_lldp_set_filter_address(sd_lldp *lldp, const struct ether_addr *address);
+ typedef enum sd_lldp_rx_event_t {
+ SD_LLDP_RX_EVENT_ADDED,
+ SD_LLDP_RX_EVENT_REMOVED,
+@@ -67,10 +69,12 @@ int sd_lldp_rx_match_capabilities(sd_lldp_rx *lldp_rx, uint16_t mask);
+ int sd_lldp_rx_set_filter_address(sd_lldp_rx *lldp_rx, const struct ether_addr *address);
- int sd_lldp_get_neighbors(sd_lldp *lldp, sd_lldp_neighbor ***neighbors);
-+int sd_lldp_get_neighbors_json(sd_lldp *lldp, JsonVariant ***neighbors);
+ int sd_lldp_rx_get_neighbors(sd_lldp_rx *lldp_rx, sd_lldp_neighbor ***neighbors);
++int sd_lldp_rx_get_neighbors_json(sd_lldp_rx *lldp, JsonVariant ***neighbors);
int sd_lldp_neighbor_from_raw(sd_lldp_neighbor **ret, const void *raw, size_t raw_size);
sd_lldp_neighbor *sd_lldp_neighbor_ref(sd_lldp_neighbor *n);
@@ -133,5 +142,5 @@
/* Access to LLDP frame metadata */
int sd_lldp_neighbor_get_source_address(sd_lldp_neighbor *n, struct ether_addr* address);
--
-2.33.0
+2.34.1
diff --git a/board/czechlight/common/patches/systemd/0002-network-Add-varlink-server.patch b/board/czechlight/common/patches/systemd/0002-network-Add-varlink-server.patch
index 2567d7f..de6b7db 100644
--- a/board/czechlight/common/patches/systemd/0002-network-Add-varlink-server.patch
+++ b/board/czechlight/common/patches/systemd/0002-network-Add-varlink-server.patch
@@ -1,4 +1,4 @@
-From 36f46b1f60453bdbb8841bd86724ff868149594b Mon Sep 17 00:00:00 2001
+From a99f62ee2c89b3631a23426eedfa477aa9d8dbd9 Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@users.noreply.github.com>
Date: Tue, 24 Aug 2021 14:59:40 +0200
Subject: [PATCH 2/9] network: Add varlink server
@@ -16,10 +16,10 @@
create mode 100644 src/network/networkd-varlink.h
diff --git a/src/network/meson.build b/src/network/meson.build
-index 4e137d7b9e..2c97da60d3 100644
+index 5857439c5a..430dadbf05 100644
--- a/src/network/meson.build
+++ b/src/network/meson.build
-@@ -129,6 +129,8 @@ sources = files('''
+@@ -137,6 +137,8 @@ sources = files('''
networkd-sysctl.h
networkd-util.c
networkd-util.h
@@ -29,18 +29,18 @@
networkd-wifi.h
tc/cake.c
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
-index 374d27bef3..5e53498711 100644
+index 7e89366ae8..9f6a2553f6 100644
--- a/src/network/networkd-manager.c
+++ b/src/network/networkd-manager.c
-@@ -38,6 +38,7 @@
+@@ -41,6 +41,7 @@
#include "networkd-routing-policy-rule.h"
#include "networkd-speed-meter.h"
#include "networkd-state-file.h"
+#include "networkd-varlink.h"
+ #include "networkd-wifi.h"
#include "ordered-set.h"
#include "path-lookup.h"
- #include "path-util.h"
-@@ -509,6 +510,8 @@ Manager* manager_free(Manager *m) {
+@@ -543,6 +544,8 @@ Manager* manager_free(Manager *m) {
m->fw_ctx = fw_ctx_free(m->fw_ctx);
@@ -49,7 +49,7 @@
return mfree(m);
}
-@@ -518,6 +521,10 @@ int manager_start(Manager *m) {
+@@ -552,6 +555,10 @@ int manager_start(Manager *m) {
assert(m);
@@ -61,7 +61,7 @@
if (r < 0)
return log_error_errno(r, "Failed to initialize speed meter: %m");
diff --git a/src/network/networkd-manager.h b/src/network/networkd-manager.h
-index 4ee48f3468..f8d4d00db2 100644
+index 36313589a3..a0c0336ce5 100644
--- a/src/network/networkd-manager.h
+++ b/src/network/networkd-manager.h
@@ -16,6 +16,7 @@
@@ -72,7 +72,7 @@
struct Manager {
sd_netlink *rtnl;
-@@ -99,6 +100,8 @@ struct Manager {
+@@ -95,6 +96,8 @@ struct Manager {
FirewallContext *fw_ctx;
OrderedSet *request_queue;
@@ -80,7 +80,7 @@
+ VarlinkServer *varlink_server;
};
- int manager_new(Manager **ret);
+ int manager_new(Manager **ret, bool test_mode);
diff --git a/src/network/networkd-varlink.c b/src/network/networkd-varlink.c
new file mode 100644
index 0000000000..57d8acb967
@@ -135,5 +135,5 @@
+int manager_varlink_init(Manager *m);
+void manager_varlink_done(Manager *m);
--
-2.33.0
+2.34.1
diff --git a/board/czechlight/common/patches/systemd/0003-network-Add-LLDP-neighbors-method-to-varlink-server.patch b/board/czechlight/common/patches/systemd/0003-network-Add-LLDP-neighbors-method-to-varlink-server.patch
index 630b389..2d4bd3f 100644
--- a/board/czechlight/common/patches/systemd/0003-network-Add-LLDP-neighbors-method-to-varlink-server.patch
+++ b/board/czechlight/common/patches/systemd/0003-network-Add-LLDP-neighbors-method-to-varlink-server.patch
@@ -1,4 +1,4 @@
-From 3ee0693ac819543610120542f8e60fb95fe6f0d4 Mon Sep 17 00:00:00 2001
+From 04fa6f4d5d019900b084787b9ca2d4439f26d302 Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@users.noreply.github.com>
Date: Wed, 1 Sep 2021 08:30:20 +0200
Subject: [PATCH 3/9] network: Add LLDP neighbors method to varlink server
@@ -12,7 +12,7 @@
1 file changed, 77 insertions(+)
diff --git a/src/network/networkd-varlink.c b/src/network/networkd-varlink.c
-index 57d8acb967..f86be4e903 100644
+index 57d8acb967..5bc65c39b7 100644
--- a/src/network/networkd-varlink.c
+++ b/src/network/networkd-varlink.c
@@ -1,6 +1,76 @@
@@ -63,7 +63,7 @@
+ if (r < 0)
+ return varlink_error_invalid_parameter(link, JSON_VARIANT_STRING_CONST("ifindex"));
+
-+ r = sd_lldp_get_neighbors_json(l->lldp, &neighbors);
++ r = sd_lldp_rx_get_neighbors_json(l->lldp_rx, &neighbors);
+ if (r < 0)
+ return r;
+ if (r == 0)
@@ -114,5 +114,5 @@
}
--
-2.33.0
+2.34.1
diff --git a/board/czechlight/common/patches/systemd/0004-varlink-Implement-varlink_observe_complete.patch b/board/czechlight/common/patches/systemd/0004-varlink-Implement-varlink_observe_complete.patch
index 579dd9f..ca5c9f0 100644
--- a/board/czechlight/common/patches/systemd/0004-varlink-Implement-varlink_observe_complete.patch
+++ b/board/czechlight/common/patches/systemd/0004-varlink-Implement-varlink_observe_complete.patch
@@ -1,4 +1,4 @@
-From 657ce718099d6d82d2a6757909496d285221b22f Mon Sep 17 00:00:00 2001
+From 4e7bdd09a12d9ed1695980d8edf94841a5c11cd8 Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@users.noreply.github.com>
Date: Thu, 9 Sep 2021 09:19:05 +0200
Subject: [PATCH 4/9] varlink: Implement varlink_observe_complete
@@ -16,7 +16,7 @@
2 files changed, 32 insertions(+)
diff --git a/src/shared/varlink.c b/src/shared/varlink.c
-index 8da568e208..23a72516fb 100644
+index e0038dfd28..7e5c9657f8 100644
--- a/src/shared/varlink.c
+++ b/src/shared/varlink.c
@@ -1440,6 +1440,37 @@ int varlink_observeb(Varlink *v, const char *method, ...) {
@@ -50,7 +50,7 @@
+ return varlink_log_errno(v, SYNTHETIC_ERRNO(ETIME), "Connection timed out.");
+
+ default:
-+ assert_not_reached("Unexpected state");
++ assert_not_reached();
+ }
+}
+
@@ -70,5 +70,5 @@
/* Enqueue a final reply */
int varlink_reply(Varlink *v, JsonVariant *parameters);
--
-2.33.0
+2.34.1
diff --git a/board/czechlight/common/patches/systemd/0005-networkctl-lldp-uses-table_empty_string-instead-of-s.patch b/board/czechlight/common/patches/systemd/0005-networkctl-lldp-uses-table_empty_string-instead-of-s.patch
index b1c97bc..141e5af 100644
--- a/board/czechlight/common/patches/systemd/0005-networkctl-lldp-uses-table_empty_string-instead-of-s.patch
+++ b/board/czechlight/common/patches/systemd/0005-networkctl-lldp-uses-table_empty_string-instead-of-s.patch
@@ -1,4 +1,4 @@
-From 876c47e0743031e352a126000c87b0b51209408d Mon Sep 17 00:00:00 2001
+From 3f997c34cdaef7a66fdb1d0bc10a1bafd4f7e656 Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@users.noreply.github.com>
Date: Thu, 7 Oct 2021 14:11:45 +0200
Subject: [PATCH 5/9] networkctl: lldp uses table_empty_string instead of strna
@@ -8,10 +8,10 @@
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/network/networkctl.c b/src/network/networkctl.c
-index 9bbfe177b1..235731079d 100644
+index 68dd4b185c..30cd75eec0 100644
--- a/src/network/networkctl.c
+++ b/src/network/networkctl.c
-@@ -2531,6 +2531,9 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+@@ -2529,6 +2529,9 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
assert_se(cell = table_get_cell(table, 0, 5));
table_set_minimum_width(table, cell, 16);
@@ -21,7 +21,7 @@
for (int i = 0; i < c; i++) {
_cleanup_fclose_ FILE *f = NULL;
-@@ -2592,11 +2595,11 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+@@ -2590,11 +2593,11 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
r = table_add_many(table,
TABLE_STRING, links[i].name,
@@ -39,5 +39,5 @@
return table_log_add_error(r);
--
-2.33.0
+2.34.1
diff --git a/board/czechlight/common/patches/systemd/0006-networkctl-lldp-table-now-ellpsizes-via-table-functi.patch b/board/czechlight/common/patches/systemd/0006-networkctl-lldp-table-now-ellpsizes-via-table-functi.patch
index add9432..ef0c2e4 100644
--- a/board/czechlight/common/patches/systemd/0006-networkctl-lldp-table-now-ellpsizes-via-table-functi.patch
+++ b/board/czechlight/common/patches/systemd/0006-networkctl-lldp-table-now-ellpsizes-via-table-functi.patch
@@ -1,4 +1,4 @@
-From 03305bb0f181446ae4f1698c14e72470ae642bbb Mon Sep 17 00:00:00 2001
+From 90271bd69a7488714a51173dcec3f349459761c9 Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@users.noreply.github.com>
Date: Thu, 7 Oct 2021 14:16:53 +0200
Subject: [PATCH 6/9] networkctl: lldp table now ellpsizes via table functions
@@ -14,10 +14,10 @@
1 file changed, 7 insertions(+), 25 deletions(-)
diff --git a/src/network/networkctl.c b/src/network/networkctl.c
-index 235731079d..a1d42cbe92 100644
+index 30cd75eec0..46c08b5549 100644
--- a/src/network/networkctl.c
+++ b/src/network/networkctl.c
-@@ -2515,21 +2515,27 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+@@ -2513,21 +2513,27 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
assert_se(cell = table_get_cell(table, 0, 0));
table_set_minimum_width(table, cell, 16);
@@ -45,7 +45,7 @@
if (table_set_empty_string(table, "n/a") < 0)
return log_oom();
-@@ -2546,7 +2552,7 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+@@ -2544,7 +2550,7 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
}
for (;;) {
@@ -54,7 +54,7 @@
const char *chassis_id = NULL, *port_id = NULL, *system_name = NULL, *port_description = NULL;
_cleanup_(sd_lldp_neighbor_unrefp) sd_lldp_neighbor *n = NULL;
uint16_t cc;
-@@ -2564,30 +2570,6 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+@@ -2562,30 +2568,6 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
(void) sd_lldp_neighbor_get_system_name(n, &system_name);
(void) sd_lldp_neighbor_get_port_description(n, &port_description);
@@ -86,5 +86,5 @@
capabilities = lldp_capabilities_to_string(cc);
all |= cc;
--
-2.33.0
+2.34.1
diff --git a/board/czechlight/common/patches/systemd/0007-networkctl-lldp-now-uses-varlink-call.patch b/board/czechlight/common/patches/systemd/0007-networkctl-lldp-now-uses-varlink-call.patch
index fc8b007..d898278 100644
--- a/board/czechlight/common/patches/systemd/0007-networkctl-lldp-now-uses-varlink-call.patch
+++ b/board/czechlight/common/patches/systemd/0007-networkctl-lldp-now-uses-varlink-call.patch
@@ -1,4 +1,4 @@
-From e5b7f28a216ee1986c417f83132e3daf39ef5fd2 Mon Sep 17 00:00:00 2001
+From ffcce15c1f130f8a52ab050d009946a50472dfbc Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@users.noreply.github.com>
Date: Wed, 15 Sep 2021 14:42:34 +0200
Subject: [PATCH 7/9] networkctl: lldp now uses varlink call
@@ -6,11 +6,11 @@
`networkctl lldp` now uses varlink call to the networkd to query LLDP
neighbor data.
---
- src/network/networkctl.c | 157 ++++++++++++++++++++++++++++-----------
- 1 file changed, 113 insertions(+), 44 deletions(-)
+ src/network/networkctl.c | 215 +++++++++++++++++++++++++--------------
+ 1 file changed, 139 insertions(+), 76 deletions(-)
diff --git a/src/network/networkctl.c b/src/network/networkctl.c
-index a1d42cbe92..f98779da7e 100644
+index 46c08b5549..a10f3f3fc7 100644
--- a/src/network/networkctl.c
+++ b/src/network/networkctl.c
@@ -36,6 +36,7 @@
@@ -21,7 +21,7 @@
#include "local-addresses.h"
#include "locale-util.h"
#include "logs-show.h"
-@@ -61,6 +62,7 @@
+@@ -62,6 +63,7 @@
#include "strxcpyx.h"
#include "terminal-util.h"
#include "unit-def.h"
@@ -29,7 +29,7 @@
#include "verbs.h"
#include "wifi-util.h"
-@@ -2481,14 +2483,104 @@ static void lldp_capabilities_legend(uint16_t x) {
+@@ -2479,14 +2481,103 @@ static void lldp_capabilities_legend(uint16_t x) {
puts("");
}
@@ -52,14 +52,19 @@
+}
+
+typedef struct LLDPUserdata {
-+ int *neighbors_count;
-+ uint16_t *capabilities_all;
++ int neighbors_count;
++ uint16_t capabilities_all;
++
++ Table *table;
+
+ char *link_name;
-+ Table *table;
+} LLDPUserdata;
+
-+static int lldp_neighbours_varlink_reply(Varlink *link, JsonVariant *parameters, const char *error_id, VarlinkReplyFlags flags, void *userdata) {
++static void lldp_userdata_freep(LLDPUserdata* p) {
++ table_unref(p->table);
++}
++
++static int lldp_neighbors_varlink_reply(Varlink *link, JsonVariant *parameters, const char *error_id, VarlinkReplyFlags flags, void *userdata) {
+ int r;
+ _cleanup_free_ char *capabilities = NULL;
+ LLDPUserdata *udata;
@@ -97,11 +102,8 @@
+ return table_log_add_error(r);
+ }
+
-+ if (udata->neighbors_count)
-+ *(udata->neighbors_count) += 1;
-+
-+ if (udata->capabilities_all)
-+ *(udata->capabilities_all) |= entry.capabilities;
++ udata->neighbors_count += 1;
++ udata->capabilities_all |= entry.capabilities;
+
+ return 0;
+}
@@ -114,12 +116,10 @@
+ _cleanup_(varlink_flush_close_unrefp) Varlink *link = NULL;
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
_cleanup_(link_info_array_freep) LinkInfo *links = NULL;
- _cleanup_(table_unrefp) Table *table = NULL;
+- _cleanup_(table_unrefp) Table *table = NULL;
- int r, c, m = 0;
- uint16_t all = 0;
-+ int neighbors_count = 0;
-+ uint16_t capabilities_all = 0;
-+ LLDPUserdata udata = {};
++ _cleanup_(lldp_userdata_freep) LLDPUserdata udata = {};
TableCell *cell;
+ r = varlink_connect_address(&link, address);
@@ -129,20 +129,91 @@
+ (void) varlink_set_description(link, "network");
+ (void) varlink_set_relative_timeout(link, USEC_INFINITY);
+
-+ r = varlink_bind_reply(link, lldp_neighbours_varlink_reply);
++ r = varlink_bind_reply(link, lldp_neighbors_varlink_reply);
+ if (r < 0)
+ return log_error_errno(r, "Failed to bind reply callback: %m");
+
r = sd_netlink_open(&rtnl);
if (r < 0)
return log_error_errno(r, "Failed to connect to netlink: %m");
-@@ -2540,53 +2632,30 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
- if (table_set_empty_string(table, "n/a") < 0)
+@@ -2497,103 +2588,75 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+
+ pager_open(arg_pager_flags);
+
+- table = table_new("link",
+- "chassis id",
+- "system name",
+- "caps",
+- "port id",
+- "port description");
+- if (!table)
++ udata.table = table_new("link",
++ "chassis id",
++ "system name",
++ "caps",
++ "port id",
++ "port description");
++ if (!udata.table)
return log_oom();
-- for (int i = 0; i < c; i++) {
+ if (arg_full)
+- table_set_width(table, 0);
++ table_set_width(udata.table, 0);
+
+- table_set_header(table, arg_legend);
++ table_set_header(udata.table, arg_legend);
+
+- assert_se(cell = table_get_cell(table, 0, 0));
+- table_set_minimum_width(table, cell, 16);
+- table_set_maximum_width(table, cell, 16);
++ assert_se(cell = table_get_cell(udata.table, 0, 0));
++ table_set_minimum_width(udata.table, cell, 16);
++ table_set_maximum_width(udata.table, cell, 16);
+
+- assert_se(cell = table_get_cell(table, 0, 1));
+- table_set_minimum_width(table, cell, 17);
+- table_set_maximum_width(table, cell, 17);
++ assert_se(cell = table_get_cell(udata.table, 0, 1));
++ table_set_minimum_width(udata.table, cell, 17);
++ table_set_maximum_width(udata.table, cell, 17);
+
+- assert_se(cell = table_get_cell(table, 0, 2));
+- table_set_minimum_width(table, cell, 16);
+- table_set_maximum_width(table, cell, 16);
++ assert_se(cell = table_get_cell(udata.table, 0, 2));
++ table_set_minimum_width(udata.table, cell, 16);
++ table_set_maximum_width(udata.table, cell, 16);
+
+- assert_se(cell = table_get_cell(table, 0, 3));
+- table_set_minimum_width(table, cell, 11);
+- table_set_maximum_width(table, cell, 11);
++ assert_se(cell = table_get_cell(udata.table, 0, 3));
++ table_set_minimum_width(udata.table, cell, 11);
++ table_set_maximum_width(udata.table, cell, 11);
+
+- assert_se(cell = table_get_cell(table, 0, 4));
+- table_set_minimum_width(table, cell, 17);
+- table_set_maximum_width(table, cell, 17);
++ assert_se(cell = table_get_cell(udata.table, 0, 4));
++ table_set_minimum_width(udata.table, cell, 17);
++ table_set_maximum_width(udata.table, cell, 17);
+
+- assert_se(cell = table_get_cell(table, 0, 5));
+- table_set_minimum_width(table, cell, 16);
+- table_set_maximum_width(table, cell, 16);
++ assert_se(cell = table_get_cell(udata.table, 0, 5));
++ table_set_minimum_width(udata.table, cell, 16);
++ table_set_maximum_width(udata.table, cell, 16);
+
+- if (table_set_empty_string(table, "n/a") < 0)
++ if (table_set_empty_string(udata.table, "n/a") < 0)
+ return log_oom();
+
++ varlink_set_userdata(link, &udata);
++
+ for (int i = 0; i < c; i++) {
- _cleanup_fclose_ FILE *f = NULL;
-+ udata.table = table;
++ _cleanup_(json_variant_unrefp) JsonVariant *cparams = NULL;
- r = open_lldp_neighbors(links[i].ifindex, &f);
- if (r == -ENOENT)
@@ -151,15 +222,17 @@
- log_warning_errno(r, "Failed to open LLDP data for %i, ignoring: %m", links[i].ifindex);
- continue;
- }
-+ udata.neighbors_count = &neighbors_count;
-+ udata.capabilities_all = &capabilities_all;
++ udata.link_name = links[i].name;
- for (;;) {
- _cleanup_free_ char *capabilities = NULL;
- const char *chassis_id = NULL, *port_id = NULL, *system_name = NULL, *port_description = NULL;
- _cleanup_(sd_lldp_neighbor_unrefp) sd_lldp_neighbor *n = NULL;
- uint16_t cc;
-+ varlink_set_userdata(link, &udata);
++ r = json_build(&cparams, JSON_BUILD_OBJECT(
++ JSON_BUILD_PAIR("ifindex", JSON_BUILD_UNSIGNED(links[i].ifindex))));
++ if (r < 0)
++ return r;
- r = next_lldp_neighbor(f, &n);
- if (r < 0) {
@@ -168,24 +241,20 @@
- }
- if (r == 0)
- break;
-+ for (int i = 0; i < c; i++) {
-+ _cleanup_(json_variant_unrefp) JsonVariant *cparams = NULL;
++ r = varlink_observe(link, method, cparams);
++ if (r < 0)
++ return log_error_errno(r, "Failed to execute varlink call: %m");
- (void) sd_lldp_neighbor_get_chassis_id_as_string(n, &chassis_id);
- (void) sd_lldp_neighbor_get_port_id_as_string(n, &port_id);
- (void) sd_lldp_neighbor_get_system_name(n, &system_name);
- (void) sd_lldp_neighbor_get_port_description(n, &port_description);
-+ udata.link_name = links[i].name;
-
+-
- if (sd_lldp_neighbor_get_enabled_capabilities(n, &cc) >= 0) {
- capabilities = lldp_capabilities_to_string(cc);
- all |= cc;
- }
-+ r = json_build(&cparams, JSON_BUILD_OBJECT(
-+ JSON_BUILD_PAIR("ifindex", JSON_BUILD_UNSIGNED(links[i].ifindex))));
-+ if (r < 0)
-+ return r;
-
+-
- r = table_add_many(table,
- TABLE_STRING, links[i].name,
- TABLE_STRING, chassis_id,
@@ -195,10 +264,7 @@
- TABLE_STRING, port_description);
- if (r < 0)
- return table_log_add_error(r);
-+ r = varlink_observe(link, method, cparams);
-+ if (r < 0)
-+ return log_error_errno(r, "Failed to execute varlink call: %m");
-
+-
- m++;
- }
+ r = varlink_observe_complete(link);
@@ -206,18 +272,19 @@
+ return r;
}
- r = table_print(table, NULL);
-@@ -2594,8 +2663,8 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+- r = table_print(table, NULL);
++ r = table_print(udata.table, NULL);
+ if (r < 0)
return table_log_print_error(r);
if (arg_legend) {
- lldp_capabilities_legend(all);
- printf("\n%i neighbors listed.\n", m);
-+ lldp_capabilities_legend(capabilities_all);
-+ printf("\n%i neighbors listed.\n", neighbors_count);
++ lldp_capabilities_legend(udata.capabilities_all);
++ printf("\n%i neighbors listed.\n", udata.neighbors_count);
}
return 0;
--
-2.33.0
+2.34.1
diff --git a/board/czechlight/common/patches/systemd/0008-networkctl-allow-format-LLDP-capabilities-string-wit.patch b/board/czechlight/common/patches/systemd/0008-networkctl-allow-format-LLDP-capabilities-string-wit.patch
index 72f855d..6b2c299 100644
--- a/board/czechlight/common/patches/systemd/0008-networkctl-allow-format-LLDP-capabilities-string-wit.patch
+++ b/board/czechlight/common/patches/systemd/0008-networkctl-allow-format-LLDP-capabilities-string-wit.patch
@@ -1,4 +1,4 @@
-From 658e0a69a353e2559ab04c3caa7ea1eaf0ef6dda Mon Sep 17 00:00:00 2001
+From b6b2ad094aba092aadda307c4d786a541d878211 Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@users.noreply.github.com>
Date: Wed, 15 Sep 2021 14:30:19 +0200
Subject: [PATCH 8/9] networkctl: allow format LLDP capabilities string without
@@ -11,10 +11,10 @@
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/network/networkctl.c b/src/network/networkctl.c
-index f98779da7e..89abaf26da 100644
+index a10f3f3fc7..9fbeed6908 100644
--- a/src/network/networkctl.c
+++ b/src/network/networkctl.c
-@@ -2433,21 +2433,24 @@ static int link_status(int argc, char *argv[], void *userdata) {
+@@ -2431,21 +2431,24 @@ static int link_status(int argc, char *argv[], void *userdata) {
return 0;
}
@@ -44,7 +44,7 @@
return ret;
}
-@@ -2534,7 +2537,7 @@ static int lldp_neighbours_varlink_reply(Varlink *link, JsonVariant *parameters,
+@@ -2537,7 +2540,7 @@ static int lldp_neighbors_varlink_reply(Varlink *link, JsonVariant *parameters,
return r;
if (udata->table) {
@@ -54,5 +54,5 @@
r = table_add_many(udata->table,
TABLE_STRING, udata->link_name,
--
-2.33.0
+2.34.1
diff --git a/board/czechlight/common/patches/systemd/0009-networkctl-JSON-output-in-networkctl-lldp.patch b/board/czechlight/common/patches/systemd/0009-networkctl-JSON-output-in-networkctl-lldp.patch
index 5d43f1d..f85c6c3 100644
--- a/board/czechlight/common/patches/systemd/0009-networkctl-JSON-output-in-networkctl-lldp.patch
+++ b/board/czechlight/common/patches/systemd/0009-networkctl-JSON-output-in-networkctl-lldp.patch
@@ -1,4 +1,4 @@
-From 7479e9e720909a2d2360f684e85821195301dce2 Mon Sep 17 00:00:00 2001
+From f681abcf74f1a03f64fbcec15c33aae026dcdf51 Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@users.noreply.github.com>
Date: Wed, 6 Oct 2021 10:11:31 +0200
Subject: [PATCH 9/9] networkctl: JSON output in networkctl lldp
@@ -6,27 +6,35 @@
`networkctl lldp` now outputs also in JSON format when `--json=*`
argument passed. The LLDP neighbors are listed in per interface lists.
---
- src/network/networkctl.c | 123 ++++++++++++++++++++++++++-------------
- 1 file changed, 82 insertions(+), 41 deletions(-)
+ src/network/networkctl.c | 136 +++++++++++++++++++++++++--------------
+ 1 file changed, 88 insertions(+), 48 deletions(-)
diff --git a/src/network/networkctl.c b/src/network/networkctl.c
-index 89abaf26da..124ee8f0c7 100644
+index 9fbeed6908..0f48aa4bf7 100644
--- a/src/network/networkctl.c
+++ b/src/network/networkctl.c
-@@ -2510,6 +2510,7 @@ typedef struct LLDPUserdata {
+@@ -2507,12 +2507,14 @@ typedef struct LLDPUserdata {
+ uint16_t capabilities_all;
+
+ Table *table;
++ JsonVariant *json;
char *link_name;
- Table *table;
-+ JsonVariant **json_list;
} LLDPUserdata;
- static int lldp_neighbours_varlink_reply(Varlink *link, JsonVariant *parameters, const char *error_id, VarlinkReplyFlags flags, void *userdata) {
-@@ -2556,6 +2557,26 @@ static int lldp_neighbours_varlink_reply(Varlink *link, JsonVariant *parameters,
- if (udata->capabilities_all)
- *(udata->capabilities_all) |= entry.capabilities;
+ static void lldp_userdata_freep(LLDPUserdata* p) {
+ table_unref(p->table);
++ json_variant_unref(p->json);
+ }
-+ if (udata->json_list) {
+ static int lldp_neighbors_varlink_reply(Varlink *link, JsonVariant *parameters, const char *error_id, VarlinkReplyFlags flags, void *userdata) {
+@@ -2556,6 +2558,34 @@ static int lldp_neighbors_varlink_reply(Varlink *link, JsonVariant *parameters,
+ udata->neighbors_count += 1;
+ udata->capabilities_all |= entry.capabilities;
+
++ if (udata->json) {
+ _cleanup_(json_variant_unrefp) JsonVariant *v = NULL;
++ _cleanup_(json_variant_unrefp) JsonVariant *neighbors = NULL;
+
+ capabilities = lldp_capabilities_to_string(entry.capabilities, false);
+
@@ -40,7 +48,14 @@
+ if (r < 0)
+ return r;
+
-+ r = json_variant_append_array(udata->json_list, v);
++
++ neighbors = json_variant_ref(json_variant_by_key(udata->json, udata->link_name));
++
++ r = json_variant_append_array(&neighbors, v);
++ if (r < 0)
++ return r;
++
++ r = json_variant_set_field(&udata->json, udata->link_name, neighbors);
+ if (r < 0)
+ return r;
+ }
@@ -48,156 +63,134 @@
return 0;
}
-@@ -2568,10 +2589,10 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+@@ -2568,7 +2598,6 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
_cleanup_(link_info_array_freep) LinkInfo *links = NULL;
- _cleanup_(table_unrefp) Table *table = NULL;
-+ _cleanup_(json_variant_unrefp) JsonVariant *v = NULL;
- int neighbors_count = 0;
- uint16_t capabilities_all = 0;
- LLDPUserdata udata = {};
+ _cleanup_(lldp_userdata_freep) LLDPUserdata udata = {};
- TableCell *cell;
r = varlink_connect_address(&link, address);
if (r < 0)
-@@ -2592,50 +2613,58 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
- if (c < 0)
+@@ -2590,47 +2619,54 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
return c;
-- (void) pager_open(arg_pager_flags);
+ pager_open(arg_pager_flags);
+-
+- udata.table = table_new("link",
+- "chassis id",
+- "system name",
+- "caps",
+- "port id",
+- "port description");
+- if (!udata.table)
+- return log_oom();
+-
+- if (arg_full)
+- table_set_width(udata.table, 0);
+-
+- table_set_header(udata.table, arg_legend);
+-
+- assert_se(cell = table_get_cell(udata.table, 0, 0));
+- table_set_minimum_width(udata.table, cell, 16);
+- table_set_maximum_width(udata.table, cell, 16);
+-
+- assert_se(cell = table_get_cell(udata.table, 0, 1));
+- table_set_minimum_width(udata.table, cell, 17);
+- table_set_maximum_width(udata.table, cell, 17);
+-
+- assert_se(cell = table_get_cell(udata.table, 0, 2));
+- table_set_minimum_width(udata.table, cell, 16);
+- table_set_maximum_width(udata.table, cell, 16);
+-
+- assert_se(cell = table_get_cell(udata.table, 0, 3));
+- table_set_minimum_width(udata.table, cell, 11);
+- table_set_maximum_width(udata.table, cell, 11);
+-
+- assert_se(cell = table_get_cell(udata.table, 0, 4));
+- table_set_minimum_width(udata.table, cell, 17);
+- table_set_maximum_width(udata.table, cell, 17);
+-
+- assert_se(cell = table_get_cell(udata.table, 0, 5));
+- table_set_minimum_width(udata.table, cell, 16);
+- table_set_maximum_width(udata.table, cell, 16);
+-
+- if (table_set_empty_string(udata.table, "n/a") < 0)
+- return log_oom();
+ if (arg_json_format_flags == JSON_FORMAT_OFF) {
+ TableCell *cell;
-
-- table = table_new("link",
-- "chassis id",
-- "system name",
-- "caps",
-- "port id",
-- "port description");
-- if (!table)
-- return log_oom();
-+ (void) pager_open(arg_pager_flags);
-
-- if (arg_full)
-- table_set_width(table, 0);
-+ table = table_new("link",
-+ "chassis id",
-+ "system name",
-+ "caps",
-+ "port id",
-+ "port description");
-+ if (!table)
-+ return log_oom();
-
-- table_set_header(table, arg_legend);
-+ if (arg_full)
-+ table_set_width(table, 0);
-
-- assert_se(cell = table_get_cell(table, 0, 0));
-- table_set_minimum_width(table, cell, 16);
-- table_set_maximum_width(table, cell, 16);
-+ table_set_header(table, arg_legend);
-
-- assert_se(cell = table_get_cell(table, 0, 1));
-- table_set_minimum_width(table, cell, 17);
-- table_set_maximum_width(table, cell, 17);
-+ assert_se(cell = table_get_cell(table, 0, 0));
-+ table_set_minimum_width(table, cell, 16);
-+ table_set_maximum_width(table, cell, 16);
-
-- assert_se(cell = table_get_cell(table, 0, 2));
-- table_set_minimum_width(table, cell, 16);
-- table_set_maximum_width(table, cell, 16);
-+ assert_se(cell = table_get_cell(table, 0, 1));
-+ table_set_minimum_width(table, cell, 17);
-+ table_set_maximum_width(table, cell, 17);
-
-- assert_se(cell = table_get_cell(table, 0, 3));
-- table_set_minimum_width(table, cell, 11);
-- table_set_maximum_width(table, cell, 11);
-+ assert_se(cell = table_get_cell(table, 0, 2));
-+ table_set_minimum_width(table, cell, 16);
-+ table_set_maximum_width(table, cell, 16);
-
-- assert_se(cell = table_get_cell(table, 0, 4));
-- table_set_minimum_width(table, cell, 17);
-- table_set_maximum_width(table, cell, 17);
-+ assert_se(cell = table_get_cell(table, 0, 3));
-+ table_set_minimum_width(table, cell, 11);
-+ table_set_maximum_width(table, cell, 11);
-
-- assert_se(cell = table_get_cell(table, 0, 5));
-- table_set_minimum_width(table, cell, 16);
-- table_set_maximum_width(table, cell, 16);
-+ assert_se(cell = table_get_cell(table, 0, 4));
-+ table_set_minimum_width(table, cell, 17);
-+ table_set_maximum_width(table, cell, 17);
-
-- if (table_set_empty_string(table, "n/a") < 0)
-- return log_oom();
-+ assert_se(cell = table_get_cell(table, 0, 5));
-+ table_set_minimum_width(table, cell, 16);
-+ table_set_maximum_width(table, cell, 16);
+
-+ if (table_set_empty_string(table, "n/a") < 0)
++ udata.table = table_new("link",
++ "chassis id",
++ "system name",
++ "caps",
++ "port id",
++ "port description");
++ if (!udata.table)
+ return log_oom();
-
-- udata.table = table;
-+ udata.table = table;
++
++ if (arg_full)
++ table_set_width(udata.table, 0);
++
++ table_set_header(udata.table, arg_legend);
++
++ assert_se(cell = table_get_cell(udata.table, 0, 0));
++ table_set_minimum_width(udata.table, cell, 16);
++ table_set_maximum_width(udata.table, cell, 16);
++
++ assert_se(cell = table_get_cell(udata.table, 0, 1));
++ table_set_minimum_width(udata.table, cell, 17);
++ table_set_maximum_width(udata.table, cell, 17);
++
++ assert_se(cell = table_get_cell(udata.table, 0, 2));
++ table_set_minimum_width(udata.table, cell, 16);
++ table_set_maximum_width(udata.table, cell, 16);
++
++ assert_se(cell = table_get_cell(udata.table, 0, 3));
++ table_set_minimum_width(udata.table, cell, 11);
++ table_set_maximum_width(udata.table, cell, 11);
++
++ assert_se(cell = table_get_cell(udata.table, 0, 4));
++ table_set_minimum_width(udata.table, cell, 17);
++ table_set_maximum_width(udata.table, cell, 17);
++
++ assert_se(cell = table_get_cell(udata.table, 0, 5));
++ table_set_minimum_width(udata.table, cell, 16);
++ table_set_maximum_width(udata.table, cell, 16);
++
++ if (table_set_empty_string(udata.table, "n/a") < 0)
++ return log_oom();
+ } else {
-+ r = json_build(&v, JSON_BUILD_EMPTY_OBJECT);
++ r = json_build(&udata.json, JSON_BUILD_EMPTY_OBJECT);
+ if (r < 0)
+ return r;
+ }
- udata.neighbors_count = &neighbors_count;
- udata.capabilities_all = &capabilities_all;
-@@ -2643,10 +2672,14 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
varlink_set_userdata(link, &udata);
- for (int i = 0; i < c; i++) {
-- _cleanup_(json_variant_unrefp) JsonVariant *cparams = NULL;
-+ _cleanup_(json_variant_unrefp) JsonVariant *cparams = NULL, *neighbors = NULL;
-
- udata.link_name = links[i].name;
-
-+ if (arg_json_format_flags != JSON_FORMAT_OFF) {
-+ udata.json_list = &neighbors;
-+ }
-+
- r = json_build(&cparams, JSON_BUILD_OBJECT(
- JSON_BUILD_PAIR("ifindex", JSON_BUILD_UNSIGNED(links[i].ifindex))));
- if (r < 0)
-@@ -2659,15 +2692,23 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
- r = varlink_observe_complete(link);
- if (r < 0)
+@@ -2653,13 +2689,17 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
return r;
-+
-+ if (!json_variant_is_blank_array(neighbors)) {
-+ json_variant_set_field(&v, links[i].name, neighbors);
-+ }
}
-- r = table_print(table, NULL);
+- r = table_print(udata.table, NULL);
- if (r < 0)
- return table_log_print_error(r);
+ if (arg_json_format_flags == JSON_FORMAT_OFF) {
-+ r = table_print(table, NULL);
++ r = table_print(udata.table, NULL);
+ if (r < 0)
+ return table_log_print_error(r);
- if (arg_legend) {
-- lldp_capabilities_legend(capabilities_all);
-- printf("\n%i neighbors listed.\n", neighbors_count);
+- lldp_capabilities_legend(udata.capabilities_all);
+- printf("\n%i neighbors listed.\n", udata.neighbors_count);
+ if (arg_legend) {
-+ lldp_capabilities_legend(capabilities_all);
-+ printf("\n%i neighbors listed.\n", neighbors_count);
++ lldp_capabilities_legend(udata.capabilities_all);
++ printf("\n%i neighbors listed.\n", udata.neighbors_count);
+ }
+ } else {
-+ json_variant_dump(v, arg_json_format_flags, NULL, NULL);
++ json_variant_dump(udata.json, arg_json_format_flags, NULL, NULL);
}
return 0;
--
-2.33.0
+2.34.1
diff --git a/board/czechlight/common/patches/systemd/random-seed.patch b/board/czechlight/common/patches/systemd/random-seed.patch
index e79c9af..dac46cf 100644
--- a/board/czechlight/common/patches/systemd/random-seed.patch
+++ b/board/czechlight/common/patches/systemd/random-seed.patch
@@ -24,13 +24,13 @@
--- a/meson.build
+++ b/meson.build
@@ -155,7 +155,7 @@ bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
- testsdir = join_paths(prefixdir, 'lib/systemd/tests')
- systemdstatedir = join_paths(localstatedir, 'lib/systemd')
- catalogstatedir = join_paths(systemdstatedir, 'catalog')
--randomseeddir = join_paths(localstatedir, 'lib/systemd')
+ testsdir = prefixdir / 'lib/systemd/tests'
+ systemdstatedir = localstatedir / 'lib/systemd'
+ catalogstatedir = systemdstatedir / 'catalog'
+-randomseeddir = localstatedir / 'lib/systemd'
+randomseeddir = '/cfg/random-seed'
- profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
- ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
+ profiledir = rootlibexecdir / 'portable' / 'profile'
+ ntpservicelistdir = rootprefixdir / 'lib/systemd/ntp-units.d'
--
2.21.0