Bug #547
closedIPV6系の定数が未定義
Description
=begin
socketに、IPPROTO_IPV6やIPV6_JOIN_GROUP等のIPV6系の定数が未定義です。
何が未定義なのか列挙しようとしたのですが、参考にPython-2.5.2のソースを見たら、あまりにもたくさんあったので挫折しました……。
=end
Updated by matz (Yukihiro Matsumoto) over 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:36175] [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
Updated by matz (Yukihiro Matsumoto) over 16 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
=begin
Applied in changeset r19189.
=end
Updated by iwa (Motonori IWAMURO) over 16 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
Updated by matz (Yukihiro Matsumoto) over 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:36201] ソケット関連の定数がいろいろ未定義 (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
Updated by iwa (Motonori IWAMURO) over 16 years ago
=begin
岩室です。
反応が遅いですが……。¶
2008/09/08 18:40 Yukihiro Matsumoto matz@ruby-lang.org:
とりあえずTCP/IPV6関係で必要なものに絞り込んでいただけませんか。
えーっと、では週末あたりに調べるということで……。
ぶっちゃけ、どれがどのような役目なのかさっぱりなので、ネットワークまわりに詳しい方にコメントいただければ幸いです。¶
IWAMURO Motnori http://vmi.jp/
=end
Updated by iwa (Motonori IWAMURO) over 16 years ago
=begin
岩室です。
2008/09/11 3:39 Tanaka Akira akr@fsij.org:
RFC 3493 とか RFC 3542 ですかね。
上記のRFCを参考に、とりあえずミニマムな定義を入れてみました。
<net/if.h>とか<netinet/ip6.h>とか<netinet/icmp6.h>の定義は今のところ保留。
ICMPはIPv4のも入ってないのか……。¶
--
IWAMURO Motnori http://vmi.jp/
Attachment: mkconstants.rb.diff
=end