* [ruby-dev:47149] [ruby-trunk - Feature #8047][Open] IPAddr makes host address with netmask
@ 2013-03-08 5:48 nori_nori (Tadanori Kojima)
2013-06-02 6:25 ` [ruby-dev:47391] [ruby-trunk - Feature #8047][Assigned] " zzak (Zachary Scott)
2014-01-30 6:16 ` [ruby-dev:47933] [ruby-trunk - Feature #8047] " shibata.hiroshi
0 siblings, 2 replies; 3+ messages in thread
From: nori_nori (Tadanori Kojima) @ 2013-03-08 5:48 UTC (permalink / raw
To: ruby developers list
Issue #8047 has been reported by nori_nori (Tadanori Kojima).
----------------------------------------
Feature #8047: IPAddr makes host address with netmask
https://bugs.ruby-lang.org/issues/8047
Author: nori_nori (Tadanori Kojima)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
現状のIPAddrはネットマスク付きの場合、
IPAddr.new("192.168.1.99/24")
=> #<IPAddr: IPv4:192.168.1.0/255.255.255.0>
のようにネットワークアドレスとして生成されますが、
マスク付きの場合にマスクされないホストとして生成する
モードを提案します
(=ホストのIPアドレスとどのネットワークかを把握したい)
ex.
IPAddr.new("192.168.1.99/24")
=> #<IPAddr: IPv4:192.168.1.99/255.255.255.0>
newの第二引数にfamilyが指定されていれば32bitマスクのホストアドレスなので、
引数がAF_INET/INET6または:Hostならばホストとして生成させます
- IPAddr.new(int, family)
IPAddr.new(3232235875, Socket::AF_INET)
=> #<IPAddr: IPv4:192.168.1.99/255.255.255.255>
- IPAddr.new(ip, :Host)
IPAddr.new("192.168.1.99/24", :Host)
=> #<IPAddr: IPv4:192.168.1.99/255.255.255.0>
引数の構成とシンボル名がイマイチですが既存との両立ということで
以下がパッチになります
--- ipaddr.rb.orig 2013-03-08 13:59:07.000000000 +0900
+++ ipaddr.rb 2013-03-08 14:35:06.000000000 +0900
@@ -440,7 +440,7 @@
else
raise AddressFamilyError, "unsupported address family"
end
- @addr = ((@addr >> masklen) << masklen)
+ @addr = ((@addr >> masklen) << masklen) if @host_mode == false
return self
end
@@ -477,6 +477,14 @@
raise AddressFamilyError, "unsupported address family: #{family}"
end
end
+
+ if family == :Host
+ @host_mode = true
+ family = Socket::AF_UNSPEC
+ else
+ @host_mode = false
+ end
+
prefix, prefixlen = addr.split('/')
if prefix =~ /^\[(.*)\]$/i
prefix = $1
--
http://bugs.ruby-lang.org/
^ permalink raw reply [flat|nested] 3+ messages in thread
* [ruby-dev:47391] [ruby-trunk - Feature #8047][Assigned] IPAddr makes host address with netmask
2013-03-08 5:48 [ruby-dev:47149] [ruby-trunk - Feature #8047][Open] IPAddr makes host address with netmask nori_nori (Tadanori Kojima)
@ 2013-06-02 6:25 ` zzak (Zachary Scott)
2014-01-30 6:16 ` [ruby-dev:47933] [ruby-trunk - Feature #8047] " shibata.hiroshi
1 sibling, 0 replies; 3+ messages in thread
From: zzak (Zachary Scott) @ 2013-06-02 6:25 UTC (permalink / raw
To: ruby developers list
Issue #8047 has been updated by zzak (Zachary Scott).
Category set to lib
Status changed from Open to Assigned
Assignee set to knu (Akinori MUSHA)
Target version set to current: 2.1.0
----------------------------------------
Feature #8047: IPAddr makes host address with netmask
https://bugs.ruby-lang.org/issues/8047#change-39624
Author: nori_nori (Tadanori Kojima)
Status: Assigned
Priority: Normal
Assignee: knu (Akinori MUSHA)
Category: lib
Target version: current: 2.1.0
現状のIPAddrはネットマスク付きの場合、
IPAddr.new("192.168.1.99/24")
=> #<IPAddr: IPv4:192.168.1.0/255.255.255.0>
のようにネットワークアドレスとして生成されますが、
マスク付きの場合にマスクされないホストとして生成する
モードを提案します
(=ホストのIPアドレスとどのネットワークかを把握したい)
ex.
IPAddr.new("192.168.1.99/24")
=> #<IPAddr: IPv4:192.168.1.99/255.255.255.0>
newの第二引数にfamilyが指定されていれば32bitマスクのホストアドレスなので、
引数がAF_INET/INET6または:Hostならばホストとして生成させます
- IPAddr.new(int, family)
IPAddr.new(3232235875, Socket::AF_INET)
=> #<IPAddr: IPv4:192.168.1.99/255.255.255.255>
- IPAddr.new(ip, :Host)
IPAddr.new("192.168.1.99/24", :Host)
=> #<IPAddr: IPv4:192.168.1.99/255.255.255.0>
引数の構成とシンボル名がイマイチですが既存との両立ということで
以下がパッチになります
--- ipaddr.rb.orig 2013-03-08 13:59:07.000000000 +0900
+++ ipaddr.rb 2013-03-08 14:35:06.000000000 +0900
@@ -440,7 +440,7 @@
else
raise AddressFamilyError, "unsupported address family"
end
- @addr = ((@addr >> masklen) << masklen)
+ @addr = ((@addr >> masklen) << masklen) if @host_mode == false
return self
end
@@ -477,6 +477,14 @@
raise AddressFamilyError, "unsupported address family: #{family}"
end
end
+
+ if family == :Host
+ @host_mode = true
+ family = Socket::AF_UNSPEC
+ else
+ @host_mode = false
+ end
+
prefix, prefixlen = addr.split('/')
if prefix =~ /^\[(.*)\]$/i
prefix = $1
--
http://bugs.ruby-lang.org/
^ permalink raw reply [flat|nested] 3+ messages in thread
* [ruby-dev:47933] [ruby-trunk - Feature #8047] IPAddr makes host address with netmask
2013-03-08 5:48 [ruby-dev:47149] [ruby-trunk - Feature #8047][Open] IPAddr makes host address with netmask nori_nori (Tadanori Kojima)
2013-06-02 6:25 ` [ruby-dev:47391] [ruby-trunk - Feature #8047][Assigned] " zzak (Zachary Scott)
@ 2014-01-30 6:16 ` shibata.hiroshi
1 sibling, 0 replies; 3+ messages in thread
From: shibata.hiroshi @ 2014-01-30 6:16 UTC (permalink / raw
To: ruby-dev
Issue #8047 has been updated by Hiroshi SHIBATA.
Target version changed from 2.1.0 to current: 2.2.0
----------------------------------------
Feature #8047: IPAddr makes host address with netmask
https://bugs.ruby-lang.org/issues/8047#change-44767
* Author: Tadanori Kojima
* Status: Assigned
* Priority: Normal
* Assignee: Akinori MUSHA
* Category: lib
* Target version: current: 2.2.0
----------------------------------------
現状のIPAddrはネットマスク付きの場合、
IPAddr.new("192.168.1.99/24")
=> #<IPAddr: IPv4:192.168.1.0/255.255.255.0>
のようにネットワークアドレスとして生成されますが、
マスク付きの場合にマスクされないホストとして生成する
モードを提案します
(=ホストのIPアドレスとどのネットワークかを把握したい)
ex.
IPAddr.new("192.168.1.99/24")
=> #<IPAddr: IPv4:192.168.1.99/255.255.255.0>
newの第二引数にfamilyが指定されていれば32bitマスクのホストアドレスなので、
引数がAF_INET/INET6または:Hostならばホストとして生成させます
- IPAddr.new(int, family)
IPAddr.new(3232235875, Socket::AF_INET)
=> #<IPAddr: IPv4:192.168.1.99/255.255.255.255>
- IPAddr.new(ip, :Host)
IPAddr.new("192.168.1.99/24", :Host)
=> #<IPAddr: IPv4:192.168.1.99/255.255.255.0>
引数の構成とシンボル名がイマイチですが既存との両立ということで
以下がパッチになります
--- ipaddr.rb.orig 2013-03-08 13:59:07.000000000 +0900
+++ ipaddr.rb 2013-03-08 14:35:06.000000000 +0900
@@ -440,7 +440,7 @@
else
raise AddressFamilyError, "unsupported address family"
end
- @addr = ((@addr >> masklen) << masklen)
+ @addr = ((@addr >> masklen) << masklen) if @host_mode == false
return self
end
@@ -477,6 +477,14 @@
raise AddressFamilyError, "unsupported address family: #{family}"
end
end
+
+ if family == :Host
+ @host_mode = true
+ family = Socket::AF_UNSPEC
+ else
+ @host_mode = false
+ end
+
prefix, prefixlen = addr.split('/')
if prefix =~ /^\[(.*)\]$/i
prefix = $1
--
http://bugs.ruby-lang.org/
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-01-30 6:34 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-08 5:48 [ruby-dev:47149] [ruby-trunk - Feature #8047][Open] IPAddr makes host address with netmask nori_nori (Tadanori Kojima)
2013-06-02 6:25 ` [ruby-dev:47391] [ruby-trunk - Feature #8047][Assigned] " zzak (Zachary Scott)
2014-01-30 6:16 ` [ruby-dev:47933] [ruby-trunk - Feature #8047] " shibata.hiroshi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).