summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2018-01-02 00:15:03 +0900
committerSven Eden <yamakuzure@gmx.net>2018-05-30 07:49:48 +0200
commitdc1d894a2e665882a1a018dc7b22c3d43a0c86eb (patch)
tree1c150710932777c12ad1f1d78eb890f63de9d685 /src
parent348a0b7205e186f4a735c36027ab847138ed6571 (diff)
socket-util: introduce parse_socket_address_bind_ipv6_only_or_bool()
Diffstat (limited to 'src')
-rw-r--r--src/basic/socket-util.c12
-rw-r--r--src/basic/socket-util.h1
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_;