<div dir="ltr">I'm in favor of mandatory brackets for IPv6, but would this do ?<br>- first char is [: it's IPv6<br>- if you find a letter or colon: it's IPv6<br>- if you get a dot or more than 3 numbers in a row: it's IPv4<br><div>and a colon announces a port if:</div><div>- it comes right after a ']' in ipv6</div><div>- it comes after a number in IPv4</div><div>Once set on a version, error as soon as something is amiss.<br><br>I'd refuse IPv6 with port without brackets is it will get confusing ("::1:8080" is clear, but what about "::1:80"?)</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div>-- <br></div>Guillaume Quintard<br></div></div></div>
<br><div class="gmail_quote">On Wed, Oct 28, 2015 at 10:32 AM, Tollef Fog Heen <span dir="ltr"><<a href="mailto:tfheen@fastly.com" target="_blank">tfheen@fastly.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">2015-10-28 9:58 GMT+01:00 Poul-Henning Kamp <<a href="mailto:phk@phk.freebsd.dk">phk@phk.freebsd.dk</a>>:<br>
> --------<br>
> In message <CAJV_h0axHvroOtMPM83q=<a href="mailto:dCFHBtDL_XMzmGLu0q8mwWnCbSEZw@mail.gmail.com">dCFHBtDL_XMzmGLu0q8mwWnCbSEZw@mail.gmail.com</a>><br>
> , Federico Schwindt writes:<br>
><br>
>>While moving from 4.0.x to 4.1 I noticed that std.ip(..., "::1") doesn't<br>
>>work anymore.<br>
><br>
> I agree this is very far from optimal, but adding special-casing<br>
> IPv6 address by IPv6 address is certainly *not* the way forward.<br>
><br>
> The real question is, what does "::1:8080" mean ?<br>
<br>
</span>It's the IPv6 address 0:0:0:0:0:0:1:8080. I don't see how it could<br>
mean anything else.<br>
<span class=""><br>
> Please propose the exact algorithm you prose for turning strings<br>
> into IP numbers, and bear in mind that we need to be able to<br>
> include port numbers.<br>
<br>
</span>I'm not Federico, and this is not an exact algorithm, but:<br>
<br>
If string contains four dots and 0 or 1 :-s → parse as v4 (with or<br>
without port depending on presence of :)<br>
If string contains four dots and more than 1 and no []: → parse as v4<br>
mapped ipv6 (port is empty)<br>
If string contains four dots and more than 1 and []: → parse as v4<br>
mapped ipv6 with port<br>
If string contains :: and no [] → parse as v6 (port is empty)<br>
If string contains 7 :s and no [], parse as v6 (port is empty).<br>
If string contains :: and [] → parse as v6 with port<br>
If string contains 7 :s and [], parse as v6 with port<br>
<br>
Yes, this means you can't use 127.1 and similar as valid IPs. Don't do<br>
that, then.<br>
<br>
IMO, etc.<br>
<span class="HOEnZb"><font color="#888888">--<br>
Tollef Fog Heen | Engineer<br>
<a href="http://fastly.com" rel="noreferrer" target="_blank">fastly.com</a> | @fastly | Linkedin<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
varnish-dev mailing list<br>
<a href="mailto:varnish-dev@varnish-cache.org">varnish-dev@varnish-cache.org</a><br>
<a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev" rel="noreferrer" target="_blank">https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev</a></div></div></blockquote></div><br></div>