]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: use DEFINE_STRING_TABLE_LOOKUP() macro for AddressFamilyBoolean
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 3 May 2019 04:46:07 +0000 (06:46 +0200)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 4 May 2019 14:46:02 +0000 (16:46 +0200)
src/network/networkd-network-gperf.gperf
src/network/networkd-util.c
src/network/networkd-util.h

index 653da83c9f791967c5bb33f22ea2e0504e31fafd..8232b069a848f9ccad7cdb605dd92a59fef4431a 100644 (file)
@@ -51,7 +51,7 @@ Network.Tunnel,                         config_parse_stacked_netdev,
 Network.VRF,                            config_parse_ifname,                             0,                             offsetof(Network, vrf_name)
 Network.DHCP,                           config_parse_dhcp,                               0,                             offsetof(Network, dhcp)
 Network.DHCPServer,                     config_parse_bool,                               0,                             offsetof(Network, dhcp_server)
-Network.LinkLocalAddressing,            config_parse_address_family_boolean,             0,                             offsetof(Network, link_local)
+Network.LinkLocalAddressing,            config_parse_link_local_address_family_boolean,  0,                             offsetof(Network, link_local)
 Network.IPv4LLRoute,                    config_parse_bool,                               0,                             offsetof(Network, ipv4ll_route)
 Network.IPv6Token,                      config_parse_ipv6token,                          0,                             offsetof(Network, ipv6_token)
 Network.LLDP,                           config_parse_lldp_mode,                          0,                             offsetof(Network, lldp_mode)
index d0994df32f8e913aab1b259ede2380c66ac9f049..d01de53f7be70a16407732818b9dd2161577b593 100644 (file)
@@ -8,46 +8,26 @@
 #include "string-util.h"
 #include "util.h"
 
-const char *address_family_boolean_to_string(AddressFamilyBoolean b) {
-        if (IN_SET(b, ADDRESS_FAMILY_YES, ADDRESS_FAMILY_NO))
-                return yes_no(b == ADDRESS_FAMILY_YES);
-
-        if (b == ADDRESS_FAMILY_IPV4)
-                return "ipv4";
-        if (b == ADDRESS_FAMILY_IPV6)
-                return "ipv6";
-        if (b == ADDRESS_FAMILY_FALLBACK)
-                return "fallback";
-        if (b == ADDRESS_FAMILY_FALLBACK)
-                return "ipv4-fallback";
-
-        return NULL;
-}
-
-AddressFamilyBoolean address_family_boolean_from_string(const char *s) {
-        int r;
-
-        /* Make this a true superset of a boolean */
-
-        r = parse_boolean(s);
-        if (r > 0)
-                return ADDRESS_FAMILY_YES;
-        if (r == 0)
-                return ADDRESS_FAMILY_NO;
-
-        if (streq(s, "ipv4"))
-                return ADDRESS_FAMILY_IPV4;
-        if (streq(s, "ipv6"))
-                return ADDRESS_FAMILY_IPV6;
-        if (streq(s, "fallback"))
-                return ADDRESS_FAMILY_FALLBACK;
-        if (streq(s, "ipv4-fallback"))
-                return ADDRESS_FAMILY_FALLBACK_IPV4;
-
-        return _ADDRESS_FAMILY_BOOLEAN_INVALID;
-}
-
-DEFINE_CONFIG_PARSE_ENUM(config_parse_address_family_boolean, address_family_boolean, AddressFamilyBoolean, "Failed to parse option");
+static const char * const address_family_boolean_table[_ADDRESS_FAMILY_BOOLEAN_MAX] = {
+        [ADDRESS_FAMILY_NO]            = "no",
+        [ADDRESS_FAMILY_YES]           = "yes",
+        [ADDRESS_FAMILY_IPV4]          = "ipv4",
+        [ADDRESS_FAMILY_IPV6]          = "ipv6",
+};
+
+static const char * const link_local_address_family_boolean_table[_ADDRESS_FAMILY_BOOLEAN_MAX] = {
+        [ADDRESS_FAMILY_NO]            = "no",
+        [ADDRESS_FAMILY_YES]           = "yes",
+        [ADDRESS_FAMILY_IPV4]          = "ipv4",
+        [ADDRESS_FAMILY_IPV6]          = "ipv6",
+        [ADDRESS_FAMILY_FALLBACK]      = "fallback",
+        [ADDRESS_FAMILY_FALLBACK_IPV4] = "ipv4-fallback",
+};
+
+DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(address_family_boolean, AddressFamilyBoolean, ADDRESS_FAMILY_YES);
+DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(link_local_address_family_boolean, AddressFamilyBoolean, ADDRESS_FAMILY_YES);
+DEFINE_CONFIG_PARSE_ENUM(config_parse_link_local_address_family_boolean, link_local_address_family_boolean,
+                         AddressFamilyBoolean, "Failed to parse option");
 
 int config_parse_address_family_boolean_with_kernel(
                 const char* unit,
index c04cc3bd4a11fccde865c4e239099d684975b0fb..aafbac7df63eb24b76f6b821be329cdd31dd3427 100644 (file)
@@ -23,11 +23,14 @@ typedef struct NetworkConfigSection {
         char filename[];
 } NetworkConfigSection;
 
-CONFIG_PARSER_PROTOTYPE(config_parse_address_family_boolean);
+CONFIG_PARSER_PROTOTYPE(config_parse_link_local_address_family_boolean);
 CONFIG_PARSER_PROTOTYPE(config_parse_address_family_boolean_with_kernel);
 
 const char *address_family_boolean_to_string(AddressFamilyBoolean b) _const_;
-AddressFamilyBoolean address_family_boolean_from_string(const char *s) _const_;
+AddressFamilyBoolean address_family_boolean_from_string(const char *s) _pure_;
+
+const char *link_local_address_family_boolean_to_string(AddressFamilyBoolean b) _const_;
+AddressFamilyBoolean link_local_address_family_boolean_from_string(const char *s) _pure_;
 
 int kernel_route_expiration_supported(void);