Bug #547

IPV6系の定数が未定義

Added by Motonori IWAMURO almost 7 years ago. Updated over 4 years ago.

[ruby-dev:36175]
Status:Closed
Priority:Normal
Assignee:-
ruby -v: Backport:

Description

=begin
socketに、IPPROTO_IPV6やIPV6_JOIN_GROUP等のIPV6系の定数が未定義です。

何が未定義なのか列挙しようとしたのですが、参考にPython-2.5.2のソースを見たら、あまりにもたくさんあったので挫折しました……。
=end

History

#1 Updated by Yukihiro Matsumoto almost 7 years ago

=begin
まつもと ゆきひろです

In message "Re: [Bug #547] IPV6系の定数が未定義"
on Sat, 6 Sep 2008 19:46:53 +0900, Motonori IWAMURO redmine@ruby-lang.org writes:

|socketに、IPPROTO_IPV6やIPV6_JOIN_GROUP等のIPV6系の定数が未定義です。
|
|何が未定義なのか列挙しようとしたのですが、参考にPython-2.5.2のソースを見たら、あまりにもたくさんあったので挫折しました……。

とりあえず岩室さんが必要だと思うのだけでも追加しますから、リ
ストしていただけませんか? Pythonからコピーしてきてもいいけ
ど。

=end

#2 Updated by Yukihiro Matsumoto almost 7 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r19189.
=end

#3 Updated by Motonori IWAMURO almost 7 years ago

=begin
岩室です。

2008/09/06 21:31 Yukihiro Matsumoto redmine@ruby-lang.org:

チケット #547 が更新されました。 (by Yukihiro Matsumoto)

ステータス OpenからClosedに変更
進捗 % 0から100に変更

close されたと思ったら、何時の間にか IPV6_* が追加されてますね。けど、IPPROTO_IPV6 等がないので十分じゃないのでした……。

すぐにリストを出さなかったのは、Python の Modules/socketmodule.c
を調べてたからなのですが、他にもいろいろと足りてなさそうなので、リストアップしてみました。(無視していいのも沢山ありそうですけど)

・単純に有無だけを判定っぽい定数群。IPPROTO_ICMPV6, IPPROTO_IPV6 は是非追加を。
AF_AAL5
AF_ASH
AF_ATMPVC
AF_ATMSVC
AF_BRIDGE
AF_DECnet
AF_ECONET
AF_IRDA
AF_KEY
AF_LLC
AF_NETBEUI
AF_NETROM
AF_PPPOX
AF_ROSE
AF_SECURITY
AF_WANPIPE
AF_X25
AI_NUMERICSERV
EAI_OVERFLOW
IPPROTO_AH
IPPROTO_DSTOPTS
IPPROTO_ESP
IPPROTO_FRAGMENT
IPPROTO_GRE
IPPROTO_HOPOPTS
IPPROTO_ICMPV6
IPPROTO_IPCOMP
IPPROTO_IPIP
IPPROTO_IPV4
IPPROTO_IPV6
IPPROTO_MOBILE
IPPROTO_NONE
IPPROTO_PIM
IPPROTO_ROUTING
IPPROTO_RSVP
IPPROTO_VRRP
MSG_BTAG
MSG_ETAG
SOL_NETROM
SOL_ROSE
SO_EXCLUSIVEADDRUSE
TCP_CORK
TCP_DEFER_ACCEPT
TCP_INFO
TCP_KEEPCNT
TCP_KEEPIDLE
TCP_KEEPINTVL
TCP_LINGER2
TCP_QUICKACK
TCP_SYNCNT
TCP_WINDOW_CLAMP

・shutdownパラメータ。0, 1, 2 固定とは限らない?
以下はPythonからの抜粋


/* shutdown() parameters */

#ifdef SHUT_RD
PyModule_AddIntConstant(m, "SHUT_RD", SHUT_RD);
#elif defined(SD_RECEIVE)
PyModule_AddIntConstant(m, "SHUT_RD", SD_RECEIVE);
#else
PyModule_AddIntConstant(m, "SHUT_RD", 0);
#endif
#ifdef SHUT_WR
PyModule_AddIntConstant(m, "SHUT_WR", SHUT_WR);
#elif defined(SD_SEND)
PyModule_AddIntConstant(m, "SHUT_WR", SD_SEND);
#else
PyModule_AddIntConstant(m, "SHUT_WR", 1);
#endif
#ifdef SHUT_RDWR
PyModule_AddIntConstant(m, "SHUT_RDWR", SHUT_RDWR);
#elif defined(SD_BOTH)
PyModule_AddIntConstant(m, "SHUT_RDWR", SD_BOTH);
#else
PyModule_AddIntConstant(m, "SHUT_RDWR", 2);
#endif


