Project

General

Profile

Bug #8464

IPAddr cannot parse link-local IPv6 address.

Added by aselder (Andrew Selder) over 6 years ago. Updated almost 2 years ago.

Status:
Rejected
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.3.0]
Backport:
[ruby-core:55209]

Description

1.9.3p374 :001 > require 'ipaddr'
=> true
1.9.3p374 :002 > IPAddr.new("0:0:0:0:0:0:0:1%0")
ArgumentError: invalid address
from /Users/andrew/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/ipaddr.rb:559:in in6_addr'
from /Users/andrew/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/ipaddr.rb:496:in
initialize'
from (irb):2:in new'
from (irb):2
from /Users/andrew/.rvm/rubies/ruby-2.0.0-p195/bin/irb:16:in
'

Same behavior in Ruby 1.9.3 all patch levels

History

Updated by cedric.brancourt (Cedric Brancourt) about 6 years ago

Not sure this need a fix.
The %0 part of the example is the scope ( zone ) and should not be part of the address.

It is appended by operating system in the textual representation of the endpoint ( for interface identification ), and format depend on the operating system.

But it is not part of the address , see http://www.ietf.org/rfc/rfc4007.txt

This is the way I understand it. If I am right , this is not a bug.

Updated by knu (Akinori MUSHA) about 6 years ago

  • Category set to lib
  • Status changed from Open to Feedback
  • Assignee set to knu (Akinori MUSHA)

IPAddr currently does not support scope ID's.

Making IPAddr deal with scope ID's would mean a lot more than just ignoring it (starting with adding #scope_id).
If you are going to request such a feature, you'll have to investigate, for example, in what contexts (libraries/methods/commands) an IPv6 address with a scope ID is valid and accepted, if #to_s should include it or another method should be added for that, how it would affect the backward compatibility, etc.

On the other hand, you can use str.sub(/%.*/m, '') or str[/[^%]*/m] if you just want to drop the scope ID part.

Updated by drbrain (Eric Hodel) about 6 years ago

Thanks to the recently added Socket.getifaddrs we now have the ability to map scope names to interface ids for use in IPv6 multicast, for example.

Updated by knu (Akinori MUSHA) almost 2 years ago

  • Backport deleted (1.9.3: UNKNOWN, 2.0.0: UNKNOWN)
  • Status changed from Feedback to Rejected

Closing due to feedback timeout.

Also available in: Atom PDF