Project

General

Profile

Actions

Bug #8464

closed

IPAddr cannot parse link-local IPv6 address.

Added by aselder (Andrew Selder) over 11 years ago. Updated about 7 years ago.

Status:
Rejected
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

Updated by cedric.brancourt (Cedric Brancourt) over 11 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) over 11 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) over 11 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) about 7 years ago

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

Closing due to feedback timeout.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0