aboutgitcodebugslistschat
diff options
context:
space:
mode:
-rw-r--r--conf.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/conf.c b/conf.c
index 3cf9ed8..46fcd91 100644
--- a/conf.c
+++ b/conf.c
@@ -209,14 +209,24 @@ static void conf_ports(const struct ctx *c, char optname, const char *optarg,
}
- if (ifname == buf + 1) /* Interface without address */
+ if (ifname == buf + 1) { /* Interface without address */
addr = NULL;
- else if (inet_pton(AF_INET, buf, addr))
- af = AF_INET;
- else if (inet_pton(AF_INET6, buf, addr))
- af = AF_INET6;
- else
- goto bad;
+ } else {
+ p = buf;
+
+ /* Allow square brackets for IPv4 too for convenience */
+ if (*p == '[' && p[strlen(p) - 1] == ']') {
+ p[strlen(p) - 1] = '\0';
+ p++;
+ }
+
+ if (inet_pton(AF_INET, p, addr))
+ af = AF_INET;
+ else if (inet_pton(AF_INET6, p, addr))
+ af = AF_INET6;
+ else
+ goto bad;
+ }
} else {
spec = buf;