Issue #17524 has been reported by no6v (Nobuhiro IMAI).

----------------------------------------
Feature #17524: resolv: add some more characters in IPv6 link local zone id
https://bugs.ruby-lang.org/issues/17524

* Author: no6v (Nobuhiro IMAI)
* Status: Open
* Priority: Normal
----------------------------------------
According to [RFC6874](https://tools.ietf.org/html/rfc6874#section-2), IPv6 link local zone id is:

```
   ZoneID = 1*( unreserved / pct-encoded )
```

where `unreserved` in [RFC3986](https://tools.ietf.org/html/rfc3986#section-2.3) is as follow.

```
   unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"
```

Actually, `docker` can create such an interface.

```sh
$ docker network create --ipv6 --subnet fe80::/64 --opt com.docker.network.bridge.name=ruby_3.0.0-1 ruby
$ ruby -rsocket -e 'p Socket.ip_address_list.last'
#<Addrinfo: fe80::1%ruby_3.0.0-1>
```

This makes `TestResolvAddr#test_valid_socket_ip_address_list` failure.
Supporting a `pct-encoded` may be overwork, but adding the all of `unreserved` to

* `Resolv::IPv6::Regex_8HexLinkLocal` and
* `Resolv::IPv6::Regex_CompressedHexLinkLocal`

sounds reasonable for me. What do you think?



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>