]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: dhcp: use string table
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 10 Feb 2021 20:06:19 +0000 (05:06 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 11 Feb 2021 16:19:18 +0000 (01:19 +0900)
src/network/networkd-dhcp-common.c
src/network/networkd-util.c
src/network/networkd-util.h

index e50f4bb70f01542174db04fc9c24816287607cfd..6bac720200103d7cfbd29c0ccd9a51f5f970295d 100644 (file)
@@ -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;
                 }
index 83b38b2b0538d75fd9c1e92f2b2a03473d4d07d3..b41148d2c69335f78cc1e483d72ac0af94c922cf 100644 (file)
@@ -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(
index cc5ee35558c554de5c523fe71ba12b502a84e5fe..0cfb009890d51116374959f81c1c7fcf2e5dca16 100644 (file)
@@ -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_;