diff options
| author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-02 02:51:02 +0000 |
|---|---|---|
| committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-02 02:51:02 +0000 |
| commit | 03d02a49d6eea5fbfde9e3a5a60b554a867e8d89 (patch) | |
| tree | eedfd75ca1d04ff4c409b91cfcfae1768ee7e0b0 /ext/socket/constants.c | |
| parent | 74aa15590284b95728857680bfe621972c28872e (diff) | |
| download | ruby-03d02a49d6eea5fbfde9e3a5a60b554a867e8d89.tar.gz ruby-03d02a49d6eea5fbfde9e3a5a60b554a867e8d89.tar.xz ruby-03d02a49d6eea5fbfde9e3a5a60b554a867e8d89.zip | |
* ext/socket/rubysocket.h (cmsg_type_arg): declared.
(Init_ancdata): ditto.
* ext/socket/init.c (Init_socket_init): call Init_ancdata.
* ext/socket/constants.c (cmsg_type_arg): defined.
* ext/socket/depend: add dependency for ancdata.o.
* ext/socket/mkconstants.rb: generate scm_optname_to_int.
more constants.
* ext/socket/extconf.rb: add ancdata.o.
* ext/socket/ancdata.c: new file. new method
BasicSocket#{sendmsg,sendmsg_nonblock,recvmsg,recvmsg_nonblock}
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/socket/constants.c')
| -rw-r--r-- | ext/socket/constants.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/ext/socket/constants.c b/ext/socket/constants.c index 3242cddd7..ea1e0f18f 100644 --- a/ext/socket/constants.c +++ b/ext/socket/constants.c @@ -92,6 +92,25 @@ shutdown_how_arg(VALUE how) return constant_arg(how, shutdown_how_to_int, "unknown shutdown argument"); } +int +cmsg_type_arg(int level, VALUE optname) +{ + switch (level) { + case SOL_SOCKET: + return constant_arg(optname, scm_optname_to_int, "unknown UNIX control message"); + case IPPROTO_IP: + return constant_arg(optname, ip_optname_to_int, "unknown IP control message"); + case IPPROTO_IPV6: + return constant_arg(optname, ipv6_optname_to_int, "unknown IPv6 control message"); + case IPPROTO_TCP: + return constant_arg(optname, tcp_optname_to_int, "unknown TCP control message"); + case IPPROTO_UDP: + return constant_arg(optname, udp_optname_to_int, "unknown UDP control message"); + default: + return NUM2INT(optname); + } +} + static void sock_define_const(const char *name, int value, VALUE mConst) { |
