mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-08-26 17:50:11 +03:00
network: assume prefix length is full address size
The commit 0f707207b9
enables strong
warning about missing prefix length in Address= setting.
The change was done in v241, and was about 4 years ago.
Let's drop the legacy assumption and make the parser consistent with
'ip address' command.
C.f. #11307.
Closes #26102.
This commit is contained in:
@ -1683,12 +1683,11 @@ int config_parse_address(
|
||||
/* Address=address/prefixlen */
|
||||
r = in_addr_prefix_from_string_auto_internal(rvalue, PREFIXLEN_REFUSE, &f, &buffer, &prefixlen);
|
||||
if (r == -ENOANO) {
|
||||
log_syntax(unit, LOG_WARNING, filename, line, r,
|
||||
"An address '%s' is specified without prefix length. "
|
||||
"The behavior of parsing addresses without prefix length will be changed in the future release. "
|
||||
"Please specify prefix length explicitly.", rvalue);
|
||||
|
||||
r = in_addr_prefix_from_string_auto_internal(rvalue, PREFIXLEN_LEGACY, &f, &buffer, &prefixlen);
|
||||
r = in_addr_prefix_from_string_auto(rvalue, &f, &buffer, &prefixlen);
|
||||
if (r >= 0)
|
||||
log_syntax(unit, LOG_WARNING, filename, line, r,
|
||||
"An address '%s' is specified without prefix length. Assuming the prefix length is %u."
|
||||
"Please specify the prefix length explicitly.", rvalue, prefixlen);
|
||||
}
|
||||
if (r < 0) {
|
||||
log_syntax(unit, LOG_WARNING, filename, line, r, "Invalid address '%s', ignoring assignment: %m", rvalue);
|
||||
|
@ -197,7 +197,7 @@ TEST(config_parse_address) {
|
||||
test_config_parse_address_one("", AF_INET, 0, NULL, 0);
|
||||
test_config_parse_address_one("/", AF_INET, 0, NULL, 0);
|
||||
test_config_parse_address_one("/8", AF_INET, 0, NULL, 0);
|
||||
test_config_parse_address_one("1.2.3.4", AF_INET, 1, &(union in_addr_union) { .in = (struct in_addr) { .s_addr = htobe32(0x01020304) } }, 8);
|
||||
test_config_parse_address_one("1.2.3.4", AF_INET, 1, &(union in_addr_union) { .in = (struct in_addr) { .s_addr = htobe32(0x01020304) } }, 32);
|
||||
test_config_parse_address_one("1.2.3.4/0", AF_INET, 1, &(union in_addr_union) { .in = (struct in_addr) { .s_addr = htobe32(0x01020304) } }, 0);
|
||||
test_config_parse_address_one("1.2.3.4/1", AF_INET, 1, &(union in_addr_union) { .in = (struct in_addr) { .s_addr = htobe32(0x01020304) } }, 1);
|
||||
test_config_parse_address_one("1.2.3.4/2", AF_INET, 1, &(union in_addr_union) { .in = (struct in_addr) { .s_addr = htobe32(0x01020304) } }, 2);
|
||||
@ -208,7 +208,7 @@ TEST(config_parse_address) {
|
||||
test_config_parse_address_one("", AF_INET6, 0, NULL, 0);
|
||||
test_config_parse_address_one("/", AF_INET6, 0, NULL, 0);
|
||||
test_config_parse_address_one("/8", AF_INET6, 0, NULL, 0);
|
||||
test_config_parse_address_one("::1", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 0);
|
||||
test_config_parse_address_one("::1", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 128);
|
||||
test_config_parse_address_one("::1/0", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 0);
|
||||
test_config_parse_address_one("::1/1", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 1);
|
||||
test_config_parse_address_one("::1/2", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 2);
|
||||
|
@ -5,7 +5,7 @@ Name=veth99
|
||||
[Network]
|
||||
DHCP=ipv4
|
||||
IPv6AcceptRA=no
|
||||
Address=192.168.5.250
|
||||
Address=192.168.5.250/24
|
||||
|
||||
[DHCPv4]
|
||||
UseDomains=yes
|
||||
|
Reference in New Issue
Block a user