if (network->dhcp_use_gateway < 0)
network->dhcp_use_gateway = network->dhcp_use_routes;
+ if (network->ignore_carrier_loss < 0)
+ network->ignore_carrier_loss = network->configure_without_carrier;
+
if (network->dhcp_critical >= 0) {
if (network->keep_configuration >= 0)
log_warning("%s: Both KeepConfiguration= and deprecated CriticalConnection= are set. "
int network_load_one(Manager *manager, OrderedHashmap **networks, const char *filename) {
_cleanup_free_ char *fname = NULL, *name = NULL;
_cleanup_(network_unrefp) Network *network = NULL;
+ _cleanup_strv_free_ char **dropins = NULL;
_cleanup_fclose_ FILE *file = NULL;
const char *dropin_dirname;
char *d;
.dhcp6_use_ntp = true,
.dhcp6_use_dns = true,
+ .dhcp6_pd_assign_prefix = true,
+
.dhcp_server_emit_dns = true,
.dhcp_server_emit_ntp = true,
.dhcp_server_emit_sip = true,
.dhcp_server_emit_router = true,
.dhcp_server_emit_timezone = true,
+ .router_prefix_subnet_id = -1,
.router_emit_dns = true,
.router_emit_domains = true,
.ipv6_accept_ra_route_table_set = false,
.ipv6_accept_ra_start_dhcp6_client = true,
+ .configure_without_carrier = false,
+ .ignore_carrier_loss = -1,
.keep_configuration = _KEEP_CONFIGURATION_INVALID,
.ipv6_address_gen_mode = _LINK_IPV6_ADDRESS_GEN_MODE_INVALID,
.can_triple_sampling = -1,
"TokenBucketFilter\0"
"TrivialLinkEqualizer\0",
config_item_perf_lookup, network_network_gperf_lookup,
- CONFIG_PARSE_WARN, network);
+ CONFIG_PARSE_WARN, network, &dropins);
if (r < 0)
return r;
network->filename);
struct stat stats;
- if (stat(filename, &stats) < 0)
- return -errno;
- network->timestamp = timespec_load(&stats.st_mtim);
+ if (stat(filename, &stats) >= 0)
+ network->timestamp = timespec_load(&stats.st_mtim);
+
+ char **f;
+ STRV_FOREACH(f, dropins) {
+ usec_t t;
+
+ if (stat(*f, &stats) < 0) {
+ network->timestamp = 0;
+ break;
+ }
+
+ t = timespec_load(&stats.st_mtim);
+ if (t > network->timestamp)
+ network->timestamp = t;
+ }
if (network_verify(network) < 0)
/* Ignore .network files that do not match the conditions. */
free(network->dhcp_server_dns);
free(network->dhcp_server_ntp);
free(network->dhcp_server_sip);
+ free(network->dhcp_server_pop3);
+ free(network->dhcp_server_smtp);
+ free(network->dhcp_server_lpr);
set_free_free(network->dnssec_negative_trust_anchors);
ordered_hashmap_free(network->dhcp_server_send_options);
ordered_hashmap_free(network->dhcp_server_send_vendor_options);
ordered_hashmap_free(network->ipv6_tokens);
+ ordered_hashmap_free(network->dhcp6_client_send_options);
+ ordered_hashmap_free(network->dhcp6_client_send_vendor_options);
return mfree(network);
}