summaryrefslogtreecommitdiff
path: root/src/resolve
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2023-01-05 22:10:46 +0100
committerLennart Poettering <lennart@poettering.net>2023-01-06 10:37:37 +0100
commit5f9041afec65ce88c8b2a2ca3f6d14802ac01a56 (patch)
treedc61de3298f804b2c0e0d7b4c4965c85fb27ab87 /src/resolve
parenta554057f2b4bb6c2058ee9c97c407cc4baae9bae (diff)
downloadsystemd-5f9041afec65ce88c8b2a2ca3f6d14802ac01a56.tar.gz
resolved: disable SO_BINDTOIFINDEX hack for localhost IP addresses
Fixes: #23010
Diffstat (limited to 'src/resolve')
-rw-r--r--src/resolve/resolved-dns-scope.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c
index 7b82ae2b45..c95875ec10 100644
--- a/src/resolve/resolved-dns-scope.c
+++ b/src/resolve/resolved-dns-scope.c
@@ -474,7 +474,8 @@ static int dns_scope_socket(
* host result in EHOSTUNREACH, since Linux won't send the packets out of the specified
* interface, but delivers them directly to the local socket. */
if (s->link &&
- !manager_find_link_address(s->manager, sa.sa.sa_family, sockaddr_in_addr(&sa.sa))) {
+ !manager_find_link_address(s->manager, sa.sa.sa_family, sockaddr_in_addr(&sa.sa)) &&
+ in_addr_is_localhost(sa.sa.sa_family, sockaddr_in_addr(&sa.sa)) == 0) {
r = socket_bind_to_ifindex(fd, ifindex);
if (r < 0)
return r;