diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-09 14:23:53 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-09 14:23:53 +0000 |
commit | 810dd43a207e74141f450f30bd239185ce49df2d (patch) | |
tree | 448efdd653d2dba25430b6e7c1302125e311138f /ext/socket/constants.c | |
parent | 2dd3fa9f3e222866e0c3577a3e447509cc40a647 (diff) | |
download | ruby-810dd43a207e74141f450f30bd239185ce49df2d.tar.gz |
* ext/socket/constants.c (level_arg): use unknown_level_to_int for
non internet protocol.
(optname_arg): use only so_optname_to_int for non internet protocol.
(cmsg_type_arg): use only scm_optname_to_int for non internet
protocol.
* ext/socket/mkconstants.rb: generate unknown_level_to_int.
rename iplevel_to_int to ip_level_to_int.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22186 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/socket/constants.c')
-rw-r--r-- | ext/socket/constants.c | 93 |
1 files changed, 59 insertions, 34 deletions
diff --git a/ext/socket/constants.c b/ext/socket/constants.c index aaedfa1962..f0e210246d 100644 --- a/ext/socket/constants.c +++ b/ext/socket/constants.c @@ -61,58 +61,83 @@ int level_arg(int family, VALUE level) { /* convert SOL_SOCKET, IPPROTO_TCP, etc. */ - return constant_arg(level, iplevel_to_int, "unknown protocol level"); + if (IS_IP_FAMILY(family)) { + return constant_arg(level, ip_level_to_int, "unknown protocol level"); + } + else { + return constant_arg(level, unknown_level_to_int, "unknown protocol level"); + } } int optname_arg(int family, int level, VALUE optname) { - switch (level) { - case SOL_SOCKET: - return constant_arg(optname, so_optname_to_int, "unknown socket level option name"); - case IPPROTO_IP: - return constant_arg(optname, ip_optname_to_int, "unknown IP level option name"); + if (IS_IP_FAMILY(family)) { + switch (level) { + case SOL_SOCKET: + return constant_arg(optname, so_optname_to_int, "unknown socket level option name"); + case IPPROTO_IP: + return constant_arg(optname, ip_optname_to_int, "unknown IP level option name"); #ifdef IPPROTO_IPV6 - case IPPROTO_IPV6: - return constant_arg(optname, ipv6_optname_to_int, "unknown IPv6 level option name"); + case IPPROTO_IPV6: + return constant_arg(optname, ipv6_optname_to_int, "unknown IPv6 level option name"); #endif - case IPPROTO_TCP: - return constant_arg(optname, tcp_optname_to_int, "unknown TCP level option name"); - case IPPROTO_UDP: - return constant_arg(optname, udp_optname_to_int, "unknown UDP level option name"); - default: - return NUM2INT(optname); + case IPPROTO_TCP: + return constant_arg(optname, tcp_optname_to_int, "unknown TCP level option name"); + case IPPROTO_UDP: + return constant_arg(optname, udp_optname_to_int, "unknown UDP level option name"); + default: + return NUM2INT(optname); + } + } + else { + switch (level) { + case SOL_SOCKET: + return constant_arg(optname, so_optname_to_int, "unknown socket level option name"); + default: + return NUM2INT(optname); + } } -} - -int -shutdown_how_arg(VALUE how) -{ - /* convert SHUT_RD, SHUT_WR, SHUT_RDWR. */ - return constant_arg(how, shutdown_how_to_int, "unknown shutdown argument"); } int cmsg_type_arg(int family, int level, VALUE type) { - switch (level) { - case SOL_SOCKET: - return constant_arg(type, scm_optname_to_int, "unknown UNIX control message"); - case IPPROTO_IP: - return constant_arg(type, ip_optname_to_int, "unknown IP control message"); + if (IS_IP_FAMILY(family)) { + switch (level) { + case SOL_SOCKET: + return constant_arg(type, scm_optname_to_int, "unknown UNIX control message"); + case IPPROTO_IP: + return constant_arg(type, ip_optname_to_int, "unknown IP control message"); #ifdef INET6 - case IPPROTO_IPV6: - return constant_arg(type, ipv6_optname_to_int, "unknown IPv6 control message"); + case IPPROTO_IPV6: + return constant_arg(type, ipv6_optname_to_int, "unknown IPv6 control message"); #endif - case IPPROTO_TCP: - return constant_arg(type, tcp_optname_to_int, "unknown TCP control message"); - case IPPROTO_UDP: - return constant_arg(type, udp_optname_to_int, "unknown UDP control message"); - default: - return NUM2INT(type); + case IPPROTO_TCP: + return constant_arg(type, tcp_optname_to_int, "unknown TCP control message"); + case IPPROTO_UDP: + return constant_arg(type, udp_optname_to_int, "unknown UDP control message"); + default: + return NUM2INT(type); + } + } + else { + switch (level) { + case SOL_SOCKET: + return constant_arg(type, scm_optname_to_int, "unknown UNIX control message"); + default: + return NUM2INT(type); + } } } +int +shutdown_how_arg(VALUE how) +{ + /* convert SHUT_RD, SHUT_WR, SHUT_RDWR. */ + return constant_arg(how, shutdown_how_to_int, "unknown shutdown argument"); +} + static void sock_define_const(const char *name, int value, VALUE mConst) { |