Issue #17524 has been updated by jaruga (Jun Aruga).


I just faced this issue where `cni-podman0` including `-` is used as string matching with `Resolv::IPv6::Regex_CompressedHexLinkLocal`.

```
$ ruby -rsocket -e 'p Socket.ip_address_list[8]'
#<Addrinfo: fe80::9856:24ff:fe1b:f759%cni-podman0>
```



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

* Author: no6v (Nobuhiro IMAI)
* Status: Assigned
* Priority: Normal
* Assignee: akr (Akira Tanaka)
----------------------------------------
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>