Message ID | 1391708052-11188-1-git-send-email-sd@queasysnail.net |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, Feb 6, 2014 at 9:34 AM, Sabrina Dubroca <sd@queasysnail.net> wrote: > net/core/netpoll.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/core/netpoll.c b/net/core/netpoll.c > index c03f3de..a664f78 100644 > --- a/net/core/netpoll.c > +++ b/net/core/netpoll.c > @@ -948,6 +948,7 @@ int netpoll_parse_options(struct netpoll *np, char *opt) > { > char *cur=opt, *delim; > int ipv6; > + bool ipversion_set = false; > Or initialize 'ipv6' to -1 and then check if it is -1? -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
2014-02-06, 12:34:10 -0800, Cong Wang wrote: > On Thu, Feb 6, 2014 at 9:34 AM, Sabrina Dubroca <sd@queasysnail.net> wrote: > > net/core/netpoll.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/net/core/netpoll.c b/net/core/netpoll.c > > index c03f3de..a664f78 100644 > > --- a/net/core/netpoll.c > > +++ b/net/core/netpoll.c > > @@ -948,6 +948,7 @@ int netpoll_parse_options(struct netpoll *np, char *opt) > > { > > char *cur=opt, *delim; > > int ipv6; > > + bool ipversion_set = false; > > > > Or initialize 'ipv6' to -1 and then check if it is -1? It's overwritten when we parse the remote address. And np->ipv6 is a bool, so we can't store it there either.
On Thu, Feb 6, 2014 at 12:58 PM, Sabrina Dubroca <sd@queasysnail.net> wrote: > 2014-02-06, 12:34:10 -0800, Cong Wang wrote: >> On Thu, Feb 6, 2014 at 9:34 AM, Sabrina Dubroca <sd@queasysnail.net> wrote: >> > net/core/netpoll.c | 4 +++- >> > 1 file changed, 3 insertions(+), 1 deletion(-) >> > >> > diff --git a/net/core/netpoll.c b/net/core/netpoll.c >> > index c03f3de..a664f78 100644 >> > --- a/net/core/netpoll.c >> > +++ b/net/core/netpoll.c >> > @@ -948,6 +948,7 @@ int netpoll_parse_options(struct netpoll *np, char *opt) >> > { >> > char *cur=opt, *delim; >> > int ipv6; >> > + bool ipversion_set = false; >> > >> >> Or initialize 'ipv6' to -1 and then check if it is -1? > > It's overwritten when we parse the remote address. And np->ipv6 is a > bool, so we can't store it there either. > Yeah, I misunderstood the problem. Your fix looks good. Acked-by: Cong Wang <cwang@twopensource.com> For net-next, I think we should change bool np->ipv6 to int np->ip_version, so that we can tell if it is set or not. Thanks! -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Sabrina Dubroca <sd@queasysnail.net> Date: Thu, 6 Feb 2014 18:34:12 +0100 > Currently, to make netconsole start over IPv6, the source address > needs to be specified. Without a source address, netpoll_parse_options > assumes we're setting up over IPv4 and the destination IPv6 address is > rejected. > > Check if the IP version has been forced by a source address before > checking for a version mismatch when parsing the destination address. > > Signed-off-by: Sabrina Dubroca <sd@queasysnail.net> Applied and queued up for -stable. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index c03f3de..a664f78 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -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;
Currently, to make netconsole start over IPv6, the source address needs to be specified. Without a source address, netpoll_parse_options assumes we're setting up over IPv4 and the destination IPv6 address is rejected. Check if the IP version has been forced by a source address before checking for a version mismatch when parsing the destination address. Signed-off-by: Sabrina Dubroca <sd@queasysnail.net> --- net/core/netpoll.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)