From: IWAMURO Motonori Date: 2008-09-07T23:56:54+09:00 Subject: [ruby-dev:36201] ソケット関連の定数がいろいろ未定義 (Re: [Bug #547](Closed) IPV6系の定数が未定義) 岩室です。 2008/09/06 21:31 Yukihiro Matsumoto : > チケット #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