diff --git a/systemd/patches/0001-Revert-sd-netlink-unexport-sd-netlink.patch b/systemd/patches/0001-Revert-sd-netlink-unexport-sd-netlink.patch
deleted file mode 100644
index 4507a1086..000000000
--- a/systemd/patches/0001-Revert-sd-netlink-unexport-sd-netlink.patch
+++ /dev/null
@@ -1,1416 +0,0 @@
-From b0ca7a9351fab7a339357cbc17800e11ccae91e8 Mon Sep 17 00:00:00 2001
-From: Jonatan Schlag <jonatan.schlag@ipfire.org>
-Date: Tue, 19 Sep 2023 11:58:49 +0000
-Subject: [PATCH] Revert "sd-netlink: unexport sd-netlink"
-
-This reverts commit dd35a61cafb5ffb380f92f45b9d9e3ac1f53351b.
----
- src/libsystemd/libsystemd.sym                 | 155 ++++++++++++++++++
- src/libsystemd/sd-netlink/netlink-genl.c      |  10 +-
- .../sd-netlink/netlink-message-rtnl.c         | 134 +++++++--------
- src/libsystemd/sd-netlink/netlink-message.c   | 100 +++++------
- src/libsystemd/sd-netlink/sd-netlink.c        |  26 +--
- src/systemd/meson.build                       |   2 +-
- 6 files changed, 291 insertions(+), 136 deletions(-)
-
-diff --git a/src/libsystemd/libsystemd.sym b/src/libsystemd/libsystemd.sym
-index 56a8831f0f..0f84848064 100644
---- a/src/libsystemd/libsystemd.sym
-+++ b/src/libsystemd/libsystemd.sym
-@@ -795,6 +795,161 @@ global:
-         sd_id128_string_equal;
- 
-         sd_hwdb_new_from_path;
-+
-+        sd_netlink_open;
-+        sd_netlink_open_fd;
-+        sd_netlink_increase_rxbuf;
-+        sd_netlink_ref;
-+        sd_netlink_unref;
-+        sd_netlink_send;
-+        sd_netlink_call_async;
-+        sd_netlink_call;
-+        sd_netlink_read;
-+        sd_netlink_get_events;
-+        sd_netlink_get_timeout;
-+        sd_netlink_process;
-+        sd_netlink_wait;
-+        sd_netlink_add_match;
-+        sd_netlink_attach_event;
-+        sd_netlink_detach_event;
-+        sd_netlink_attach_filter;
-+        sd_netlink_message_append_string;
-+        sd_netlink_message_append_strv;
-+        sd_netlink_message_append_flag;
-+        sd_netlink_message_append_u8;
-+        sd_netlink_message_append_u16;
-+        sd_netlink_message_append_u32;
-+        sd_netlink_message_append_u64;
-+        sd_netlink_message_append_s8;
-+        sd_netlink_message_append_s16;
-+        sd_netlink_message_append_s32;
-+        sd_netlink_message_append_s64;
-+        sd_netlink_message_append_data;
-+        sd_netlink_message_append_container_data;
-+        sd_netlink_message_append_in_addr;
-+        sd_netlink_message_append_in6_addr;
-+        sd_netlink_message_append_sockaddr_in;
-+        sd_netlink_message_append_sockaddr_in6;
-+        sd_netlink_message_append_ether_addr;
-+        sd_netlink_message_append_cache_info;
-+        sd_netlink_message_open_container;
-+        sd_netlink_message_open_container_union;
-+        sd_netlink_message_close_container;
-+        sd_netlink_message_read;
-+        sd_netlink_message_read_data;
-+        sd_netlink_message_read_data_suffix0;
-+        sd_netlink_message_read_string_strdup;
-+        sd_netlink_message_read_string;
-+        sd_netlink_message_read_strv;
-+        sd_netlink_message_read_u8;
-+        sd_netlink_message_read_u16;
-+        sd_netlink_message_read_u32;
-+        sd_netlink_message_read_ether_addr;
-+        sd_netlink_message_read_cache_info;
-+        sd_netlink_message_read_in_addr;
-+        sd_netlink_message_read_in6_addr;
-+        sd_netlink_message_has_flag;
-+        sd_netlink_message_enter_container;
-+        sd_netlink_message_enter_array;
-+        sd_netlink_message_exit_container;
-+        sd_netlink_message_open_array;
-+        sd_netlink_message_cancel_array;
-+        sd_netlink_message_rewind;
-+        sd_netlink_message_next;
-+        sd_netlink_message_ref;
-+        sd_netlink_message_unref;
-+        sd_netlink_message_set_request_dump;
-+        sd_netlink_message_is_error;
-+        sd_netlink_message_get_errno;
-+        sd_netlink_message_get_type;
-+        sd_netlink_message_set_flags;
-+        sd_netlink_message_is_broadcast;
-+        sd_netlink_message_get_max_attribute;
-+        sd_netlink_slot_ref;
-+        sd_netlink_slot_unref;
-+        sd_netlink_slot_get_netlink;
-+        sd_netlink_slot_get_userdata;
-+        sd_netlink_slot_set_userdata;
-+        sd_netlink_slot_get_destroy_callback;
-+        sd_netlink_slot_set_destroy_callback;
-+        sd_netlink_slot_get_floating;
-+        sd_netlink_slot_set_floating;
-+        sd_netlink_slot_get_description;
-+        sd_netlink_slot_set_description;
-+
-+        sd_rtnl_message_get_family;
-+        sd_rtnl_message_new_addr;
-+        sd_rtnl_message_new_addr_update;
-+        sd_rtnl_message_addr_set_prefixlen;
-+        sd_rtnl_message_addr_set_scope;
-+        sd_rtnl_message_addr_set_flags;
-+        sd_rtnl_message_addr_get_family;
-+        sd_rtnl_message_addr_get_prefixlen;
-+        sd_rtnl_message_addr_get_scope;
-+        sd_rtnl_message_addr_get_flags;
-+        sd_rtnl_message_addr_get_ifindex;
-+        sd_rtnl_message_new_link;
-+        sd_rtnl_message_link_set_flags;
-+        sd_rtnl_message_link_set_type;
-+        sd_rtnl_message_link_set_family;
-+        sd_rtnl_message_link_get_ifindex;
-+        sd_rtnl_message_link_get_flags;
-+        sd_rtnl_message_link_get_type;
-+        sd_rtnl_message_new_route;
-+        sd_rtnl_message_route_set_dst_prefixlen;
-+        sd_rtnl_message_route_set_src_prefixlen;
-+        sd_rtnl_message_route_set_scope;
-+        sd_rtnl_message_route_set_flags;
-+        sd_rtnl_message_route_set_table;
-+        sd_rtnl_message_route_set_type;
-+        sd_rtnl_message_route_get_flags;
-+        sd_rtnl_message_route_get_family;
-+        sd_rtnl_message_route_get_protocol;
-+        sd_rtnl_message_route_get_scope;
-+        sd_rtnl_message_route_get_tos;
-+        sd_rtnl_message_route_get_table;
-+        sd_rtnl_message_route_get_dst_prefixlen;
-+        sd_rtnl_message_route_get_src_prefixlen;
-+        sd_rtnl_message_route_get_type;
-+        sd_rtnl_message_new_nexthop;
-+        sd_rtnl_message_nexthop_set_flags;
-+        sd_rtnl_message_nexthop_get_flags;
-+        sd_rtnl_message_nexthop_get_family;
-+        sd_rtnl_message_nexthop_get_protocol;
-+        sd_rtnl_message_new_neigh;
-+        sd_rtnl_message_neigh_set_flags;
-+        sd_rtnl_message_neigh_set_state;
-+        sd_rtnl_message_neigh_get_family;
-+        sd_rtnl_message_neigh_get_ifindex;
-+        sd_rtnl_message_neigh_get_state;
-+        sd_rtnl_message_neigh_get_flags;
-+        sd_rtnl_message_new_addrlabel;
-+        sd_rtnl_message_addrlabel_set_prefixlen;
-+        sd_rtnl_message_addrlabel_get_prefixlen;
-+        sd_rtnl_message_new_routing_policy_rule;
-+        sd_rtnl_message_routing_policy_rule_set_tos;
-+        sd_rtnl_message_routing_policy_rule_get_tos;
-+        sd_rtnl_message_routing_policy_rule_set_table;
-+        sd_rtnl_message_routing_policy_rule_get_table;
-+        sd_rtnl_message_routing_policy_rule_set_fib_src_prefixlen;
-+        sd_rtnl_message_routing_policy_rule_get_fib_src_prefixlen;
-+        sd_rtnl_message_routing_policy_rule_set_fib_dst_prefixlen;
-+        sd_rtnl_message_routing_policy_rule_get_fib_dst_prefixlen;
-+        sd_rtnl_message_routing_policy_rule_set_fib_type;
-+        sd_rtnl_message_routing_policy_rule_get_fib_type;
-+        sd_rtnl_message_routing_policy_rule_set_flags;
-+        sd_rtnl_message_routing_policy_rule_get_flags;
-+        sd_rtnl_message_new_traffic_control;
-+        sd_rtnl_message_traffic_control_get_ifindex;
-+        sd_rtnl_message_traffic_control_get_handle;
-+        sd_rtnl_message_traffic_control_get_parent;
-+        sd_rtnl_message_new_mdb;
-+
-+        sd_genl_socket_open;
-+        sd_genl_message_new;
-+        sd_genl_message_get_family_name;
-+        sd_genl_message_get_command;
-+        sd_genl_add_match;
- } LIBSYSTEMD_251;
- 
- LIBSYSTEMD_253 {
-diff --git a/src/libsystemd/sd-netlink/netlink-genl.c b/src/libsystemd/sd-netlink/netlink-genl.c
-index 1dc62e89ba..aeb4b8a686 100644
---- a/src/libsystemd/sd-netlink/netlink-genl.c
-+++ b/src/libsystemd/sd-netlink/netlink-genl.c
-@@ -365,7 +365,7 @@ int genl_get_policy_set_and_header_size(
-         return 0;
- }
- 
--int sd_genl_message_new(sd_netlink *nl, const char *family_name, uint8_t cmd, sd_netlink_message **ret) {
-+_public_ int sd_genl_message_new(sd_netlink *nl, const char *family_name, uint8_t cmd, sd_netlink_message **ret) {
-         const GenericNetlinkFamily *family;
-         int r;
- 
-@@ -381,7 +381,7 @@ int sd_genl_message_new(sd_netlink *nl, const char *family_name, uint8_t cmd, sd
-         return genl_message_new(nl, family, cmd, ret);
- }
- 
--int sd_genl_message_get_family_name(sd_netlink *nl, sd_netlink_message *m, const char **ret) {
-+_public_ int sd_genl_message_get_family_name(sd_netlink *nl, sd_netlink_message *m, const char **ret) {
-         const GenericNetlinkFamily *family;
-         uint16_t nlmsg_type;
-         int r;
-@@ -403,7 +403,7 @@ int sd_genl_message_get_family_name(sd_netlink *nl, sd_netlink_message *m, const
-         return 0;
- }
- 
--int sd_genl_message_get_command(sd_netlink *nl, sd_netlink_message *m, uint8_t *ret) {
-+_public_ int sd_genl_message_get_command(sd_netlink *nl, sd_netlink_message *m, uint8_t *ret) {
-         struct genlmsghdr *h;
-         uint16_t nlmsg_type;
-         size_t size;
-@@ -448,7 +448,7 @@ static int genl_family_get_multicast_group_id_by_name(const GenericNetlinkFamily
-         return 0;
- }
- 
--int sd_genl_add_match(
-+_public_ int sd_genl_add_match(
-                 sd_netlink *nl,
-                 sd_netlink_slot **ret_slot,
-                 const char *family_name,
-@@ -483,6 +483,6 @@ int sd_genl_add_match(
-                                           callback, destroy_callback, userdata, description);
- }
- 
--int sd_genl_socket_open(sd_netlink **ret) {
-+_public_ int sd_genl_socket_open(sd_netlink **ret) {
-         return netlink_open_family(ret, NETLINK_GENERIC);
- }
-diff --git a/src/libsystemd/sd-netlink/netlink-message-rtnl.c b/src/libsystemd/sd-netlink/netlink-message-rtnl.c
-index 008e8022b1..ae1d217294 100644
---- a/src/libsystemd/sd-netlink/netlink-message-rtnl.c
-+++ b/src/libsystemd/sd-netlink/netlink-message-rtnl.c
-@@ -56,7 +56,7 @@ static bool rtnl_message_type_is_mdb(uint16_t type) {
-         return IN_SET(type, RTM_NEWMDB, RTM_DELMDB, RTM_GETMDB);
- }
- 
--int sd_rtnl_message_route_set_dst_prefixlen(sd_netlink_message *m, unsigned char prefixlen) {
-+_public_ int sd_rtnl_message_route_set_dst_prefixlen(sd_netlink_message *m, unsigned char prefixlen) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -74,7 +74,7 @@ int sd_rtnl_message_route_set_dst_prefixlen(sd_netlink_message *m, unsigned char
-         return 0;
- }
- 
--int sd_rtnl_message_route_set_src_prefixlen(sd_netlink_message *m, unsigned char prefixlen) {
-+_public_ int sd_rtnl_message_route_set_src_prefixlen(sd_netlink_message *m, unsigned char prefixlen) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -92,7 +92,7 @@ int sd_rtnl_message_route_set_src_prefixlen(sd_netlink_message *m, unsigned char
-         return 0;
- }
- 
--int sd_rtnl_message_route_set_scope(sd_netlink_message *m, unsigned char scope) {
-+_public_ int sd_rtnl_message_route_set_scope(sd_netlink_message *m, unsigned char scope) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -106,7 +106,7 @@ int sd_rtnl_message_route_set_scope(sd_netlink_message *m, unsigned char scope)
-         return 0;
- }
- 
--int sd_rtnl_message_route_set_flags(sd_netlink_message *m, unsigned flags) {
-+_public_ int sd_rtnl_message_route_set_flags(sd_netlink_message *m, unsigned flags) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -120,7 +120,7 @@ int sd_rtnl_message_route_set_flags(sd_netlink_message *m, unsigned flags) {
-         return 0;
- }
- 
--int sd_rtnl_message_route_get_flags(sd_netlink_message *m, unsigned *flags) {
-+_public_ int sd_rtnl_message_route_get_flags(sd_netlink_message *m, unsigned *flags) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -135,7 +135,7 @@ int sd_rtnl_message_route_get_flags(sd_netlink_message *m, unsigned *flags) {
-         return 0;
- }
- 
--int sd_rtnl_message_route_set_table(sd_netlink_message *m, unsigned char table) {
-+_public_ int sd_rtnl_message_route_set_table(sd_netlink_message *m, unsigned char table) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -149,7 +149,7 @@ int sd_rtnl_message_route_set_table(sd_netlink_message *m, unsigned char table)
-         return 0;
- }
- 
--int sd_rtnl_message_route_get_family(sd_netlink_message *m, int *family) {
-+_public_ int sd_rtnl_message_route_get_family(sd_netlink_message *m, int *family) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -164,7 +164,7 @@ int sd_rtnl_message_route_get_family(sd_netlink_message *m, int *family) {
-         return 0;
- }
- 
--int sd_rtnl_message_route_get_type(sd_netlink_message *m, unsigned char *type) {
-+_public_ int sd_rtnl_message_route_get_type(sd_netlink_message *m, unsigned char *type) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -179,7 +179,7 @@ int sd_rtnl_message_route_get_type(sd_netlink_message *m, unsigned char *type) {
-         return 0;
- }
- 
--int sd_rtnl_message_route_set_type(sd_netlink_message *m, unsigned char type) {
-+_public_ int sd_rtnl_message_route_set_type(sd_netlink_message *m, unsigned char type) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -193,7 +193,7 @@ int sd_rtnl_message_route_set_type(sd_netlink_message *m, unsigned char type) {
-         return 0;
- }
- 
--int sd_rtnl_message_route_get_protocol(sd_netlink_message *m, unsigned char *protocol) {
-+_public_ int sd_rtnl_message_route_get_protocol(sd_netlink_message *m, unsigned char *protocol) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -208,7 +208,7 @@ int sd_rtnl_message_route_get_protocol(sd_netlink_message *m, unsigned char *pro
-         return 0;
- }
- 
--int sd_rtnl_message_route_get_scope(sd_netlink_message *m, unsigned char *scope) {
-+_public_ int sd_rtnl_message_route_get_scope(sd_netlink_message *m, unsigned char *scope) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -223,7 +223,7 @@ int sd_rtnl_message_route_get_scope(sd_netlink_message *m, unsigned char *scope)
-         return 0;
- }
- 
--int sd_rtnl_message_route_get_tos(sd_netlink_message *m, uint8_t *tos) {
-+_public_ int sd_rtnl_message_route_get_tos(sd_netlink_message *m, uint8_t *tos) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -238,7 +238,7 @@ int sd_rtnl_message_route_get_tos(sd_netlink_message *m, uint8_t *tos) {
-         return 0;
- }
- 
--int sd_rtnl_message_route_get_table(sd_netlink_message *m, unsigned char *table) {
-+_public_ int sd_rtnl_message_route_get_table(sd_netlink_message *m, unsigned char *table) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -253,7 +253,7 @@ int sd_rtnl_message_route_get_table(sd_netlink_message *m, unsigned char *table)
-         return 0;
- }
- 
--int sd_rtnl_message_route_get_dst_prefixlen(sd_netlink_message *m, unsigned char *dst_len) {
-+_public_ int sd_rtnl_message_route_get_dst_prefixlen(sd_netlink_message *m, unsigned char *dst_len) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -268,7 +268,7 @@ int sd_rtnl_message_route_get_dst_prefixlen(sd_netlink_message *m, unsigned char
-         return 0;
- }
- 
--int sd_rtnl_message_route_get_src_prefixlen(sd_netlink_message *m, unsigned char *src_len) {
-+_public_ int sd_rtnl_message_route_get_src_prefixlen(sd_netlink_message *m, unsigned char *src_len) {
-         struct rtmsg *rtm;
- 
-         assert_return(m, -EINVAL);
-@@ -283,7 +283,7 @@ int sd_rtnl_message_route_get_src_prefixlen(sd_netlink_message *m, unsigned char
-         return 0;
- }
- 
--int sd_rtnl_message_new_route(sd_netlink *rtnl, sd_netlink_message **ret,
-+_public_ int sd_rtnl_message_new_route(sd_netlink *rtnl, sd_netlink_message **ret,
-                               uint16_t nlmsg_type, int rtm_family,
-                               unsigned char rtm_protocol) {
-         struct rtmsg *rtm;
-@@ -309,7 +309,7 @@ int sd_rtnl_message_new_route(sd_netlink *rtnl, sd_netlink_message **ret,
-         return 0;
- }
- 
--int sd_rtnl_message_new_nexthop(sd_netlink *rtnl, sd_netlink_message **ret,
-+_public_ int sd_rtnl_message_new_nexthop(sd_netlink *rtnl, sd_netlink_message **ret,
-                                 uint16_t nlmsg_type, int nh_family,
-                                 unsigned char nh_protocol) {
-         struct nhmsg *nhm;
-@@ -347,7 +347,7 @@ int sd_rtnl_message_new_nexthop(sd_netlink *rtnl, sd_netlink_message **ret,
-         return 0;
- }
- 
--int sd_rtnl_message_nexthop_set_flags(sd_netlink_message *m, uint8_t flags) {
-+_public_ int sd_rtnl_message_nexthop_set_flags(sd_netlink_message *m, uint8_t flags) {
-         struct nhmsg *nhm;
- 
-         assert_return(m, -EINVAL);
-@@ -360,7 +360,7 @@ int sd_rtnl_message_nexthop_set_flags(sd_netlink_message *m, uint8_t flags) {
-         return 0;
- }
- 
--int sd_rtnl_message_nexthop_get_flags(sd_netlink_message *m, uint8_t *ret) {
-+_public_ int sd_rtnl_message_nexthop_get_flags(sd_netlink_message *m, uint8_t *ret) {
-         struct nhmsg *nhm;
- 
-         assert_return(m, -EINVAL);
-@@ -374,7 +374,7 @@ int sd_rtnl_message_nexthop_get_flags(sd_netlink_message *m, uint8_t *ret) {
-         return 0;
- }
- 
--int sd_rtnl_message_nexthop_get_family(sd_netlink_message *m, uint8_t *family) {
-+_public_ int sd_rtnl_message_nexthop_get_family(sd_netlink_message *m, uint8_t *family) {
-         struct nhmsg *nhm;
- 
-         assert_return(m, -EINVAL);
-@@ -388,7 +388,7 @@ int sd_rtnl_message_nexthop_get_family(sd_netlink_message *m, uint8_t *family) {
-         return 0;
- }
- 
--int sd_rtnl_message_nexthop_get_protocol(sd_netlink_message *m, uint8_t *protocol) {
-+_public_ int sd_rtnl_message_nexthop_get_protocol(sd_netlink_message *m, uint8_t *protocol) {
-         struct nhmsg *nhm;
- 
-         assert_return(m, -EINVAL);
-@@ -402,7 +402,7 @@ int sd_rtnl_message_nexthop_get_protocol(sd_netlink_message *m, uint8_t *protoco
-         return 0;
- }
- 
--int sd_rtnl_message_neigh_set_flags(sd_netlink_message *m, uint8_t flags) {
-+_public_ int sd_rtnl_message_neigh_set_flags(sd_netlink_message *m, uint8_t flags) {
-         struct ndmsg *ndm;
- 
-         assert_return(m, -EINVAL);
-@@ -415,7 +415,7 @@ int sd_rtnl_message_neigh_set_flags(sd_netlink_message *m, uint8_t flags) {
-         return 0;
- }
- 
--int sd_rtnl_message_neigh_set_state(sd_netlink_message *m, uint16_t state) {
-+_public_ int sd_rtnl_message_neigh_set_state(sd_netlink_message *m, uint16_t state) {
-         struct ndmsg *ndm;
- 
-         assert_return(m, -EINVAL);
-@@ -428,7 +428,7 @@ int sd_rtnl_message_neigh_set_state(sd_netlink_message *m, uint16_t state) {
-         return 0;
- }
- 
--int sd_rtnl_message_neigh_get_flags(sd_netlink_message *m, uint8_t *flags) {
-+_public_ int sd_rtnl_message_neigh_get_flags(sd_netlink_message *m, uint8_t *flags) {
-         struct ndmsg *ndm;
- 
-         assert_return(m, -EINVAL);
-@@ -441,7 +441,7 @@ int sd_rtnl_message_neigh_get_flags(sd_netlink_message *m, uint8_t *flags) {
-         return 0;
- }
- 
--int sd_rtnl_message_neigh_get_state(sd_netlink_message *m, uint16_t *state) {
-+_public_ int sd_rtnl_message_neigh_get_state(sd_netlink_message *m, uint16_t *state) {
-         struct ndmsg *ndm;
- 
-         assert_return(m, -EINVAL);
-@@ -454,7 +454,7 @@ int sd_rtnl_message_neigh_get_state(sd_netlink_message *m, uint16_t *state) {
-         return 0;
- }
- 
--int sd_rtnl_message_neigh_get_family(sd_netlink_message *m, int *family) {
-+_public_ int sd_rtnl_message_neigh_get_family(sd_netlink_message *m, int *family) {
-         struct ndmsg *ndm;
- 
-         assert_return(m, -EINVAL);
-@@ -469,7 +469,7 @@ int sd_rtnl_message_neigh_get_family(sd_netlink_message *m, int *family) {
-         return 0;
- }
- 
--int sd_rtnl_message_neigh_get_ifindex(sd_netlink_message *m, int *index) {
-+_public_ int sd_rtnl_message_neigh_get_ifindex(sd_netlink_message *m, int *index) {
-         struct ndmsg *ndm;
- 
-         assert_return(m, -EINVAL);
-@@ -484,7 +484,7 @@ int sd_rtnl_message_neigh_get_ifindex(sd_netlink_message *m, int *index) {
-         return 0;
- }
- 
--int sd_rtnl_message_new_neigh(
-+_public_ int sd_rtnl_message_new_neigh(
-                 sd_netlink *rtnl,
-                 sd_netlink_message **ret,
-                 uint16_t nlmsg_type,
-@@ -517,7 +517,7 @@ int sd_rtnl_message_new_neigh(
-         return 0;
- }
- 
--int sd_rtnl_message_link_set_flags(sd_netlink_message *m, unsigned flags, unsigned change) {
-+_public_ int sd_rtnl_message_link_set_flags(sd_netlink_message *m, unsigned flags, unsigned change) {
-         struct ifinfomsg *ifi;
- 
-         assert_return(m, -EINVAL);
-@@ -533,7 +533,7 @@ int sd_rtnl_message_link_set_flags(sd_netlink_message *m, unsigned flags, unsign
-         return 0;
- }
- 
--int sd_rtnl_message_link_set_type(sd_netlink_message *m, unsigned type) {
-+_public_ int sd_rtnl_message_link_set_type(sd_netlink_message *m, unsigned type) {
-         struct ifinfomsg *ifi;
- 
-         assert_return(m, -EINVAL);
-@@ -547,7 +547,7 @@ int sd_rtnl_message_link_set_type(sd_netlink_message *m, unsigned type) {
-         return 0;
- }
- 
--int sd_rtnl_message_link_set_family(sd_netlink_message *m, unsigned family) {
-+_public_ int sd_rtnl_message_link_set_family(sd_netlink_message *m, unsigned family) {
-         struct ifinfomsg *ifi;
- 
-         assert_return(m, -EINVAL);
-@@ -561,7 +561,7 @@ int sd_rtnl_message_link_set_family(sd_netlink_message *m, unsigned family) {
-         return 0;
- }
- 
--int sd_rtnl_message_new_link(sd_netlink *rtnl, sd_netlink_message **ret,
-+_public_ int sd_rtnl_message_new_link(sd_netlink *rtnl, sd_netlink_message **ret,
-                              uint16_t nlmsg_type, int index) {
-         struct ifinfomsg *ifi;
-         int r;
-@@ -586,7 +586,7 @@ int sd_rtnl_message_new_link(sd_netlink *rtnl, sd_netlink_message **ret,
-         return 0;
- }
- 
--int sd_rtnl_message_addr_set_prefixlen(sd_netlink_message *m, unsigned char prefixlen) {
-+_public_ int sd_rtnl_message_addr_set_prefixlen(sd_netlink_message *m, unsigned char prefixlen) {
-         struct ifaddrmsg *ifa;
- 
-         assert_return(m, -EINVAL);
-@@ -604,7 +604,7 @@ int sd_rtnl_message_addr_set_prefixlen(sd_netlink_message *m, unsigned char pref
-         return 0;
- }
- 
--int sd_rtnl_message_addr_set_flags(sd_netlink_message *m, unsigned char flags) {
-+_public_ int sd_rtnl_message_addr_set_flags(sd_netlink_message *m, unsigned char flags) {
-         struct ifaddrmsg *ifa;
- 
-         assert_return(m, -EINVAL);
-@@ -618,7 +618,7 @@ int sd_rtnl_message_addr_set_flags(sd_netlink_message *m, unsigned char flags) {
-         return 0;
- }
- 
--int sd_rtnl_message_addr_set_scope(sd_netlink_message *m, unsigned char scope) {
-+_public_ int sd_rtnl_message_addr_set_scope(sd_netlink_message *m, unsigned char scope) {
-         struct ifaddrmsg *ifa;
- 
-         assert_return(m, -EINVAL);
-@@ -632,7 +632,7 @@ int sd_rtnl_message_addr_set_scope(sd_netlink_message *m, unsigned char scope) {
-         return 0;
- }
- 
--int sd_rtnl_message_addr_get_family(sd_netlink_message *m, int *ret_family) {
-+_public_ int sd_rtnl_message_addr_get_family(sd_netlink_message *m, int *ret_family) {
-         struct ifaddrmsg *ifa;
- 
-         assert_return(m, -EINVAL);
-@@ -647,7 +647,7 @@ int sd_rtnl_message_addr_get_family(sd_netlink_message *m, int *ret_family) {
-         return 0;
- }
- 
--int sd_rtnl_message_addr_get_prefixlen(sd_netlink_message *m, unsigned char *ret_prefixlen) {
-+_public_ int sd_rtnl_message_addr_get_prefixlen(sd_netlink_message *m, unsigned char *ret_prefixlen) {
-         struct ifaddrmsg *ifa;
- 
-         assert_return(m, -EINVAL);
-@@ -662,7 +662,7 @@ int sd_rtnl_message_addr_get_prefixlen(sd_netlink_message *m, unsigned char *ret
-         return 0;
- }
- 
--int sd_rtnl_message_addr_get_scope(sd_netlink_message *m, unsigned char *ret_scope) {
-+_public_ int sd_rtnl_message_addr_get_scope(sd_netlink_message *m, unsigned char *ret_scope) {
-         struct ifaddrmsg *ifa;
- 
-         assert_return(m, -EINVAL);
-@@ -677,7 +677,7 @@ int sd_rtnl_message_addr_get_scope(sd_netlink_message *m, unsigned char *ret_sco
-         return 0;
- }
- 
--int sd_rtnl_message_addr_get_flags(sd_netlink_message *m, unsigned char *ret_flags) {
-+_public_ int sd_rtnl_message_addr_get_flags(sd_netlink_message *m, unsigned char *ret_flags) {
-         struct ifaddrmsg *ifa;
- 
-         assert_return(m, -EINVAL);
-@@ -692,7 +692,7 @@ int sd_rtnl_message_addr_get_flags(sd_netlink_message *m, unsigned char *ret_fla
-         return 0;
- }
- 
--int sd_rtnl_message_addr_get_ifindex(sd_netlink_message *m, int *ret_ifindex) {
-+_public_ int sd_rtnl_message_addr_get_ifindex(sd_netlink_message *m, int *ret_ifindex) {
-         struct ifaddrmsg *ifa;
- 
-         assert_return(m, -EINVAL);
-@@ -707,7 +707,7 @@ int sd_rtnl_message_addr_get_ifindex(sd_netlink_message *m, int *ret_ifindex) {
-         return 0;
- }
- 
--int sd_rtnl_message_new_addr(
-+_public_ int sd_rtnl_message_new_addr(
-                 sd_netlink *rtnl,
-                 sd_netlink_message **ret,
-                 uint16_t nlmsg_type,
-@@ -736,7 +736,7 @@ int sd_rtnl_message_new_addr(
-         return 0;
- }
- 
--int sd_rtnl_message_new_addr_update(
-+_public_ int sd_rtnl_message_new_addr_update(
-                 sd_netlink *rtnl,
-                 sd_netlink_message **ret,
-                 int index,
-@@ -752,7 +752,7 @@ int sd_rtnl_message_new_addr_update(
-         return 0;
- }
- 
--int sd_rtnl_message_link_get_ifindex(sd_netlink_message *m, int *ifindex) {
-+_public_ int sd_rtnl_message_link_get_ifindex(sd_netlink_message *m, int *ifindex) {
-         struct ifinfomsg *ifi;
- 
-         assert_return(m, -EINVAL);
-@@ -767,7 +767,7 @@ int sd_rtnl_message_link_get_ifindex(sd_netlink_message *m, int *ifindex) {
-         return 0;
- }
- 
--int sd_rtnl_message_link_get_flags(sd_netlink_message *m, unsigned *flags) {
-+_public_ int sd_rtnl_message_link_get_flags(sd_netlink_message *m, unsigned *flags) {
-         struct ifinfomsg *ifi;
- 
-         assert_return(m, -EINVAL);
-@@ -782,7 +782,7 @@ int sd_rtnl_message_link_get_flags(sd_netlink_message *m, unsigned *flags) {
-         return 0;
- }
- 
--int sd_rtnl_message_link_get_type(sd_netlink_message *m, unsigned short *type) {
-+_public_ int sd_rtnl_message_link_get_type(sd_netlink_message *m, unsigned short *type) {
-         struct ifinfomsg *ifi;
- 
-         assert_return(m, -EINVAL);
-@@ -797,7 +797,7 @@ int sd_rtnl_message_link_get_type(sd_netlink_message *m, unsigned short *type) {
-         return 0;
- }
- 
--int sd_rtnl_message_get_family(sd_netlink_message *m, int *family) {
-+_public_ int sd_rtnl_message_get_family(sd_netlink_message *m, int *family) {
-         assert_return(m, -EINVAL);
-         assert_return(family, -EINVAL);
- 
-@@ -856,7 +856,7 @@ int sd_rtnl_message_get_family(sd_netlink_message *m, int *family) {
-         return -EOPNOTSUPP;
- }
- 
--int sd_rtnl_message_new_addrlabel(
-+_public_ int sd_rtnl_message_new_addrlabel(
-                 sd_netlink *rtnl,
-                 sd_netlink_message **ret,
-                 uint16_t nlmsg_type,
-@@ -884,7 +884,7 @@ int sd_rtnl_message_new_addrlabel(
-         return 0;
- }
- 
--int sd_rtnl_message_addrlabel_set_prefixlen(sd_netlink_message *m, unsigned char prefixlen) {
-+_public_ int sd_rtnl_message_addrlabel_set_prefixlen(sd_netlink_message *m, unsigned char prefixlen) {
-         struct ifaddrlblmsg *addrlabel;
- 
-         assert_return(m, -EINVAL);
-@@ -901,7 +901,7 @@ int sd_rtnl_message_addrlabel_set_prefixlen(sd_netlink_message *m, unsigned char
-         return 0;
- }
- 
--int sd_rtnl_message_addrlabel_get_prefixlen(sd_netlink_message *m, unsigned char *prefixlen) {
-+_public_ int sd_rtnl_message_addrlabel_get_prefixlen(sd_netlink_message *m, unsigned char *prefixlen) {
-         struct ifaddrlblmsg *addrlabel;
- 
-         assert_return(m, -EINVAL);
-@@ -915,7 +915,7 @@ int sd_rtnl_message_addrlabel_get_prefixlen(sd_netlink_message *m, unsigned char
-         return 0;
- }
- 
--int sd_rtnl_message_new_routing_policy_rule(
-+_public_ int sd_rtnl_message_new_routing_policy_rule(
-                 sd_netlink *rtnl,
-                 sd_netlink_message **ret,
-                 uint16_t nlmsg_type,
-@@ -940,7 +940,7 @@ int sd_rtnl_message_new_routing_policy_rule(
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_set_tos(sd_netlink_message *m, uint8_t tos) {
-+_public_ int sd_rtnl_message_routing_policy_rule_set_tos(sd_netlink_message *m, uint8_t tos) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -954,7 +954,7 @@ int sd_rtnl_message_routing_policy_rule_set_tos(sd_netlink_message *m, uint8_t t
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_get_tos(sd_netlink_message *m, uint8_t *tos) {
-+_public_ int sd_rtnl_message_routing_policy_rule_get_tos(sd_netlink_message *m, uint8_t *tos) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -968,7 +968,7 @@ int sd_rtnl_message_routing_policy_rule_get_tos(sd_netlink_message *m, uint8_t *
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_set_table(sd_netlink_message *m, uint8_t table) {
-+_public_ int sd_rtnl_message_routing_policy_rule_set_table(sd_netlink_message *m, uint8_t table) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -982,7 +982,7 @@ int sd_rtnl_message_routing_policy_rule_set_table(sd_netlink_message *m, uint8_t
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_get_table(sd_netlink_message *m, uint8_t *table) {
-+_public_ int sd_rtnl_message_routing_policy_rule_get_table(sd_netlink_message *m, uint8_t *table) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -996,7 +996,7 @@ int sd_rtnl_message_routing_policy_rule_get_table(sd_netlink_message *m, uint8_t
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_set_flags(sd_netlink_message *m, uint32_t flags) {
-+_public_ int sd_rtnl_message_routing_policy_rule_set_flags(sd_netlink_message *m, uint32_t flags) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -1009,7 +1009,7 @@ int sd_rtnl_message_routing_policy_rule_set_flags(sd_netlink_message *m, uint32_
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_get_flags(sd_netlink_message *m, uint32_t *flags) {
-+_public_ int sd_rtnl_message_routing_policy_rule_get_flags(sd_netlink_message *m, uint32_t *flags) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -1022,7 +1022,7 @@ int sd_rtnl_message_routing_policy_rule_get_flags(sd_netlink_message *m, uint32_
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_set_fib_type(sd_netlink_message *m, uint8_t type) {
-+_public_ int sd_rtnl_message_routing_policy_rule_set_fib_type(sd_netlink_message *m, uint8_t type) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -1036,7 +1036,7 @@ int sd_rtnl_message_routing_policy_rule_set_fib_type(sd_netlink_message *m, uint
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_get_fib_type(sd_netlink_message *m, uint8_t *type) {
-+_public_ int sd_rtnl_message_routing_policy_rule_get_fib_type(sd_netlink_message *m, uint8_t *type) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -1050,7 +1050,7 @@ int sd_rtnl_message_routing_policy_rule_get_fib_type(sd_netlink_message *m, uint
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_set_fib_dst_prefixlen(sd_netlink_message *m, uint8_t len) {
-+_public_ int sd_rtnl_message_routing_policy_rule_set_fib_dst_prefixlen(sd_netlink_message *m, uint8_t len) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -1064,7 +1064,7 @@ int sd_rtnl_message_routing_policy_rule_set_fib_dst_prefixlen(sd_netlink_message
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_get_fib_dst_prefixlen(sd_netlink_message *m, uint8_t *len) {
-+_public_ int sd_rtnl_message_routing_policy_rule_get_fib_dst_prefixlen(sd_netlink_message *m, uint8_t *len) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -1078,7 +1078,7 @@ int sd_rtnl_message_routing_policy_rule_get_fib_dst_prefixlen(sd_netlink_message
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_set_fib_src_prefixlen(sd_netlink_message *m, uint8_t len) {
-+_public_ int sd_rtnl_message_routing_policy_rule_set_fib_src_prefixlen(sd_netlink_message *m, uint8_t len) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -1092,7 +1092,7 @@ int sd_rtnl_message_routing_policy_rule_set_fib_src_prefixlen(sd_netlink_message
-         return 0;
- }
- 
--int sd_rtnl_message_routing_policy_rule_get_fib_src_prefixlen(sd_netlink_message *m, uint8_t *len) {
-+_public_ int sd_rtnl_message_routing_policy_rule_get_fib_src_prefixlen(sd_netlink_message *m, uint8_t *len) {
-         struct fib_rule_hdr *frh;
- 
-         assert_return(m, -EINVAL);
-@@ -1106,7 +1106,7 @@ int sd_rtnl_message_routing_policy_rule_get_fib_src_prefixlen(sd_netlink_message
-         return 0;
- }
- 
--int sd_rtnl_message_new_traffic_control(
-+_public_ int sd_rtnl_message_new_traffic_control(
-                 sd_netlink *rtnl,
-                 sd_netlink_message **ret,
-                 uint16_t nlmsg_type,
-@@ -1135,7 +1135,7 @@ int sd_rtnl_message_new_traffic_control(
-         return 0;
- }
- 
--int sd_rtnl_message_traffic_control_get_ifindex(sd_netlink_message *m, int *ret) {
-+_public_ int sd_rtnl_message_traffic_control_get_ifindex(sd_netlink_message *m, int *ret) {
-         struct tcmsg *tcm;
- 
-         assert_return(m, -EINVAL);
-@@ -1149,7 +1149,7 @@ int sd_rtnl_message_traffic_control_get_ifindex(sd_netlink_message *m, int *ret)
-         return 0;
- }
- 
--int sd_rtnl_message_traffic_control_get_handle(sd_netlink_message *m, uint32_t *ret) {
-+_public_ int sd_rtnl_message_traffic_control_get_handle(sd_netlink_message *m, uint32_t *ret) {
-         struct tcmsg *tcm;
- 
-         assert_return(m, -EINVAL);
-@@ -1163,7 +1163,7 @@ int sd_rtnl_message_traffic_control_get_handle(sd_netlink_message *m, uint32_t *
-         return 0;
- }
- 
--int sd_rtnl_message_traffic_control_get_parent(sd_netlink_message *m, uint32_t *ret) {
-+_public_ int sd_rtnl_message_traffic_control_get_parent(sd_netlink_message *m, uint32_t *ret) {
-         struct tcmsg *tcm;
- 
-         assert_return(m, -EINVAL);
-@@ -1177,7 +1177,7 @@ int sd_rtnl_message_traffic_control_get_parent(sd_netlink_message *m, uint32_t *
-         return 0;
- }
- 
--int sd_rtnl_message_new_mdb(
-+_public_ int sd_rtnl_message_new_mdb(
-                 sd_netlink *rtnl,
-                 sd_netlink_message **ret,
-                 uint16_t nlmsg_type,
-diff --git a/src/libsystemd/sd-netlink/netlink-message.c b/src/libsystemd/sd-netlink/netlink-message.c
-index 000a50ee3e..33bec2ac9b 100644
---- a/src/libsystemd/sd-netlink/netlink-message.c
-+++ b/src/libsystemd/sd-netlink/netlink-message.c
-@@ -113,7 +113,7 @@ int message_new_synthetic_error(sd_netlink *nl, int error, uint32_t serial, sd_n
-         return 0;
- }
- 
--int sd_netlink_message_set_request_dump(sd_netlink_message *m, int dump) {
-+_public_ int sd_netlink_message_set_request_dump(sd_netlink_message *m, int dump) {
-         assert_return(m, -EINVAL);
-         assert_return(m->hdr, -EINVAL);
-         assert_return(m->protocol != NETLINK_ROUTE ||
-@@ -129,7 +129,7 @@ int sd_netlink_message_set_request_dump(sd_netlink_message *m, int dump) {
- 
- DEFINE_TRIVIAL_REF_FUNC(sd_netlink_message, sd_netlink_message);
- 
--sd_netlink_message* sd_netlink_message_unref(sd_netlink_message *m) {
-+_public_ sd_netlink_message* sd_netlink_message_unref(sd_netlink_message *m) {
-         while (m && --m->n_ref == 0) {
-                 unsigned i;
- 
-@@ -146,7 +146,7 @@ sd_netlink_message* sd_netlink_message_unref(sd_netlink_message *m) {
-         return NULL;
- }
- 
--int sd_netlink_message_get_type(sd_netlink_message *m, uint16_t *ret) {
-+_public_ int sd_netlink_message_get_type(sd_netlink_message *m, uint16_t *ret) {
-         assert_return(m, -EINVAL);
-         assert_return(ret, -EINVAL);
- 
-@@ -155,7 +155,7 @@ int sd_netlink_message_get_type(sd_netlink_message *m, uint16_t *ret) {
-         return 0;
- }
- 
--int sd_netlink_message_set_flags(sd_netlink_message *m, uint16_t flags) {
-+_public_ int sd_netlink_message_set_flags(sd_netlink_message *m, uint16_t flags) {
-         assert_return(m, -EINVAL);
-         assert_return(flags != 0, -EINVAL);
- 
-@@ -164,7 +164,7 @@ int sd_netlink_message_set_flags(sd_netlink_message *m, uint16_t flags) {
-         return 0;
- }
- 
--int sd_netlink_message_is_broadcast(sd_netlink_message *m) {
-+_public_ int sd_netlink_message_is_broadcast(sd_netlink_message *m) {
-         assert_return(m, -EINVAL);
- 
-         return m->multicast_group != 0;
-@@ -230,7 +230,7 @@ static int message_attribute_has_type(sd_netlink_message *m, size_t *ret_size, u
-         return 0;
- }
- 
--int sd_netlink_message_append_string(sd_netlink_message *m, uint16_t attr_type, const char *data) {
-+_public_ int sd_netlink_message_append_string(sd_netlink_message *m, uint16_t attr_type, const char *data) {
-         size_t length, size;
-         int r;
- 
-@@ -256,7 +256,7 @@ int sd_netlink_message_append_string(sd_netlink_message *m, uint16_t attr_type,
-         return 0;
- }
- 
--int sd_netlink_message_append_strv(sd_netlink_message *m, uint16_t attr_type, const char* const *data) {
-+_public_ int sd_netlink_message_append_strv(sd_netlink_message *m, uint16_t attr_type, const char* const *data) {
-         size_t length, size;
-         int r;
- 
-@@ -284,7 +284,7 @@ int sd_netlink_message_append_strv(sd_netlink_message *m, uint16_t attr_type, co
-         return 0;
- }
- 
--int sd_netlink_message_append_flag(sd_netlink_message *m, uint16_t attr_type) {
-+_public_ int sd_netlink_message_append_flag(sd_netlink_message *m, uint16_t attr_type) {
-         size_t size;
-         int r;
- 
-@@ -302,7 +302,7 @@ int sd_netlink_message_append_flag(sd_netlink_message *m, uint16_t attr_type) {
-         return 0;
- }
- 
--int sd_netlink_message_append_u8(sd_netlink_message *m, uint16_t attr_type, uint8_t data) {
-+_public_ int sd_netlink_message_append_u8(sd_netlink_message *m, uint16_t attr_type, uint8_t data) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -319,7 +319,7 @@ int sd_netlink_message_append_u8(sd_netlink_message *m, uint16_t attr_type, uint
-         return 0;
- }
- 
--int sd_netlink_message_append_u16(sd_netlink_message *m, uint16_t attr_type, uint16_t data) {
-+_public_ int sd_netlink_message_append_u16(sd_netlink_message *m, uint16_t attr_type, uint16_t data) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -336,7 +336,7 @@ int sd_netlink_message_append_u16(sd_netlink_message *m, uint16_t attr_type, uin
-         return 0;
- }
- 
--int sd_netlink_message_append_u32(sd_netlink_message *m, uint16_t attr_type, uint32_t data) {
-+_public_ int sd_netlink_message_append_u32(sd_netlink_message *m, uint16_t attr_type, uint32_t data) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -353,7 +353,7 @@ int sd_netlink_message_append_u32(sd_netlink_message *m, uint16_t attr_type, uin
-         return 0;
- }
- 
--int sd_netlink_message_append_u64(sd_netlink_message *m, uint16_t attr_type, uint64_t data) {
-+_public_ int sd_netlink_message_append_u64(sd_netlink_message *m, uint16_t attr_type, uint64_t data) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -370,7 +370,7 @@ int sd_netlink_message_append_u64(sd_netlink_message *m, uint16_t attr_type, uin
-         return 0;
- }
- 
--int sd_netlink_message_append_s8(sd_netlink_message *m, uint16_t attr_type, int8_t data) {
-+_public_ int sd_netlink_message_append_s8(sd_netlink_message *m, uint16_t attr_type, int8_t data) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -387,7 +387,7 @@ int sd_netlink_message_append_s8(sd_netlink_message *m, uint16_t attr_type, int8
-         return 0;
- }
- 
--int sd_netlink_message_append_s16(sd_netlink_message *m, uint16_t attr_type, int16_t data) {
-+_public_ int sd_netlink_message_append_s16(sd_netlink_message *m, uint16_t attr_type, int16_t data) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -404,7 +404,7 @@ int sd_netlink_message_append_s16(sd_netlink_message *m, uint16_t attr_type, int
-         return 0;
- }
- 
--int sd_netlink_message_append_s32(sd_netlink_message *m, uint16_t attr_type, int32_t data) {
-+_public_ int sd_netlink_message_append_s32(sd_netlink_message *m, uint16_t attr_type, int32_t data) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -421,7 +421,7 @@ int sd_netlink_message_append_s32(sd_netlink_message *m, uint16_t attr_type, int
-         return 0;
- }
- 
--int sd_netlink_message_append_s64(sd_netlink_message *m, uint16_t attr_type, int64_t data) {
-+_public_ int sd_netlink_message_append_s64(sd_netlink_message *m, uint16_t attr_type, int64_t data) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -438,7 +438,7 @@ int sd_netlink_message_append_s64(sd_netlink_message *m, uint16_t attr_type, int
-         return 0;
- }
- 
--int sd_netlink_message_append_data(sd_netlink_message *m, uint16_t attr_type, const void *data, size_t len) {
-+_public_ int sd_netlink_message_append_data(sd_netlink_message *m, uint16_t attr_type, const void *data, size_t len) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -451,7 +451,7 @@ int sd_netlink_message_append_data(sd_netlink_message *m, uint16_t attr_type, co
-         return 0;
- }
- 
--int sd_netlink_message_append_container_data(
-+_public_ int sd_netlink_message_append_container_data(
-                 sd_netlink_message *m,
-                 uint16_t container_type,
-                 uint16_t attr_type,
-@@ -493,11 +493,11 @@ int netlink_message_append_in_addr_union(sd_netlink_message *m, uint16_t attr_ty
-         return 0;
- }
- 
--int sd_netlink_message_append_in_addr(sd_netlink_message *m, uint16_t attr_type, const struct in_addr *data) {
-+_public_ int sd_netlink_message_append_in_addr(sd_netlink_message *m, uint16_t attr_type, const struct in_addr *data) {
-         return netlink_message_append_in_addr_union(m, attr_type, AF_INET, (const union in_addr_union *) data);
- }
- 
--int sd_netlink_message_append_in6_addr(sd_netlink_message *m, uint16_t attr_type, const struct in6_addr *data) {
-+_public_ int sd_netlink_message_append_in6_addr(sd_netlink_message *m, uint16_t attr_type, const struct in6_addr *data) {
-         return netlink_message_append_in_addr_union(m, attr_type, AF_INET6, (const union in_addr_union *) data);
- }
- 
-@@ -520,15 +520,15 @@ int netlink_message_append_sockaddr_union(sd_netlink_message *m, uint16_t attr_t
-         return 0;
- }
- 
--int sd_netlink_message_append_sockaddr_in(sd_netlink_message *m, uint16_t attr_type, const struct sockaddr_in *data) {
-+_public_ int sd_netlink_message_append_sockaddr_in(sd_netlink_message *m, uint16_t attr_type, const struct sockaddr_in *data) {
-         return netlink_message_append_sockaddr_union(m, attr_type, (const union sockaddr_union *) data);
- }
- 
--int sd_netlink_message_append_sockaddr_in6(sd_netlink_message *m, uint16_t attr_type, const struct sockaddr_in6 *data) {
-+_public_ int sd_netlink_message_append_sockaddr_in6(sd_netlink_message *m, uint16_t attr_type, const struct sockaddr_in6 *data) {
-         return netlink_message_append_sockaddr_union(m, attr_type, (const union sockaddr_union *) data);
- }
- 
--int sd_netlink_message_append_ether_addr(sd_netlink_message *m, uint16_t attr_type, const struct ether_addr *data) {
-+_public_ int sd_netlink_message_append_ether_addr(sd_netlink_message *m, uint16_t attr_type, const struct ether_addr *data) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -565,7 +565,7 @@ int netlink_message_append_hw_addr(sd_netlink_message *m, uint16_t attr_type, co
-         return 0;
- }
- 
--int sd_netlink_message_append_cache_info(sd_netlink_message *m, uint16_t attr_type, const struct ifa_cacheinfo *info) {
-+_public_ int sd_netlink_message_append_cache_info(sd_netlink_message *m, uint16_t attr_type, const struct ifa_cacheinfo *info) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -583,7 +583,7 @@ int sd_netlink_message_append_cache_info(sd_netlink_message *m, uint16_t attr_ty
-         return 0;
- }
- 
--int sd_netlink_message_open_container(sd_netlink_message *m, uint16_t attr_type) {
-+_public_ int sd_netlink_message_open_container(sd_netlink_message *m, uint16_t attr_type) {
-         size_t size;
-         int r;
- 
-@@ -632,7 +632,7 @@ int sd_netlink_message_open_container(sd_netlink_message *m, uint16_t attr_type)
-         return 0;
- }
- 
--int sd_netlink_message_open_container_union(sd_netlink_message *m, uint16_t attr_type, const char *key) {
-+_public_ int sd_netlink_message_open_container_union(sd_netlink_message *m, uint16_t attr_type, const char *key) {
-         const NLAPolicySetUnion *policy_set_union;
-         int r;
- 
-@@ -671,7 +671,7 @@ int sd_netlink_message_open_container_union(sd_netlink_message *m, uint16_t attr
-         return 0;
- }
- 
--int sd_netlink_message_close_container(sd_netlink_message *m) {
-+_public_ int sd_netlink_message_close_container(sd_netlink_message *m) {
-         assert_return(m, -EINVAL);
-         assert_return(!m->sealed, -EPERM);
-         assert_return(m->n_containers > 0, -EINVAL);
-@@ -683,7 +683,7 @@ int sd_netlink_message_close_container(sd_netlink_message *m) {
-         return 0;
- }
- 
--int sd_netlink_message_open_array(sd_netlink_message *m, uint16_t attr_type) {
-+_public_ int sd_netlink_message_open_array(sd_netlink_message *m, uint16_t attr_type) {
-         int r;
- 
-         assert_return(m, -EINVAL);
-@@ -701,7 +701,7 @@ int sd_netlink_message_open_array(sd_netlink_message *m, uint16_t attr_type) {
-         return 0;
- }
- 
--int sd_netlink_message_cancel_array(sd_netlink_message *m) {
-+_public_ int sd_netlink_message_cancel_array(sd_netlink_message *m) {
-         uint32_t rta_len;
- 
-         assert_return(m, -EINVAL);
-@@ -757,7 +757,7 @@ static int netlink_message_read_internal(
-         return RTA_PAYLOAD(rta);
- }
- 
--int sd_netlink_message_read(sd_netlink_message *m, uint16_t attr_type, size_t size, void *data) {
-+_public_ int sd_netlink_message_read(sd_netlink_message *m, uint16_t attr_type, size_t size, void *data) {
-         void *attr_data;
-         int r;
- 
-@@ -776,7 +776,7 @@ int sd_netlink_message_read(sd_netlink_message *m, uint16_t attr_type, size_t si
-         return r;
- }
- 
--int sd_netlink_message_read_data(sd_netlink_message *m, uint16_t attr_type, size_t *ret_size, void **ret_data) {
-+_public_ int sd_netlink_message_read_data(sd_netlink_message *m, uint16_t attr_type, size_t *ret_size, void **ret_data) {
-         void *attr_data;
-         int r;
- 
-@@ -802,7 +802,7 @@ int sd_netlink_message_read_data(sd_netlink_message *m, uint16_t attr_type, size
-         return r;
- }
- 
--int sd_netlink_message_read_data_suffix0(sd_netlink_message *m, uint16_t attr_type, size_t *ret_size, void **ret_data) {
-+_public_ int sd_netlink_message_read_data_suffix0(sd_netlink_message *m, uint16_t attr_type, size_t *ret_size, void **ret_data) {
-         void *attr_data;
-         int r;
- 
-@@ -828,7 +828,7 @@ int sd_netlink_message_read_data_suffix0(sd_netlink_message *m, uint16_t attr_ty
-         return r;
- }
- 
--int sd_netlink_message_read_string_strdup(sd_netlink_message *m, uint16_t attr_type, char **data) {
-+_public_ int sd_netlink_message_read_string_strdup(sd_netlink_message *m, uint16_t attr_type, char **data) {
-         void *attr_data;
-         int r;
- 
-@@ -855,7 +855,7 @@ int sd_netlink_message_read_string_strdup(sd_netlink_message *m, uint16_t attr_t
-         return 0;
- }
- 
--int sd_netlink_message_read_string(sd_netlink_message *m, uint16_t attr_type, const char **data) {
-+_public_ int sd_netlink_message_read_string(sd_netlink_message *m, uint16_t attr_type, const char **data) {
-         void *attr_data;
-         int r;
- 
-@@ -878,7 +878,7 @@ int sd_netlink_message_read_string(sd_netlink_message *m, uint16_t attr_type, co
-         return 0;
- }
- 
--int sd_netlink_message_read_u8(sd_netlink_message *m, uint16_t attr_type, uint8_t *data) {
-+_public_ int sd_netlink_message_read_u8(sd_netlink_message *m, uint16_t attr_type, uint8_t *data) {
-         void *attr_data;
-         int r;
- 
-@@ -901,7 +901,7 @@ int sd_netlink_message_read_u8(sd_netlink_message *m, uint16_t attr_type, uint8_
-         return 0;
- }
- 
--int sd_netlink_message_read_u16(sd_netlink_message *m, uint16_t attr_type, uint16_t *data) {
-+_public_ int sd_netlink_message_read_u16(sd_netlink_message *m, uint16_t attr_type, uint16_t *data) {
-         void *attr_data;
-         bool net_byteorder;
-         int r;
-@@ -929,7 +929,7 @@ int sd_netlink_message_read_u16(sd_netlink_message *m, uint16_t attr_type, uint1
-         return 0;
- }
- 
--int sd_netlink_message_read_u32(sd_netlink_message *m, uint16_t attr_type, uint32_t *data) {
-+_public_ int sd_netlink_message_read_u32(sd_netlink_message *m, uint16_t attr_type, uint32_t *data) {
-         void *attr_data;
-         bool net_byteorder;
-         int r;
-@@ -957,7 +957,7 @@ int sd_netlink_message_read_u32(sd_netlink_message *m, uint16_t attr_type, uint3
-         return 0;
- }
- 
--int sd_netlink_message_read_ether_addr(sd_netlink_message *m, uint16_t attr_type, struct ether_addr *data) {
-+_public_ int sd_netlink_message_read_ether_addr(sd_netlink_message *m, uint16_t attr_type, struct ether_addr *data) {
-         void *attr_data;
-         int r;
- 
-@@ -1005,7 +1005,7 @@ int netlink_message_read_hw_addr(sd_netlink_message *m, uint16_t attr_type, stru
-         return 0;
- }
- 
--int sd_netlink_message_read_cache_info(sd_netlink_message *m, uint16_t attr_type, struct ifa_cacheinfo *info) {
-+_public_ int sd_netlink_message_read_cache_info(sd_netlink_message *m, uint16_t attr_type, struct ifa_cacheinfo *info) {
-         void *attr_data;
-         int r;
- 
-@@ -1052,7 +1052,7 @@ int netlink_message_read_in_addr_union(sd_netlink_message *m, uint16_t attr_type
-         return 0;
- }
- 
--int sd_netlink_message_read_in_addr(sd_netlink_message *m, uint16_t attr_type, struct in_addr *data) {
-+_public_ int sd_netlink_message_read_in_addr(sd_netlink_message *m, uint16_t attr_type, struct in_addr *data) {
-         union in_addr_union u;
-         int r;
- 
-@@ -1063,7 +1063,7 @@ int sd_netlink_message_read_in_addr(sd_netlink_message *m, uint16_t attr_type, s
-         return r;
- }
- 
--int sd_netlink_message_read_in6_addr(sd_netlink_message *m, uint16_t attr_type, struct in6_addr *data) {
-+_public_ int sd_netlink_message_read_in6_addr(sd_netlink_message *m, uint16_t attr_type, struct in6_addr *data) {
-         union in_addr_union u;
-         int r;
- 
-@@ -1074,7 +1074,7 @@ int sd_netlink_message_read_in6_addr(sd_netlink_message *m, uint16_t attr_type,
-         return r;
- }
- 
--int sd_netlink_message_has_flag(sd_netlink_message *m, uint16_t attr_type) {
-+_public_ int sd_netlink_message_has_flag(sd_netlink_message *m, uint16_t attr_type) {
-         void *attr_data;
-         int r;
- 
-@@ -1095,7 +1095,7 @@ int sd_netlink_message_has_flag(sd_netlink_message *m, uint16_t attr_type) {
-         return 1;
- }
- 
--int sd_netlink_message_read_strv(sd_netlink_message *m, uint16_t container_type, uint16_t attr_type, char ***ret) {
-+_public_ int sd_netlink_message_read_strv(sd_netlink_message *m, uint16_t container_type, uint16_t attr_type, char ***ret) {
-         _cleanup_strv_free_ char **s = NULL;
-         const NLAPolicySet *policy_set;
-         const NLAPolicy *policy;
-@@ -1192,7 +1192,7 @@ static int netlink_container_parse(
-         return 0;
- }
- 
--int sd_netlink_message_enter_container(sd_netlink_message *m, uint16_t attr_type) {
-+_public_ int sd_netlink_message_enter_container(sd_netlink_message *m, uint16_t attr_type) {
-         const NLAPolicy *policy;
-         const NLAPolicySet *policy_set;
-         void *container;
-@@ -1279,7 +1279,7 @@ int sd_netlink_message_enter_container(sd_netlink_message *m, uint16_t attr_type
-         return 0;
- }
- 
--int sd_netlink_message_enter_array(sd_netlink_message *m, uint16_t attr_type) {
-+_public_ int sd_netlink_message_enter_array(sd_netlink_message *m, uint16_t attr_type) {
-         void *container;
-         size_t size;
-         int r;
-@@ -1308,7 +1308,7 @@ int sd_netlink_message_enter_array(sd_netlink_message *m, uint16_t attr_type) {
-         return 0;
- }
- 
--int sd_netlink_message_exit_container(sd_netlink_message *m) {
-+_public_ int sd_netlink_message_exit_container(sd_netlink_message *m) {
-         assert_return(m, -EINVAL);
-         assert_return(m->sealed, -EINVAL);
-         assert_return(m->n_containers > 0, -EINVAL);
-@@ -1322,7 +1322,7 @@ int sd_netlink_message_exit_container(sd_netlink_message *m) {
-         return 0;
- }
- 
--int sd_netlink_message_get_max_attribute(sd_netlink_message *m, uint16_t *ret) {
-+_public_ int sd_netlink_message_get_max_attribute(sd_netlink_message *m, uint16_t *ret) {
-         assert_return(m, -EINVAL);
-         assert_return(m->sealed, -EINVAL);
-         assert_return(ret, -EINVAL);
-@@ -1331,14 +1331,14 @@ int sd_netlink_message_get_max_attribute(sd_netlink_message *m, uint16_t *ret) {
-         return 0;
- }
- 
--int sd_netlink_message_is_error(sd_netlink_message *m) {
-+_public_ int sd_netlink_message_is_error(sd_netlink_message *m) {
-         assert_return(m, 0);
-         assert_return(m->hdr, 0);
- 
-         return m->hdr->nlmsg_type == NLMSG_ERROR;
- }
- 
--int sd_netlink_message_get_errno(sd_netlink_message *m) {
-+_public_ int sd_netlink_message_get_errno(sd_netlink_message *m) {
-         struct nlmsgerr *err;
- 
-         assert_return(m, -EINVAL);
-@@ -1373,7 +1373,7 @@ static int netlink_message_parse_error(sd_netlink_message *m) {
-                                        NLMSG_PAYLOAD(m->hdr, hlen));
- }
- 
--int sd_netlink_message_rewind(sd_netlink_message *m, sd_netlink *nl) {
-+_public_ int sd_netlink_message_rewind(sd_netlink_message *m, sd_netlink *nl) {
-         size_t size;
-         int r;
- 
-diff --git a/src/libsystemd/sd-netlink/sd-netlink.c b/src/libsystemd/sd-netlink/sd-netlink.c
-index ce0687eb57..fbebcf301b 100644
---- a/src/libsystemd/sd-netlink/sd-netlink.c
-+++ b/src/libsystemd/sd-netlink/sd-netlink.c
-@@ -65,7 +65,7 @@ static int netlink_new(sd_netlink **ret) {
-         return 0;
- }
- 
--int sd_netlink_open_fd(sd_netlink **ret, int fd) {
-+_public_ int sd_netlink_open_fd(sd_netlink **ret, int fd) {
-         _cleanup_(sd_netlink_unrefp) sd_netlink *nl = NULL;
-         int r, protocol;
- 
-@@ -103,11 +103,11 @@ int sd_netlink_open_fd(sd_netlink **ret, int fd) {
-         return 0;
- }
- 
--int sd_netlink_open(sd_netlink **ret) {
-+_public_ int sd_netlink_open(sd_netlink **ret) {
-         return netlink_open_family(ret, NETLINK_ROUTE);
- }
- 
--int sd_netlink_increase_rxbuf(sd_netlink *nl, size_t size) {
-+_public_ int sd_netlink_increase_rxbuf(sd_netlink *nl, size_t size) {
-         assert_return(nl, -EINVAL);
-         assert_return(!netlink_pid_changed(nl), -ECHILD);
- 
-@@ -145,7 +145,7 @@ static sd_netlink *netlink_free(sd_netlink *nl) {
- 
- DEFINE_TRIVIAL_REF_UNREF_FUNC(sd_netlink, sd_netlink, netlink_free);
- 
--int sd_netlink_send(
-+_public_ int sd_netlink_send(
-                 sd_netlink *nl,
-                 sd_netlink_message *message,
-                 uint32_t *serial) {
-@@ -451,7 +451,7 @@ static int timeout_compare(const void *a, const void *b) {
-         return CMP(x->timeout, y->timeout);
- }
- 
--int sd_netlink_call_async(
-+_public_ int sd_netlink_call_async(
-                 sd_netlink *nl,
-                 sd_netlink_slot **ret_slot,
-                 sd_netlink_message *m,
-@@ -516,7 +516,7 @@ int sd_netlink_call_async(
-         return k;
- }
- 
--int sd_netlink_read(
-+_public_ int sd_netlink_read(
-                 sd_netlink *nl,
-                 uint32_t serial,
-                 uint64_t usec,
-@@ -586,7 +586,7 @@ int sd_netlink_read(
-         }
- }
- 
--int sd_netlink_call(
-+_public_ int sd_netlink_call(
-                 sd_netlink *nl,
-                 sd_netlink_message *message,
-                 uint64_t usec,
-@@ -606,14 +606,14 @@ int sd_netlink_call(
-         return sd_netlink_read(nl, serial, usec, ret);
- }
- 
--int sd_netlink_get_events(sd_netlink *nl) {
-+_public_ int sd_netlink_get_events(sd_netlink *nl) {
-         assert_return(nl, -EINVAL);
-         assert_return(!netlink_pid_changed(nl), -ECHILD);
- 
-         return ordered_set_size(nl->rqueue) == 0 ? POLLIN : 0;
- }
- 
--int sd_netlink_get_timeout(sd_netlink *nl, uint64_t *timeout_usec) {
-+_public_ int sd_netlink_get_timeout(sd_netlink *nl, uint64_t *timeout_usec) {
-         struct reply_callback *c;
- 
-         assert_return(nl, -EINVAL);
-@@ -689,7 +689,7 @@ static int prepare_callback(sd_event_source *s, void *userdata) {
-         return 1;
- }
- 
--int sd_netlink_attach_event(sd_netlink *nl, sd_event *event, int64_t priority) {
-+_public_ int sd_netlink_attach_event(sd_netlink *nl, sd_event *event, int64_t priority) {
-         int r;
- 
-         assert_return(nl, -EINVAL);
-@@ -741,7 +741,7 @@ fail:
-         return r;
- }
- 
--int sd_netlink_detach_event(sd_netlink *nl) {
-+_public_ int sd_netlink_detach_event(sd_netlink *nl) {
-         assert_return(nl, -EINVAL);
-         assert_return(nl->event, -ENXIO);
- 
-@@ -804,7 +804,7 @@ int netlink_add_match_internal(
-         return 0;
- }
- 
--int sd_netlink_add_match(
-+_public_ int sd_netlink_add_match(
-                 sd_netlink *rtnl,
-                 sd_netlink_slot **ret_slot,
-                 uint16_t type,
-@@ -874,7 +874,7 @@ int sd_netlink_add_match(
-                                           destroy_callback, userdata, description);
- }
- 
--int sd_netlink_attach_filter(sd_netlink *nl, size_t len, const struct sock_filter *filter) {
-+_public_ int sd_netlink_attach_filter(sd_netlink *nl, size_t len, const struct sock_filter *filter) {
-         assert_return(nl, -EINVAL);
-         assert_return(len == 0 || filter, -EINVAL);
- 
-diff --git a/src/systemd/meson.build b/src/systemd/meson.build
-index a9cdcd24a0..03ef60f92a 100644
---- a/src/systemd/meson.build
-+++ b/src/systemd/meson.build
-@@ -13,6 +13,7 @@ _systemd_headers = [
-         'sd-journal.h',
-         'sd-login.h',
-         'sd-messages.h',
-+        'sd-netlink.h',
-         'sd-path.h',
- ]
- 
-@@ -35,7 +36,6 @@ _not_installed_headers = [
-         'sd-lldp-tx.h',
-         'sd-lldp.h',
-         'sd-ndisc.h',
--        'sd-netlink.h',
-         'sd-network.h',
-         'sd-radv.h',
-         'sd-resolve.h',
--- 
-2.39.2
-
diff --git a/systemd/systemd.nm b/systemd/systemd.nm
index bdb1e3f04..b1eb63571 100644
--- a/systemd/systemd.nm
+++ b/systemd/systemd.nm
@@ -4,8 +4,8 @@
 ###############################################################################
 
 name       = systemd
-version    = 254
-release    = 3
+version    = 257.3
+release    = 1
 
 maintainer = Stefan Schantl <stefan.schantl@ipfire.org>
 groups     = System/Base
@@ -18,7 +18,10 @@ description
 	SysV and LSB init scripts.
 end
 
-source_dl  = https://github.com/%{name}/%{name}/archive/v%{version}.tar.gz#/
+# This project is hosted on GitHub
+github_version = v%{version}
+
+source_dl  = %{github_url}
 
 build
 	unitdir = %{prefix}/lib/systemd/system
@@ -83,7 +86,12 @@ build
 
 	export LD_LIBRARY_PATH = %{DIR_APP}/.libs
 
+	# Disable any kind of automatic or optional
+	# features
 	configure_options = \
+		--auto-features=disabled
+
+	configure_options += \
 		-Dsysvinit-path= \
 		-Dsysvrcnd-path= \
 		-Dnobody-user=nobody \
@@ -103,7 +111,8 @@ build
 		-Dportabled=false \
 		-Dtimesyncd=false \
 		-Dtimedated=false \
-		-Dpolkit=false
+		-Dpolkit=false \
+		-Dbpf-framework=false
 
 	# Assign group ids
 	configure_options += \
@@ -316,8 +325,6 @@ packages
 			# Be sure to stop the old udev before updating.
 			/usr/bin/systemctl stop udev.service udev-trigger.service \
 				udev-control.socket udev-kernel.socket >/dev/null 2>&1 || :
-
-			%{create_groups}
 		end
 
 		script postup
