IPv6SendRA.RetransmitSec, config_parse_router_uint32_msec_usec, 0, offsetof(Network, router_retransmit_usec)
IPv6SendRA.Managed, config_parse_bool, 0, offsetof(Network, router_managed)
IPv6SendRA.OtherInformation, config_parse_bool, 0, offsetof(Network, router_other_information)
-IPv6SendRA.RouterPreference, config_parse_router_preference, 0, 0
+IPv6SendRA.RouterPreference, config_parse_router_preference, 0, offsetof(Network, router_preference)
IPv6SendRA.HopLimit, config_parse_uint8, 0, offsetof(Network, router_hop_limit)
IPv6SendRA.EmitDNS, config_parse_bool, 0, offsetof(Network, router_emit_dns)
IPv6SendRA.DNS, config_parse_radv_dns, 0, 0
void *data,
void *userdata) {
- Network *network = userdata;
+ uint8_t *preference = ASSERT_PTR(data);
- assert(filename);
- assert(section);
- assert(lvalue);
- assert(rvalue);
- assert(data);
-
- if (streq(rvalue, "high"))
- network->router_preference = SD_NDISC_PREFERENCE_HIGH;
- else if (STR_IN_SET(rvalue, "medium", "normal", "default"))
- network->router_preference = SD_NDISC_PREFERENCE_MEDIUM;
+ if (isempty(rvalue) || STR_IN_SET(rvalue, "medium", "normal", "default"))
+ *preference = SD_NDISC_PREFERENCE_MEDIUM;
+ else if (streq(rvalue, "high"))
+ *preference = SD_NDISC_PREFERENCE_HIGH;
else if (streq(rvalue, "low"))
- network->router_preference = SD_NDISC_PREFERENCE_LOW;
+ *preference = SD_NDISC_PREFERENCE_LOW;
else
- log_syntax(unit, LOG_WARNING, filename, line, 0,
- "Invalid router preference, ignoring assignment: %s", rvalue);
+ return log_syntax_parse_error(unit, filename, line, 0, lvalue, rvalue);
- return 0;
+ return 1;
}
int config_parse_router_home_agent_lifetime(