From: Yu Watanabe Date: Fri, 3 May 2019 04:46:07 +0000 (+0200) Subject: network: use DEFINE_STRING_TABLE_LOOKUP() macro for AddressFamilyBoolean X-Git-Tag: v243-rc1~488^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e800fd24a15ea4389081e1f844d1c3f6a9d19aa4;p=thirdparty%2Fsystemd.git network: use DEFINE_STRING_TABLE_LOOKUP() macro for AddressFamilyBoolean --- diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf index 653da83c9f7..8232b069a84 100644 --- a/src/network/networkd-network-gperf.gperf +++ b/src/network/networkd-network-gperf.gperf @@ -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) diff --git a/src/network/networkd-util.c b/src/network/networkd-util.c index d0994df32f8..d01de53f7be 100644 --- a/src/network/networkd-util.c +++ b/src/network/networkd-util.c @@ -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, diff --git a/src/network/networkd-util.h b/src/network/networkd-util.h index c04cc3bd4a1..aafbac7df63 100644 --- a/src/network/networkd-util.h +++ b/src/network/networkd-util.h @@ -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);