summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-07-24 12:00:30 +0200
committerGitHub <noreply@github.com>2019-07-24 12:00:30 +0200
commit181824e32c87934cea8130cb5652a6a2ded842a2 (patch)
tree9a9d773655458d875ed76b4aa056b29539a6400f
parentf3d3a9ca0734c298cc3bf08f8c4907dd19ee9939 (diff)
parentdfadc1f203bb38a6c1570f484c05f3ab673d0b89 (diff)
downloadsystemd-181824e32c87934cea8130cb5652a6a2ded842a2.tar.gz
Merge pull request #13145 from poettering/nss-gateway-fix
filter _gateway NSS resolving to only use main routing table
-rw-r--r--meson.build1
-rw-r--r--src/libsystemd/meson.build2
-rw-r--r--src/shared/local-addresses.c (renamed from src/libsystemd/sd-netlink/local-addresses.c)8
-rw-r--r--src/shared/local-addresses.h (renamed from src/libsystemd/sd-netlink/local-addresses.h)0
-rw-r--r--src/shared/meson.build4
-rw-r--r--src/test/meson.build8
-rw-r--r--src/test/test-local-addresses.c (renamed from src/libsystemd/sd-netlink/test-local-addresses.c)0
7 files changed, 15 insertions, 8 deletions
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
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
index e88c5e5d21..e88c5e5d21 100644
--- a/src/libsystemd/sd-netlink/local-addresses.h
+++ b/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
index 37505ea783..37505ea783 100644
--- a/src/libsystemd/sd-netlink/test-local-addresses.c
+++ b/src/test/test-local-addresses.c