diff --git a/.zuul.yaml b/.zuul.yaml
index 6386059..58b5008 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -1,6 +1,7 @@
 - job:
     name: czechlight-clearfog
     parent: run-ci-build-sh-f38
+    pre-run: ci/pre.yaml
     timeout: 3600
     post-timeout: 600
     vars:
diff --git a/board/czechlight/clearfog/overlay/usr/lib/systemd/system-generators/osc b/board/czechlight/clearfog/overlay/usr/lib/systemd/system-generators/eth-links
similarity index 70%
rename from board/czechlight/clearfog/overlay/usr/lib/systemd/system-generators/osc
rename to board/czechlight/clearfog/overlay/usr/lib/systemd/system-generators/eth-links
index ffaa6d1..a6f45ae 100755
--- a/board/czechlight/clearfog/overlay/usr/lib/systemd/system-generators/osc
+++ b/board/czechlight/clearfog/overlay/usr/lib/systemd/system-generators/eth-links
@@ -4,6 +4,21 @@
 
 mkdir -p /run/systemd/network
 
+# custom names for ethernet ports (bypassing systemd's predictive naming)
+cat > /run/systemd/network/30-eth0.link <<EOF
+[Match]
+Path=platform-f1070000.ethernet
+[Link]
+Name=eth0
+EOF
+
+cat > /run/systemd/network/30-eth1.link <<EOF
+[Match]
+Path=platform-f1030000.ethernet
+[Link]
+Name=eth1
+EOF
+
 # custom names for OSC channels
 if grep -q '\<czechlight=sdn-roadm-line.*\>' /proc/cmdline; then
 	ETH2_NAME=osc
@@ -11,6 +26,8 @@
 	ETH2_NAME=oscW
 	ETH3_NAME=oscE
 	ETH4_NAME=sfp3
+else
+	ETH2_NAME=eth2
 fi
 
 if [[ -n "${ETH2_NAME+set}" ]] ; then
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 79fcb9d..b0c1d62 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,7 +1,7 @@
-From 8d3bd15463b31c5b3347239317fcf1f41d467838 Mon Sep 17 00:00:00 2001
+From dadca2c91fa18a18445659b41f182b0793dce566 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
+Subject: [PATCH 1/7] network: Serialize LLDP neighbor to JSON format
 
 Add functions serializing LLDP neighbors to JSON (JsonVariant).
 
@@ -15,7 +15,7 @@
  3 files changed, 71 insertions(+), 1 deletion(-)
 
 diff --git a/src/libsystemd-network/lldp-neighbor.c b/src/libsystemd-network/lldp-neighbor.c
-index 44847b2b92..cacad8adea 100644
+index 6672409d75..5fb7669e09 100644
 --- a/src/libsystemd-network/lldp-neighbor.c
 +++ b/src/libsystemd-network/lldp-neighbor.c
 @@ -5,6 +5,7 @@
@@ -26,14 +26,14 @@
  #include "lldp-neighbor.h"
  #include "memory-util.h"
  #include "missing_network.h"
-@@ -790,3 +791,24 @@ int sd_lldp_neighbor_get_timestamp(sd_lldp_neighbor *n, clockid_t clock, uint64_
+@@ -794,3 +795,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;
  }
 +
 +_public_ int sd_lldp_neighbor_build_json(sd_lldp_neighbor *n, JsonVariant **ret) {
 +        const char *chassis_id = NULL, *port_id = NULL, *system_name = NULL, *port_description = NULL;
-+        uint16_t cc;
++        uint16_t cc = 0;
 +        bool valid_cc;
 +
 +        (void) sd_lldp_neighbor_get_chassis_id_as_string(n, &chassis_id);
@@ -52,7 +52,7 @@
 +                                                JSON_BUILD_PAIR_CONDITION(port_description, "portDescription", JSON_BUILD_STRING(port_description))))));
 +}
 diff --git a/src/libsystemd-network/sd-lldp-rx.c b/src/libsystemd-network/sd-lldp-rx.c
