summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2020-02-28 02:10:15 +0900
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-02-28 09:53:36 +0100
commit07336a067216f3e5d7551b090c5972c120805d0e (patch)
treef867a7aeb9786ea89b810abe2231c6f2672bedd6
parent96100b8a04fd3a904181b9b154e7691cf2303161 (diff)
downloadsystemd-07336a067216f3e5d7551b090c5972c120805d0e.tar.gz
network: assume Scope=host when Address= is loopback address
Fixes #14903.
-rw-r--r--src/network/networkd-address.c4
-rw-r--r--src/network/networkd-address.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c
index 59775869b6..6244f75201 100644
--- a/src/network/networkd-address.c
+++ b/src/network/networkd-address.c
@@ -1053,6 +1053,7 @@ int config_parse_address_scope(const char *unit,
}
}
+ n->scope_set = true;
n = NULL;
return 0;
}
@@ -1125,5 +1126,8 @@ int address_section_verify(Address *address) {
address->section->filename, address->section->line);
}
+ if (!address->scope_set && in_addr_is_localhost(address->family, &address->in_addr) > 0)
+ address->scope = RT_SCOPE_HOST;
+
return 0;
}
diff --git a/src/network/networkd-address.h b/src/network/networkd-address.h
index 6995c5c06e..ad2412c75a 100644
--- a/src/network/networkd-address.h
+++ b/src/network/networkd-address.h
@@ -39,6 +39,7 @@ struct Address {
union in_addr_union in_addr;
union in_addr_union in_addr_peer;
+ bool scope_set:1;
bool ip_masquerade_done:1;
bool manage_temporary_address:1;
bool home_address:1;