diff --git a/meson.build b/meson.build index 76b3d53391..e5ceb1e169 100644 --- a/meson.build +++ b/meson.build @@ -1540,6 +1540,7 @@ foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'], '-shared', '-Wl,--version-script=' + version_script_arg], link_with : [libsystemd_static, + libshared_static, libbasic], dependencies : [threads, librt], diff --git a/src/libsystemd/meson.build b/src/libsystemd/meson.build index 67add387e6..77fe6e780f 100644 --- a/src/libsystemd/meson.build +++ b/src/libsystemd/meson.build @@ -71,8 +71,6 @@ libsystemd_sources = files(''' sd-hwdb/hwdb-util.h sd-hwdb/sd-hwdb.c sd-netlink/generic-netlink.c - sd-netlink/local-addresses.c - sd-netlink/local-addresses.h sd-netlink/netlink-internal.h sd-netlink/netlink-message.c sd-netlink/netlink-slot.c diff --git a/src/libsystemd/sd-netlink/local-addresses.c b/src/shared/local-addresses.c similarity index 96% rename from src/libsystemd/sd-netlink/local-addresses.c rename to src/shared/local-addresses.c index 751144539b..2f3d675643 100644 --- a/src/libsystemd/sd-netlink/local-addresses.c +++ b/src/shared/local-addresses.c @@ -175,7 +175,7 @@ int local_gateways(sd_netlink *context, int ifindex, int af, struct local_addres for (m = reply; m; m = sd_netlink_message_next(m)) { struct local_address *a; uint16_t type; - unsigned char dst_len, src_len; + unsigned char dst_len, src_len, table; uint32_t ifi; int family; @@ -202,6 +202,12 @@ int local_gateways(sd_netlink *context, int ifindex, int af, struct local_addres if (src_len != 0) continue; + r = sd_rtnl_message_route_get_table(m, &table); + if (r < 0) + return r; + if (table != RT_TABLE_MAIN) + continue; + r = sd_netlink_message_read_u32(m, RTA_OIF, &ifi); if (r == -ENODATA) /* Not all routes have an RTA_OIF attribute (for example nexthop ones) */ continue; diff --git a/src/libsystemd/sd-netlink/local-addresses.h b/src/shared/local-addresses.h similarity index 100% rename from src/libsystemd/sd-netlink/local-addresses.h rename to src/shared/local-addresses.h diff --git a/src/shared/meson.build b/src/shared/meson.build index ca24d15eab..e9005a30e3 100644 --- a/src/shared/meson.build +++ b/src/shared/meson.build @@ -109,6 +109,8 @@ shared_sources = files(''' linux/bpf_insn.h linux/dm-ioctl.h linux/ethtool.h + local-addresses.c + local-addresses.h lockfile-util.c lockfile-util.h log-link.h @@ -170,8 +172,8 @@ shared_sources = files(''' udev-util.h uid-range.c uid-range.h - unit-file.h unit-file.c + unit-file.h utmp-wtmp.h varlink.c varlink.h diff --git a/src/test/meson.build b/src/test/meson.build index ddc04dda65..e337e50146 100644 --- a/src/test/meson.build +++ b/src/test/meson.build @@ -754,6 +754,10 @@ tests += [ [['src/test/test-sd-hwdb.c'], [], []], + + [['src/test/test-local-addresses.c'], + [], + []], ] ############################################################ @@ -964,10 +968,6 @@ tests += [ [], []], - [['src/libsystemd/sd-netlink/test-local-addresses.c'], - [], - []], - [['src/libsystemd/sd-resolve/test-resolve.c'], [], [threads], diff --git a/src/libsystemd/sd-netlink/test-local-addresses.c b/src/test/test-local-addresses.c similarity index 100% rename from src/libsystemd/sd-netlink/test-local-addresses.c rename to src/test/test-local-addresses.c