diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2018-01-02 00:15:03 +0900 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2018-05-30 07:49:48 +0200 |
commit | dc1d894a2e665882a1a018dc7b22c3d43a0c86eb (patch) | |
tree | 1c150710932777c12ad1f1d78eb890f63de9d685 /src | |
parent | 348a0b7205e186f4a735c36027ab847138ed6571 (diff) |
socket-util: introduce parse_socket_address_bind_ipv6_only_or_bool()
Diffstat (limited to 'src')
-rw-r--r-- | src/basic/socket-util.c | 12 | ||||
-rw-r--r-- | src/basic/socket-util.h | 1 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index ce14b038a..5969aa761 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -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); diff --git a/src/basic/socket-util.h b/src/basic/socket-util.h index 9c9e2c61c..368e6a6dd 100644 --- a/src/basic/socket-util.h +++ b/src/basic/socket-util.h @@ -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_; |