|
@@ -948,6 +948,7 @@ int netpoll_parse_options(struct netpoll *np, char *opt)
|
|
|
{
|
|
|
char *cur=opt, *delim;
|
|
|
int ipv6;
|
|
|
+ bool ipversion_set = false;
|
|
|
|
|
|
if (*cur != '@') {
|
|
|
if ((delim = strchr(cur, '@')) == NULL)
|
|
@@ -960,6 +961,7 @@ int netpoll_parse_options(struct netpoll *np, char *opt)
|
|
|
cur++;
|
|
|
|
|
|
if (*cur != '/') {
|
|
|
+ ipversion_set = true;
|
|
|
if ((delim = strchr(cur, '/')) == NULL)
|
|
|
goto parse_failed;
|
|
|
*delim = 0;
|
|
@@ -1002,7 +1004,7 @@ int netpoll_parse_options(struct netpoll *np, char *opt)
|
|
|
ipv6 = netpoll_parse_ip_addr(cur, &np->remote_ip);
|
|
|
if (ipv6 < 0)
|
|
|
goto parse_failed;
|
|
|
- else if (np->ipv6 != (bool)ipv6)
|
|
|
+ else if (ipversion_set && np->ipv6 != (bool)ipv6)
|
|
|
goto parse_failed;
|
|
|
else
|
|
|
np->ipv6 = (bool)ipv6;
|