・SOMAXCONN。無くても定義されていた方がいい?
以下はPythonからの抜粋


/* Maximum number of connections for "listen" */

#ifdef SOMAXCONN
PyModule_AddIntConstant(m, "SOMAXCONN", SOMAXCONN);
#else
PyModule_AddIntConstant(m, "SOMAXCONN", 5); /* Common value */
#endif


・低レベルパケット操作。ポータビリティあり? 定数だけでなく、コードレベルでの対処も必要な模様。
参考: http://www.linux.or.jp/JM/html/LDP_man-pages/man7/packet.7.html
AF_PACKET
PF_PACKET
PACKET_BROADCAST
PACKET_FASTROUTE
PACKET_HOST
PACKET_LOOPBACK
PACKET_MULTICAST
PACKET_OTHERHOST
PACKET_OUTGOING

・BLUETOOTH用。定数だけでなく、コードレベルでの対処も必要な模様。ポータビリティは微妙?
AF_BLUETOOTH
BTPROTO_L2CAP
BTPROTO_RFCOMM
BTPROTO_SCO

・netlink。Linux固有っぽいし、無視していい?
参考: http://www.linux.or.jp/JM/html/LDP_man-pages/man7/netlink.7.html
AF_NETLINK
NETLINK_ARPD
NETLINK_DNRTMSG
NETLINK_FIREWALL
NETLINK_IP6_FW
NETLINK_NFLOG
NETLINK_ROUTE
NETLINK_ROUTE6
NETLINK_SKIP
NETLINK_TAPBASE
NETLINK_TCPDIAG
NETLINK_USERSOCK
NETLINK_W1
NETLINK_XFRM
--
IWAMURO Motnori http://vmi.jp/

=end

#4 Updated by Yukihiro Matsumoto almost 7 years ago

=begin
まつもと ゆきひろです

In message "Re: ソケット関連の定数がいろいろ未定義 (Re: Bug #547 IPV6系の定数が未定義)"
on Sun, 7 Sep 2008 23:56:54 +0900, "IWAMURO Motonori" deenheart+ruby@gmail.com writes:

|close されたと思ったら、何時の間にか IPV6_* が追加されてますね。けど、IPPROTO_IPV6 等がないので十分じゃないのでした……。
|
|すぐにリストを出さなかったのは、Python の Modules/socketmodule.c
|を調べてたからなのですが、他にもいろいろと足りてなさそうなので、リストアップしてみました。(無視していいのも沢山ありそうですけど)
|
|・単純に有無だけを判定っぽい定数群。IPPROTO_ICMPV6, IPPROTO_IPV6 は是非追加を。

それらは追加しましょう。コードレベルでの対処が必要なものは後
回しにします。あと、使うかどうかもわからないようなのも(オン
デマンドバグフィックス)。とりあえずTCP/IPV6関係で必要なもの
に絞り込んでいただけませんか。

=end

#5 Updated by Motonori IWAMURO almost 7 years ago

=begin
岩室です。

# 反応が遅いですが……。

2008/09/08 18:40 Yukihiro Matsumoto matz@ruby-lang.org:

とりあえずTCP/IPV6関係で必要なものに絞り込んでいただけませんか。

えーっと、では週末あたりに調べるということで……。

ぶっちゃけ、どれがどのような役目なのかさっぱりなので、ネットワークまわりに詳しい方にコメントいただければ幸いです。
--
IWAMURO Motnori http://vmi.jp/

=end

#6 Updated by Motonori IWAMURO almost 7 years ago

=begin
岩室です。

2008/09/11 3:39 Tanaka Akira akr@fsij.org:

RFC 3493 とか RFC 3542 ですかね。

上記のRFCを参考に、とりあえずミニマムな定義を入れてみました。
とかとかの定義は今のところ保留。

# ICMPはIPv4のも入ってないのか……。
--
IWAMURO Motnori http://vmi.jp/

Attachment: mkconstants.rb.diff
=end

Also available in: Atom PDF