-index 34bdcb644b..ae4d2d599c 100644
+index 0479cff5f5..ec1a0bae54 100644
 --- a/src/libsystemd-network/sd-lldp-rx.c
 +++ b/src/libsystemd-network/sd-lldp-rx.c
 @@ -10,6 +10,7 @@
@@ -63,7 +63,7 @@
  #include "lldp-neighbor.h"
  #include "lldp-network.h"
  #include "lldp-rx-internal.h"
-@@ -492,7 +493,50 @@ int sd_lldp_rx_get_neighbors(sd_lldp_rx *lldp_rx, sd_lldp_neighbor ***ret) {
+@@ -491,7 +492,50 @@ int sd_lldp_rx_get_neighbors(sd_lldp_rx *lldp_rx, sd_lldp_neighbor ***ret) {
          return k;
  }
  
@@ -116,7 +116,7 @@
          assert_return(m > 0, -EINVAL);
  
 diff --git a/src/systemd/sd-lldp-rx.h b/src/systemd/sd-lldp-rx.h
-index bfeac14ce3..8a538b2444 100644
+index 504d7f59c1..ec9b8edf76 100644
 --- a/src/systemd/sd-lldp-rx.h
 +++ b/src/systemd/sd-lldp-rx.h
 @@ -32,6 +32,8 @@ _SD_BEGIN_DECLARATIONS;
@@ -125,7 +125,7 @@
  
 +typedef struct JsonVariant JsonVariant;
 +
- typedef enum sd_lldp_rx_event_t {
+ __extension__ 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);
@@ -142,5 +142,5 @@
  /* Access to LLDP frame metadata */
  int sd_lldp_neighbor_get_source_address(sd_lldp_neighbor *n, struct ether_addr* address);
 -- 
-2.35.1
+2.41.0
 
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 6302127..bb16f0c 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,25 +1,25 @@
-From 210ae903e7f5e4813feaea9bbac1f03fa3be42cc Mon Sep 17 00:00:00 2001
+From 00b203ad445b40faf5836a3ca9a6c1ec89165c23 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
+Subject: [PATCH 2/7] network: Add varlink server
 
 Add a varlink server. In the next commits, we will implement a method
 that queries the LLDP neighbors.
 ---
  src/network/meson.build        |  2 ++
  src/network/networkd-manager.c |  7 +++++++
- src/network/networkd-manager.h |  3 +++
+ src/network/networkd-manager.h | 11 +++++++----
  src/network/networkd-varlink.c | 34 ++++++++++++++++++++++++++++++++++
  src/network/networkd-varlink.h |  7 +++++++
- 5 files changed, 53 insertions(+)
+ 5 files changed, 57 insertions(+), 4 deletions(-)
  create mode 100644 src/network/networkd-varlink.c
  create mode 100644 src/network/networkd-varlink.h
 
 diff --git a/src/network/meson.build b/src/network/meson.build
-index 48d185195c..d93e815fdf 100644
+index b09c18dbbd..90ae4ed238 100644
 --- a/src/network/meson.build
 +++ b/src/network/meson.build
-@@ -137,6 +137,8 @@ sources = files(
+@@ -145,6 +145,8 @@ sources = files(
          'networkd-sysctl.h',
          'networkd-util.c',
          'networkd-util.h',
@@ -27,20 +27,20 @@
 +        'networkd-varlink.h',
          'networkd-wifi.c',
          'networkd-wifi.h',
-         'tc/cake.c',
+         'networkd-wiphy.c',
 diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
-index 9d790224cc..5e4c5e38b4 100644
+index cdfd29bc0e..9f859408a1 100644
 --- a/src/network/networkd-manager.c
 +++ b/src/network/networkd-manager.c
-@@ -41,6 +41,7 @@
+@@ -44,6 +44,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 "networkd-wiphy.h"
  #include "ordered-set.h"
- #include "path-lookup.h"
-@@ -544,6 +545,8 @@ Manager* manager_free(Manager *m) {
+@@ -667,6 +668,8 @@ Manager* manager_free(Manager *m) {
  
          m->fw_ctx = fw_ctx_free(m->fw_ctx);
  
@@ -49,7 +49,7 @@
          return mfree(m);
  }
  
-@@ -553,6 +556,10 @@ int manager_start(Manager *m) {
+@@ -676,6 +679,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 36313589a3..a0c0336ce5 100644
+index 40e6092f85..dfdd44baf8 100644
 --- a/src/network/networkd-manager.h
 +++ b/src/network/networkd-manager.h
 @@ -16,6 +16,7 @@
@@ -72,15 +72,37 @@
  
  struct Manager {
          sd_netlink *rtnl;
-@@ -95,6 +96,8 @@ struct Manager {
-         FirewallContext *fw_ctx;
+@@ -62,8 +63,8 @@ struct Manager {
+         bool has_product_uuid;
+         bool product_uuid_requested;
  
+-        char* dynamic_hostname;
+-        char* dynamic_timezone;
++        char *dynamic_hostname;
++        char *dynamic_timezone;
+ 
+         Set *rules;
+ 
+@@ -100,10 +101,12 @@ struct Manager {
          OrderedSet *request_queue;
+ 
+         Hashmap *tuntap_fds_by_name;
 +
 +        VarlinkServer *varlink_server;
  };
  
  int manager_new(Manager **ret, bool test_mode);
+-Manager* manager_free(Manager *m);
++Manager *manager_free(Manager *m);
+ 
+ int manager_setup(Manager *m);
+ int manager_start(Manager *m);
+@@ -115,4 +118,4 @@ int manager_enumerate(Manager *m);
+ int manager_set_hostname(Manager *m, const char *hostname);
+ int manager_set_timezone(Manager *m, const char *timezone);
+ 
+-DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
++DEFINE_TRIVIAL_CLEANUP_FUNC(Manager *, manager_free);
 diff --git a/src/network/networkd-varlink.c b/src/network/networkd-varlink.c
 new file mode 100644
 index 0000000000..57d8acb967
@@ -135,5 +157,5 @@
 +int manager_varlink_init(Manager *m);
 +void manager_varlink_done(Manager *m);
 -- 
-2.35.1
+2.41.0
 
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 95bb683..dd32934 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,7 +1,7 @@
-From 2196678308d40ac4bb236776f5d9c23b87480759 Mon Sep 17 00:00:00 2001
+From a4a99d8b33b07401f5f5098b668398dddb5321d3 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
+Subject: [PATCH 3/7] network: Add LLDP neighbors method to varlink server
 
 Add a method to varlink server that will allow streaming the list of
 LLDP neighbors on a particular link. The method's argument is the ifindex
@@ -114,5 +114,5 @@
  }
  
 -- 
-2.35.1
+2.41.0
 
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 a181c0e..b2b337f 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,7 +1,7 @@
-From 072ebba1de115cb31a71f6398c17a1bfdb383ee8 Mon Sep 17 00:00:00 2001
+From 542b30b98c67c7407053bd5526ab080cc8090fb2 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
+Subject: [PATCH 4/7] varlink: Implement varlink_observe_complete
 
 In some cases one doesn't want to run the sd_event loop just to obtain
 results from varlink replies in the "continues" mode.
@@ -16,10 +16,10 @@
  2 files changed, 32 insertions(+)
 
 diff --git a/src/shared/varlink.c b/src/shared/varlink.c
-index e0038dfd28..7e5c9657f8 100644
+index 4f7ac97689..d7892693d1 100644
 --- a/src/shared/varlink.c
 +++ b/src/shared/varlink.c
-@@ -1440,6 +1440,37 @@ int varlink_observeb(Varlink *v, const char *method, ...) {
+@@ -1450,6 +1450,37 @@ int varlink_observeb(Varlink *v, const char *method, ...) {
          return varlink_observe(v, method, parameters);
  }
  
@@ -58,7 +58,7 @@
                  Varlink *v,
                  const char *method,
 diff --git a/src/shared/varlink.h b/src/shared/varlink.h
-index 66a1ff630e..9bc836e1f9 100644
+index 9518cd9098..a424411ce6 100644
 --- a/src/shared/varlink.h
 +++ b/src/shared/varlink.h
 @@ -92,6 +92,7 @@ int varlink_invokeb(Varlink *v, const char *method, ...);
@@ -70,5 +70,5 @@
  /* Enqueue a final reply */
  int varlink_reply(Varlink *v, JsonVariant *parameters);
 -- 
-2.35.1
+2.41.0
 
diff --git a/board/czechlight/common/patches/systemd/0007-networkctl-lldp-now-uses-varlink-call.patch b/board/czechlight/common/patches/systemd/0005-networkctl-lldp-now-uses-varlink-call.patch
similarity index 76%
rename from board/czechlight/common/patches/systemd/0007-networkctl-lldp-now-uses-varlink-call.patch
rename to board/czechlight/common/patches/systemd/0005-networkctl-lldp-now-uses-varlink-call.patch
index 44d0f82..3511700 100644
--- a/board/czechlight/common/patches/systemd/0007-networkctl-lldp-now-uses-varlink-call.patch
+++ b/board/czechlight/common/patches/systemd/0005-networkctl-lldp-now-uses-varlink-call.patch
@@ -1,16 +1,16 @@
-From 1e805d15da85b85dfd54684557da1415b0294903 Mon Sep 17 00:00:00 2001
+From ed72d91efb80888846267f72e9214470eaca4ce6 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
+Subject: [PATCH 5/7] networkctl: lldp now uses varlink call
 
 `networkctl lldp` now uses varlink call to the networkd to query LLDP
 neighbor data.
 ---
- src/network/networkctl.c | 215 +++++++++++++++++++++++++--------------
- 1 file changed, 139 insertions(+), 76 deletions(-)
+ src/network/networkctl.c | 183 ++++++++++++++++++++++++++-------------
+ 1 file changed, 123 insertions(+), 60 deletions(-)
 
 diff --git a/src/network/networkctl.c b/src/network/networkctl.c
-index 46c08b5549..a10f3f3fc7 100644
+index a2e216e779..bab6cf5433 100644
 --- a/src/network/networkctl.c
 +++ b/src/network/networkctl.c
 @@ -36,6 +36,7 @@
@@ -29,7 +29,7 @@
  #include "verbs.h"
  #include "wifi-util.h"
  
-@@ -2479,14 +2481,103 @@ static void lldp_capabilities_legend(uint16_t x) {
+@@ -2439,14 +2441,103 @@ static void lldp_capabilities_legend(uint16_t x) {
          puts("");
  }
  
@@ -136,23 +136,23 @@
          r = sd_netlink_open(&rtnl);
          if (r < 0)
                  return log_error_errno(r, "Failed to connect to netlink: %m");
-@@ -2497,103 +2588,75 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+@@ -2457,80 +2548,52 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
  
          pager_open(arg_pager_flags);
  
 -        table = table_new("link",
--                          "chassis id",
--                          "system name",
+-                          "chassis-id",
+-                          "system-name",
 -                          "caps",
--                          "port id",
--                          "port description");
+-                          "port-id",
+-                          "port-description");
 -        if (!table)
 +        udata.table = table_new("link",
-+                                "chassis id",
-+                                "system name",
++                                "chassis-id",
++                                "system-name",
 +                                "caps",
-+                                "port id",
-+                                "port description");
++                                "port-id",
++                                "port-description");
 +        if (!udata.table)
                  return log_oom();
  
@@ -161,58 +161,15 @@
 +                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();
+-        table_set_ersatz_string(table, TABLE_ERSATZ_DASH);
++        table_set_header(udata.table, arg_legend);
  
 -        for (int i = 0; i < c; i++) {
 -                _cleanup_fclose_ FILE *f = NULL;
-+        varlink_set_userdata(link, &udata);
- 
+-
 -                r = open_lldp_neighbors(links[i].ifindex, &f);
 -                if (r == -ENOENT)
 -                        continue;
@@ -220,13 +177,17 @@
 -                        log_warning_errno(r, "Failed to open LLDP data for %i, ignoring: %m", links[i].ifindex);
 -                        continue;
 -                }
--
++        assert_se(cell = table_get_cell(udata.table, 0, 3));
++        table_set_minimum_width(udata.table, cell, 11);
++        table_set_ersatz_string(udata.table, TABLE_ERSATZ_DASH);
+ 
 -                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;
+-                        _cleanup_free_ char *capabilities = NULL;
 -                        uint16_t cc;
--
++        varlink_set_userdata(link, &udata);
+ 
 -                        r = next_lldp_neighbor(f, &n);
 -                        if (r < 0) {
 -                                log_warning_errno(r, "Failed to read neighbor data: %m");
@@ -286,5 +247,5 @@
  
          return 0;
 -- 
-2.35.1
+2.41.0
 
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
deleted file mode 100644
index ed0db4f..0000000
--- a/board/czechlight/common/patches/systemd/0005-networkctl-lldp-uses-table_empty_string-instead-of-s.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From d17ff9b2b0f3f0d2bfb54f9e3e965874e6df1974 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
-
----
- src/network/networkctl.c | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/src/network/networkctl.c b/src/network/networkctl.c
-index 68dd4b185c..30cd75eec0 100644
---- a/src/network/networkctl.c
-+++ b/src/network/networkctl.c
-@@ -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);
- 
-+        if (table_set_empty_string(table, "n/a") < 0)
-+                return log_oom();
-+
-         for (int i = 0; i < c; i++) {
-                 _cleanup_fclose_ FILE *f = NULL;
- 
-@@ -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,
--                                           TABLE_STRING, strna(chassis_id),
--                                           TABLE_STRING, strna(system_name),
--                                           TABLE_STRING, strna(capabilities),
--                                           TABLE_STRING, strna(port_id),
--                                           TABLE_STRING, strna(port_description));
-+                                           TABLE_STRING, chassis_id,
-+                                           TABLE_STRING, system_name,
-+                                           TABLE_STRING, capabilities,
-+                                           TABLE_STRING, port_id,
-+                                           TABLE_STRING, port_description);
-                         if (r < 0)
-                                 return table_log_add_error(r);
- 
--- 
-2.35.1
-
diff --git a/board/czechlight/common/patches/systemd/0008-networkctl-allow-format-LLDP-capabilities-string-wit.patch b/board/czechlight/common/patches/systemd/0006-networkctl-allow-format-LLDP-capabilities-string-wit.patch
similarity index 85%
rename from board/czechlight/common/patches/systemd/0008-networkctl-allow-format-LLDP-capabilities-string-wit.patch
rename to board/czechlight/common/patches/systemd/0006-networkctl-allow-format-LLDP-capabilities-string-wit.patch
index 8e89013..2b318a1 100644
--- a/board/czechlight/common/patches/systemd/0008-networkctl-allow-format-LLDP-capabilities-string-wit.patch
+++ b/board/czechlight/common/patches/systemd/0006-networkctl-allow-format-LLDP-capabilities-string-wit.patch
@@ -1,7 +1,7 @@
-From de6ad887e413ee3e66e368f707e08ea84aa72a91 Mon Sep 17 00:00:00 2001
+From a36487ec3e3a5d1bbfb11747bf48354c962a097a 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
+Subject: [PATCH 6/7] networkctl: allow format LLDP capabilities string without
  dots
 
 Allows formatting the LLDP capabilities string without the dots
@@ -11,10 +11,10 @@
  1 file changed, 9 insertions(+), 6 deletions(-)
 
 diff --git a/src/network/networkctl.c b/src/network/networkctl.c
-index a10f3f3fc7..9fbeed6908 100644
+index bab6cf5433..04a89e015f 100644
 --- a/src/network/networkctl.c
 +++ b/src/network/networkctl.c
-@@ -2431,21 +2431,24 @@ static int link_status(int argc, char *argv[], void *userdata) {
+@@ -2391,21 +2391,24 @@ static int link_status(int argc, char *argv[], void *userdata) {
          return 0;
  }
  
@@ -44,7 +44,7 @@
          return ret;
  }
  
-@@ -2537,7 +2540,7 @@ static int lldp_neighbors_varlink_reply(Varlink *link, JsonVariant *parameters,
+@@ -2497,7 +2500,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.35.1
+2.41.0
 
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
deleted file mode 100644
index 9b5b54c..0000000
--- a/board/czechlight/common/patches/systemd/0006-networkctl-lldp-table-now-ellpsizes-via-table-functi.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 5aa44bfdab3215cf495442fb931a23f88a66d1c7 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
-
-Tables can now ellipize on their own so there is no need to manually
-call ellpsize on the table data.
-
-To achieve compatibility with previous versions the table columns are
-set to have the exact same size as before, therefore the minimum and
-maximum widths for the columns in the output.
----
- src/network/networkctl.c | 32 +++++++-------------------------
- 1 file changed, 7 insertions(+), 25 deletions(-)
-
-diff --git a/src/network/networkctl.c b/src/network/networkctl.c
-index 30cd75eec0..46c08b5549 100644
---- a/src/network/networkctl.c
-+++ b/src/network/networkctl.c
-@@ -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);
-+        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, 2));
-         table_set_minimum_width(table, cell, 16);
-+        table_set_maximum_width(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(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, 5));
-         table_set_minimum_width(table, cell, 16);
-+        table_set_maximum_width(table, cell, 16);
- 
-         if (table_set_empty_string(table, "n/a") < 0)
-                 return log_oom();
-@@ -2544,7 +2550,7 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
-                 }
- 
-                 for (;;) {
--                        _cleanup_free_ char *cid = NULL, *pid = NULL, *sname = NULL, *pdesc = NULL, *capabilities = NULL;
-+                        _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;
-@@ -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);
- 
--                        if (chassis_id) {
--                                cid = ellipsize(chassis_id, 17, 100);
--                                if (cid)
--                                        chassis_id = cid;
--                        }
--
--                        if (port_id) {
--                                pid = ellipsize(port_id, 17, 100);
--                                if (pid)
--                                        port_id = pid;
--                        }
--
--                        if (system_name) {
--                                sname = ellipsize(system_name, 16, 100);
--                                if (sname)
--                                        system_name = sname;
--                        }
--
--                        if (port_description) {
--                                pdesc = ellipsize(port_description, 16, 100);
--                                if (pdesc)
--                                        port_description = pdesc;
--                        }
--
-                         if (sd_lldp_neighbor_get_enabled_capabilities(n, &cc) >= 0) {
-                                 capabilities = lldp_capabilities_to_string(cc);
-                                 all |= cc;
--- 
-2.35.1
-
diff --git a/board/czechlight/common/patches/systemd/0009-networkctl-JSON-output-in-networkctl-lldp.patch b/board/czechlight/common/patches/systemd/0007-networkctl-JSON-output-in-networkctl-lldp.patch
similarity index 61%
rename from board/czechlight/common/patches/systemd/0009-networkctl-JSON-output-in-networkctl-lldp.patch
rename to board/czechlight/common/patches/systemd/0007-networkctl-JSON-output-in-networkctl-lldp.patch
index fc6a699..460af8d 100644
--- a/board/czechlight/common/patches/systemd/0009-networkctl-JSON-output-in-networkctl-lldp.patch
+++ b/board/czechlight/common/patches/systemd/0007-networkctl-JSON-output-in-networkctl-lldp.patch
@@ -1,19 +1,19 @@
-From 2fda28e34623cd24752ecad2dcea14f7ab46cb02 Mon Sep 17 00:00:00 2001
+From 49cc847aeedacaabdb285b7cdea0e6ccede6042e 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
+Subject: [PATCH 7/7] networkctl: JSON output in networkctl lldp
 
 `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 | 118 ++++++++++++++++++++++++++-------------
- 1 file changed, 79 insertions(+), 39 deletions(-)
+ src/network/networkctl.c | 84 +++++++++++++++++++++++++++++-----------
+ 1 file changed, 62 insertions(+), 22 deletions(-)
 
 diff --git a/src/network/networkctl.c b/src/network/networkctl.c
-index 9fbeed6908..0f48aa4bf7 100644
+index 04a89e015f..2eb21ad4ff 100644
 --- a/src/network/networkctl.c
 +++ b/src/network/networkctl.c
-@@ -2507,12 +2507,14 @@ typedef struct LLDPUserdata {
+@@ -2467,12 +2467,14 @@ typedef struct LLDPUserdata {
          uint16_t capabilities_all;
  
          Table *table;
@@ -28,7 +28,7 @@
  }
  
  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,
+@@ -2516,6 +2518,34 @@ static int lldp_neighbors_varlink_reply(Varlink *link, JsonVariant *parameters,
          udata->neighbors_count += 1;
          udata->capabilities_all |= entry.capabilities;
  
@@ -63,7 +63,7 @@
          return 0;
  }
  
-@@ -2568,7 +2598,6 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+@@ -2528,7 +2558,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_(lldp_userdata_freep) LLDPUserdata udata = {};
@@ -71,7 +71,7 @@
  
          r = varlink_connect_address(&link, address);
          if (r < 0)
-@@ -2590,47 +2619,54 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+@@ -2550,24 +2579,31 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
                  return c;
  
          pager_open(arg_pager_flags);
@@ -79,77 +79,37 @@
 +                TableCell *cell;
 +
 +                udata.table = table_new("link",
-+                                        "chassis id",
-+                                        "system name",
++                                        "chassis-id",
++                                        "system-name",
 +                                        "caps",
-+                                        "port id",
-+                                        "port description");
++                                        "port-id",
++                                        "port-description");
 +                if (!udata.table)
 +                        return log_oom();
  
 -        udata.table = table_new("link",
--                                "chassis id",
--                                "system name",
+-                                "chassis-id",
+-                                "system-name",
 -                                "caps",
--                                "port id",
--                                "port description");
+-                                "port-id",
+-                                "port-description");
 -        if (!udata.table)
 -                return log_oom();
--
--        if (arg_full)
--                table_set_width(udata.table, 0);
 +                if (arg_full)
 +                        table_set_width(udata.table, 0);
  
--        table_set_header(udata.table, arg_legend);
+-        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, 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, 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, 2));
-+                table_set_minimum_width(udata.table, cell, 16);
-+                table_set_maximum_width(udata.table, cell, 16);
- 
+-        table_set_header(udata.table, arg_legend);
+-
 -        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);
+-        table_set_ersatz_string(udata.table, TABLE_ERSATZ_DASH);
 +                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, 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);
-+                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 (table_set_empty_string(udata.table, "n/a") < 0)
-+                        return log_oom();
++                table_set_ersatz_string(udata.table, TABLE_ERSATZ_DASH);
 +        } else {
 +                r = json_build(&udata.json, JSON_BUILD_EMPTY_OBJECT);
 +                if (r < 0)
@@ -158,7 +118,7 @@
  
          varlink_set_userdata(link, &udata);
  
-@@ -2653,13 +2689,17 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
+@@ -2590,13 +2626,17 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) {
                          return r;
          }
  
@@ -183,5 +143,5 @@
  
          return 0;
 -- 
-2.35.1
+2.41.0
 
diff --git a/ci/pre.yaml b/ci/pre.yaml
new file mode 100644
index 0000000..344c91e
--- /dev/null
+++ b/ci/pre.yaml
@@ -0,0 +1,7 @@
+- hosts: all
+  tasks:
+    - name: install perl-English
+      package:
+        name: perl-English
+        state: present
+      become: true
diff --git a/submodules/buildroot b/submodules/buildroot
index 8be83c1..09b6443 160000
--- a/submodules/buildroot
+++ b/submodules/buildroot
@@ -1 +1 @@
-Subproject commit 8be83c1c817c47e0a9c2192e2926a0a75fff1317
+Subproject commit 09b6443ee92e6d9f7597e1cfa45686a16759fac5
