Project

General

Profile

Actions

Feature #17524

open

resolv: add some more characters in IPv6 link local zone id

Added by no6v (Nobuhiro IMAI) 11 months ago. Updated 8 months ago.

Status:
Assigned
Priority:
Normal
Target version:
-
[ruby-core:101992]

Description

According to RFC6874, IPv6 link local zone id is:

   ZoneID = 1*( unreserved / pct-encoded )

where unreserved in RFC3986 is as follow.

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

Actually, docker can create such an interface.

$ 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?

Actions

Also available in: Atom PDF