chiark / gitweb /
socket-util: introduce parse_socket_address_bind_ipv6_only_or_bool()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 1 Jan 2018 15:15:03 +0000 (00:15 +0900)
committerSven Eden <yamakuzure@gmx.net>
Wed, 30 May 2018 05:49:48 +0000 (07:49 +0200)
src/basic/socket-util.c
src/basic/socket-util.h

index ce14b038aaf78b676483be67954ecb772833d726..5969aa76129494754a12faef139105a2a0c52cbb 100644 (file)
@@ -826,6 +826,18 @@ static const char* const socket_address_bind_ipv6_only_table[_SOCKET_ADDRESS_BIN
 
 DEFINE_STRING_TABLE_LOOKUP(socket_address_bind_ipv6_only, SocketAddressBindIPv6Only);
 
+SocketAddressBindIPv6Only parse_socket_address_bind_ipv6_only_or_bool(const char *n) {
+        int r;
+
+        r = parse_boolean(n);
+        if (r > 0)
+                return SOCKET_ADDRESS_IPV6_ONLY;
+        if (r == 0)
+                return SOCKET_ADDRESS_BOTH;
+
+        return socket_address_bind_ipv6_only_from_string(n);
+}
+
 bool sockaddr_equal(const union sockaddr_union *a, const union sockaddr_union *b) {
         assert(a);
         assert(b);
index 9c9e2c61c0f5db4c334b0e307b4057c1d0375928..368e6a6dd0128298934c9100d450652bc0708523 100644 (file)
@@ -123,6 +123,7 @@ int getnameinfo_pretty(int fd, char **ret);
 
 const char* socket_address_bind_ipv6_only_to_string(SocketAddressBindIPv6Only b) _const_;
 SocketAddressBindIPv6Only socket_address_bind_ipv6_only_from_string(const char *s) _pure_;
+SocketAddressBindIPv6Only parse_socket_address_bind_ipv6_only_or_bool(const char *s);
 
 int netlink_family_to_string_alloc(int b, char **s);
 int netlink_family_from_string(const char *s) _pure_;