From bde8467a0de6fd2ec0a0738d9f3f0689ae5dd37f Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 11 Feb 2021 05:06:19 +0900 Subject: [PATCH] network: dhcp: use string table --- src/network/networkd-dhcp-common.c | 13 +++---------- src/network/networkd-util.c | 8 ++++++++ src/network/networkd-util.h | 2 ++ 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c index e50f4bb70f0..6bac7202001 100644 --- a/src/network/networkd-dhcp-common.c +++ b/src/network/networkd-dhcp-common.c @@ -283,16 +283,9 @@ int config_parse_dhcp( /* Previously, we had a slightly different enum here, * support its values for compatibility. */ - if (streq(rvalue, "none")) - s = ADDRESS_FAMILY_NO; - else if (streq(rvalue, "v4")) - s = ADDRESS_FAMILY_IPV4; - else if (streq(rvalue, "v6")) - s = ADDRESS_FAMILY_IPV6; - else if (streq(rvalue, "both")) - s = ADDRESS_FAMILY_YES; - else { - log_syntax(unit, LOG_WARNING, filename, line, 0, + s = dhcp_deprecated_address_family_from_string(rvalue); + if (s < 0) { + log_syntax(unit, LOG_WARNING, filename, line, s, "Failed to parse DHCP option, ignoring: %s", rvalue); return 0; } diff --git a/src/network/networkd-util.c b/src/network/networkd-util.c index 83b38b2b053..b41148d2c69 100644 --- a/src/network/networkd-util.c +++ b/src/network/networkd-util.c @@ -28,6 +28,13 @@ static const char* const duplicate_address_detection_address_family_table[_ADDRE [ADDRESS_FAMILY_IPV6] = "ipv6", }; +static const char* const dhcp_deprecated_address_family_table[_ADDRESS_FAMILY_MAX] = { + [ADDRESS_FAMILY_NO] = "none", + [ADDRESS_FAMILY_YES] = "both", + [ADDRESS_FAMILY_IPV4] = "v4", + [ADDRESS_FAMILY_IPV6] = "v6", +}; + static const char* const dhcp_lease_server_type_table[_SD_DHCP_LEASE_SERVER_TYPE_MAX] = { [SD_DHCP_LEASE_DNS] = "DNS servers", [SD_DHCP_LEASE_NTP] = "NTP servers", @@ -51,6 +58,7 @@ DEFINE_STRING_TABLE_LOOKUP(routing_policy_rule_address_family, AddressFamily); DEFINE_STRING_TABLE_LOOKUP(duplicate_address_detection_address_family, AddressFamily); DEFINE_CONFIG_PARSE_ENUM(config_parse_link_local_address_family, link_local_address_family, AddressFamily, "Failed to parse option"); +DEFINE_STRING_TABLE_LOOKUP_FROM_STRING(dhcp_deprecated_address_family, AddressFamily); DEFINE_STRING_TABLE_LOOKUP(dhcp_lease_server_type, sd_dhcp_lease_server_type); int config_parse_address_family_with_kernel( diff --git a/src/network/networkd-util.h b/src/network/networkd-util.h index cc5ee35558c..0cfb009890d 100644 --- a/src/network/networkd-util.h +++ b/src/network/networkd-util.h @@ -40,6 +40,8 @@ AddressFamily routing_policy_rule_address_family_from_string(const char *s) _pur const char *duplicate_address_detection_address_family_to_string(AddressFamily b) _const_; AddressFamily duplicate_address_detection_address_family_from_string(const char *s) _pure_; +AddressFamily dhcp_deprecated_address_family_from_string(const char *s) _pure_; + const char *dhcp_lease_server_type_to_string(sd_dhcp_lease_server_type t) _const_; sd_dhcp_lease_server_type dhcp_lease_server_type_from_string(const char *s) _pure_; -- 2.47.3