mirror of
https://github.com/systemd/systemd.git
synced 2025-03-25 18:50:18 +03:00
Merge pull request #13412 from yuwata/network-check-and-warn-more
network: check more static IPv6 configurations and add more warnings
This commit is contained in:
commit
b977347498
@ -191,7 +191,13 @@ static bool link_ipv6_enabled(Link *link) {
|
||||
return false;
|
||||
|
||||
/* DHCPv6 client will not be started if no IPv6 link-local address is configured. */
|
||||
return link_ipv6ll_enabled(link) || network_has_static_ipv6_addresses(link->network);
|
||||
if (link_ipv6ll_enabled(link))
|
||||
return true;
|
||||
|
||||
if (network_has_static_ipv6_configurations(link->network))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool link_radv_enabled(Link *link) {
|
||||
|
@ -220,6 +220,26 @@ int network_verify(Network *network) {
|
||||
if (network->link_local < 0)
|
||||
network->link_local = network->bridge ? ADDRESS_FAMILY_NO : ADDRESS_FAMILY_IPV6;
|
||||
|
||||
if (!FLAGS_SET(network->link_local, ADDRESS_FAMILY_IPV6)) {
|
||||
if (network->ipv6_accept_ra > 0) {
|
||||
log_warning("%s: IPv6AcceptRA= is enabled by the .network file but IPv6 link local addressing is disabled. "
|
||||
"Disabling IPv6AcceptRA=.", network->filename);
|
||||
network->ipv6_accept_ra = false;
|
||||
}
|
||||
|
||||
if (FLAGS_SET(network->dhcp, ADDRESS_FAMILY_IPV6)) {
|
||||
log_warning("%s: DHCPv6 client is enabled by the .network file but IPv6 link local addressing is disabled. "
|
||||
"Disabling DHCPv6 client.", network->filename);
|
||||
SET_FLAG(network->dhcp, ADDRESS_FAMILY_IPV6, false);
|
||||
}
|
||||
|
||||
if (network->router_prefix_delegation != RADV_PREFIX_DELEGATION_NONE) {
|
||||
log_warning("%s: IPv6PrefixDelegation= is enabled but IPv6 link local addressing is disabled. "
|
||||
"Disabling IPv6PrefixDelegation=.", network->filename);
|
||||
network->router_prefix_delegation = RADV_PREFIX_DELEGATION_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
if (FLAGS_SET(network->link_local, ADDRESS_FAMILY_FALLBACK_IPV4) &&
|
||||
!FLAGS_SET(network->dhcp, ADDRESS_FAMILY_IPV4)) {
|
||||
log_warning("%s: fallback assignment of IPv4 link local address is enabled but DHCPv4 is disabled. "
|
||||
@ -662,15 +682,35 @@ int network_apply(Network *network, Link *link) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool network_has_static_ipv6_addresses(Network *network) {
|
||||
bool network_has_static_ipv6_configurations(Network *network) {
|
||||
Address *address;
|
||||
Route *route;
|
||||
FdbEntry *fdb;
|
||||
Neighbor *neighbor;
|
||||
|
||||
assert(network);
|
||||
|
||||
LIST_FOREACH(addresses, address, network->static_addresses) {
|
||||
LIST_FOREACH(addresses, address, network->static_addresses)
|
||||
if (address->family == AF_INET6)
|
||||
return true;
|
||||
}
|
||||
|
||||
LIST_FOREACH(routes, route, network->static_routes)
|
||||
if (route->family == AF_INET6)
|
||||
return true;
|
||||
|
||||
LIST_FOREACH(static_fdb_entries, fdb, network->static_fdb_entries)
|
||||
if (fdb->family == AF_INET6)
|
||||
return true;
|
||||
|
||||
LIST_FOREACH(neighbors, neighbor, network->neighbors)
|
||||
if (neighbor->family == AF_INET6)
|
||||
return true;
|
||||
|
||||
if (!LIST_IS_EMPTY(network->address_labels))
|
||||
return true;
|
||||
|
||||
if (!LIST_IS_EMPTY(network->static_prefixes))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -269,7 +269,7 @@ int network_get(Manager *manager, sd_device *device, const char *ifname, const s
|
||||
int network_apply(Network *network, Link *link);
|
||||
void network_apply_anonymize_if_set(Network *network);
|
||||
|
||||
bool network_has_static_ipv6_addresses(Network *network);
|
||||
bool network_has_static_ipv6_configurations(Network *network);
|
||||
|
||||
CONFIG_PARSER_PROTOTYPE(config_parse_stacked_netdev);
|
||||
CONFIG_PARSER_PROTOTYPE(config_parse_tunnel);
|
||||
|
Loading…
x
Reference in New Issue
Block a user