root/ext/net/netlib.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. netlib_sockaddr_name545
  2. netlib_sockaddr_family546
  3. netlib_sockaddr_name547
  4. netlib_sockaddr_family548
  5. netlib_sockaddr_name549
  6. netlib_sockaddr_family550
  7. netlib_sockaddr_addr551
  8. netlib_sockaddr_port552
  9. netlib_sockaddr_name553
  10. netlib_sockaddr_family554
  11. netlib_sockaddr_addr555
  12. netlib_sockaddr_port556
  13. netlib_make_socket
  14. netlib_socket_address
  15. netlib_socket_status
  16. netlib_socket_fd
  17. netlib_socket_input_port
  18. netlib_socket_output_port
  19. netlib_socket_shutdown
  20. netlib_socket_close
  21. netlib_socket_bind
  22. netlib_socket_listen
  23. netlib_socket_accept
  24. netlib_socket_connect
  25. netlib_socket_getsockname
  26. netlib_socket_getpeername
  27. netlib_socket_send
  28. netlib_socket_sendto
  29. netlib_socket_recv
  30. netlib_socket_recvfrom
  31. netlib_socket_setsockopt
  32. netlib_socket_getsockopt
  33. netlib_sys_gethostbyname
  34. netlib_sys_gethostbyaddr
  35. netlib_sys_getprotobyname
  36. netlib_sys_getprotobynumber
  37. netlib_sys_getservbyname
  38. netlib_sys_getservbyport
  39. netlib_sys_ntohl
  40. netlib_sys_ntohs
  41. netlib_sys_htonl
  42. netlib_sys_htons
  43. Scm_SysAddrinfoClass_flags_GET
  44. Scm_SysAddrinfoClass_flags_SET
  45. Scm_SysAddrinfoClass_family_GET
  46. Scm_SysAddrinfoClass_family_SET
  47. Scm_SysAddrinfoClass_socktype_GET
  48. Scm_SysAddrinfoClass_socktype_SET
  49. Scm_SysAddrinfoClass_protocol_GET
  50. Scm_SysAddrinfoClass_protocol_SET
  51. Scm_SysAddrinfoClass_addrlen_GET
  52. Scm_SysAddrinfoClass_addrlen_SET
  53. Scm_SysAddrinfoClass_canonname_GET
  54. Scm_SysAddrinfoClass_canonname_SET
  55. Scm_SysAddrinfoClass_addr_GET
  56. Scm_SysAddrinfoClass_addr_SET
  57. netlib_sys_getaddrinfo
  58. netlib_sys_getnameinfo
  59. Scm_Init_netlib

   1 /* Generated by genstub.  Do not edit. */
   2 #include <gauche.h>
   3 #if defined(__CYGWIN__) || defined(__MINGW32__)
   4 #define SCM_CGEN_CONST /*empty*/
   5 #else
   6 #define SCM_CGEN_CONST const
   7 #endif
   8 #include "gauche/net.h"
   9 #include <gauche/class.h>
  10 
  11 SCM_DEFINE_GENERIC(Scm_GenericSockAddrName, NULL, NULL);
  12 
  13 SCM_DEFINE_GENERIC(Scm_GenericSockAddrFamily, NULL, NULL);
  14 
  15 SCM_DEFINE_GENERIC(Scm_GenericSockAddrAddr, NULL, NULL);
  16 
  17 SCM_DEFINE_GENERIC(Scm_GenericSockAddrPort, NULL, NULL);
  18 
  19 static SCM_DEFINE_STRING_CONST(sym_unix__NAME, "unix", 4, 4);
  20 static ScmObj sym_unix = SCM_UNBOUND;
  21 static SCM_DEFINE_STRING_CONST(sym_inet__NAME, "inet", 4, 4);
  22 static ScmObj sym_inet = SCM_UNBOUND;
  23 static SCM_DEFINE_STRING_CONST(sym_unknown__NAME, "unknown", 7, 7);
  24 static ScmObj sym_unknown = SCM_UNBOUND;
  25 static ScmObj netlib_sockaddr_name545(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
  26 {
  27   ScmObj addr_scm;
  28   ScmObj addr;
  29   addr_scm = SCM_ARGREF(0);
  30   addr = (addr_scm);
  31   {
  32 {
  33 ScmObj SCM_RESULT;
  34  SCM_RESULT = (SCM_MAKE_STR("unknown"));
  35 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
  36 }
  37   }
  38 }
  39 
  40 static ScmClass *netlib_sockaddr_name545__SPEC[] = { 
  41 SCM_CLASS_STATIC_PTR(Scm_SockAddrClass), 
  42 };
  43 static SCM_DEFINE_METHOD(netlib_sockaddr_name545__STUB, &Scm_GenericSockAddrName, 1, 0, netlib_sockaddr_name545__SPEC, netlib_sockaddr_name545, NULL);
  44 
  45 static ScmObj netlib_sockaddr_family546(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
  46 {
  47   ScmObj addr_scm;
  48   ScmObj addr;
  49   addr_scm = SCM_ARGREF(0);
  50   addr = (addr_scm);
  51   {
  52 {
  53 ScmObj SCM_RESULT;
  54  SCM_RESULT = (sym_unknown);
  55 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
  56 }
  57   }
  58 }
  59 
  60 static ScmClass *netlib_sockaddr_family546__SPEC[] = { 
  61 SCM_CLASS_STATIC_PTR(Scm_SockAddrClass), 
  62 };
  63 static SCM_DEFINE_METHOD(netlib_sockaddr_family546__STUB, &Scm_GenericSockAddrFamily, 1, 0, netlib_sockaddr_family546__SPEC, netlib_sockaddr_family546, NULL);
  64 
  65 static ScmObj netlib_sockaddr_name547(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
  66 {
  67   ScmObj addr_scm;
  68   ScmObj addr;
  69   addr_scm = SCM_ARGREF(0);
  70   addr = (addr_scm);
  71   {
  72 {
  73 ScmObj SCM_RESULT;
  74  SCM_RESULT = (SCM_MAKE_STR(((ScmSockAddrUn*)addr)->addr.sun_path));
  75 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
  76 }
  77   }
  78 }
  79 
  80 static ScmClass *netlib_sockaddr_name547__SPEC[] = { 
  81 SCM_CLASS_STATIC_PTR(Scm_SockAddrUnClass), 
  82 };
  83 static SCM_DEFINE_METHOD(netlib_sockaddr_name547__STUB, &Scm_GenericSockAddrName, 1, 0, netlib_sockaddr_name547__SPEC, netlib_sockaddr_name547, NULL);
  84 
  85 static ScmObj netlib_sockaddr_family548(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
  86 {
  87   ScmObj addr_scm;
  88   ScmObj addr;
  89   addr_scm = SCM_ARGREF(0);
  90   addr = (addr_scm);
  91   {
  92 {
  93 ScmObj SCM_RESULT;
  94  SCM_RESULT = (sym_unix);
  95 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
  96 }
  97   }
  98 }
  99 
 100 static ScmClass *netlib_sockaddr_family548__SPEC[] = { 
 101 SCM_CLASS_STATIC_PTR(Scm_SockAddrUnClass), 
 102 };
 103 static SCM_DEFINE_METHOD(netlib_sockaddr_family548__STUB, &Scm_GenericSockAddrFamily, 1, 0, netlib_sockaddr_family548__SPEC, netlib_sockaddr_family548, NULL);
 104 
 105 static ScmObj netlib_sockaddr_name549(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
 106 {
 107   ScmObj addr_scm;
 108   ScmObj addr;
 109   addr_scm = SCM_ARGREF(0);
 110   addr = (addr_scm);
 111   {
 112   ScmSockAddrIn *a = (ScmSockAddrIn*)addr;
 113     ScmPort *out = SCM_PORT(Scm_MakeOutputStringPort(TRUE));
 114     unsigned long inaddr = htonl(a->addr.sin_addr.s_addr);
 115 
 116     /* NB: avoid using inet_ntoa(), which uses static buffer */
 117     Scm_Printf(out, "%d.%d.%d.%d:%d",
 118                ((inaddr>>24)&0xff),
 119                ((inaddr>>16)&0xff),
 120                ((inaddr>>8)&0xff),
 121                ((inaddr>>0)&0xff),
 122                ntohs(a->addr.sin_port));
 123     SCM_RETURN(Scm_GetOutputStringUnsafe(out));
 124   }
 125 }
 126 
 127 static ScmClass *netlib_sockaddr_name549__SPEC[] = { 
 128 SCM_CLASS_STATIC_PTR(Scm_SockAddrInClass), 
 129 };
 130 static SCM_DEFINE_METHOD(netlib_sockaddr_name549__STUB, &Scm_GenericSockAddrName, 1, 0, netlib_sockaddr_name549__SPEC, netlib_sockaddr_name549, NULL);
 131 
 132 static ScmObj netlib_sockaddr_family550(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
 133 {
 134   ScmObj addr_scm;
 135   ScmObj addr;
 136   addr_scm = SCM_ARGREF(0);
 137   addr = (addr_scm);
 138   {
 139 {
 140 ScmObj SCM_RESULT;
 141  SCM_RESULT = (sym_inet);
 142 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 143 }
 144   }
 145 }
 146 
 147 static ScmClass *netlib_sockaddr_family550__SPEC[] = { 
 148 SCM_CLASS_STATIC_PTR(Scm_SockAddrInClass), 
 149 };
 150 static SCM_DEFINE_METHOD(netlib_sockaddr_family550__STUB, &Scm_GenericSockAddrFamily, 1, 0, netlib_sockaddr_family550__SPEC, netlib_sockaddr_family550, NULL);
 151 
 152 static ScmObj netlib_sockaddr_addr551(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
 153 {
 154   ScmObj addr_scm;
 155   ScmObj addr;
 156   addr_scm = SCM_ARGREF(0);
 157   addr = (addr_scm);
 158   {
 159   ScmSockAddrIn *a = (ScmSockAddrIn*)addr;
 160   SCM_RETURN(Scm_MakeIntegerFromUI(ntohl(a->addr.sin_addr.s_addr)));
 161   }
 162 }
 163 
 164 static ScmClass *netlib_sockaddr_addr551__SPEC[] = { 
 165 SCM_CLASS_STATIC_PTR(Scm_SockAddrInClass), 
 166 };
 167 static SCM_DEFINE_METHOD(netlib_sockaddr_addr551__STUB, &Scm_GenericSockAddrAddr, 1, 0, netlib_sockaddr_addr551__SPEC, netlib_sockaddr_addr551, NULL);
 168 
 169 static ScmObj netlib_sockaddr_port552(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
 170 {
 171   ScmObj addr_scm;
 172   ScmObj addr;
 173   addr_scm = SCM_ARGREF(0);
 174   addr = (addr_scm);
 175   {
 176   ScmSockAddrIn *a = (ScmSockAddrIn*)addr;
 177   SCM_RETURN(Scm_MakeInteger(ntohs(a->addr.sin_port)));
 178   }
 179 }
 180 
 181 static ScmClass *netlib_sockaddr_port552__SPEC[] = { 
 182 SCM_CLASS_STATIC_PTR(Scm_SockAddrInClass), 
 183 };
 184 static SCM_DEFINE_METHOD(netlib_sockaddr_port552__STUB, &Scm_GenericSockAddrPort, 1, 0, netlib_sockaddr_port552__SPEC, netlib_sockaddr_port552, NULL);
 185 
 186 #if defined HAVE_IPV6
 187 static SCM_DEFINE_STRING_CONST(sym_inet6__NAME, "inet6", 5, 5);
 188 static ScmObj sym_inet6 = SCM_UNBOUND;
 189 #endif /*defined HAVE_IPV6*/
 190 #if defined HAVE_IPV6
 191 static ScmObj netlib_sockaddr_name553(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
 192 {
 193   ScmObj addr_scm;
 194   ScmObj addr;
 195   addr_scm = SCM_ARGREF(0);
 196   addr = (addr_scm);
 197   {
 198   ScmSockAddrIn6 *a = (ScmSockAddrIn6*)addr;
 199   ScmPort *out = SCM_PORT(Scm_MakeOutputStringPort(TRUE));
 200   char buf[INET6_ADDRSTRLEN];
 201   const char *r = inet_ntop(AF_INET6, &a->addr.sin6_addr, buf, sizeof(buf));
 202   if (r == NULL) Scm_SysError("inet_ntop");
 203   Scm_Printf(out, "[%s]:%d", buf, ntohs(a->addr.sin6_port));
 204   SCM_RETURN(Scm_GetOutputStringUnsafe(out));
 205   }
 206 }
 207 
 208 static ScmClass *netlib_sockaddr_name553__SPEC[] = { 
 209 SCM_CLASS_STATIC_PTR(Scm_SockAddrIn6Class), 
 210 };
 211 static SCM_DEFINE_METHOD(netlib_sockaddr_name553__STUB, &Scm_GenericSockAddrName, 1, 0, netlib_sockaddr_name553__SPEC, netlib_sockaddr_name553, NULL);
 212 
 213 #endif /*defined HAVE_IPV6*/
 214 #if defined HAVE_IPV6
 215 static ScmObj netlib_sockaddr_family554(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
 216 {
 217   ScmObj addr_scm;
 218   ScmObj addr;
 219   addr_scm = SCM_ARGREF(0);
 220   addr = (addr_scm);
 221   {
 222 {
 223 ScmObj SCM_RESULT;
 224  SCM_RESULT = (sym_inet6);
 225 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 226 }
 227   }
 228 }
 229 
 230 static ScmClass *netlib_sockaddr_family554__SPEC[] = { 
 231 SCM_CLASS_STATIC_PTR(Scm_SockAddrIn6Class), 
 232 };
 233 static SCM_DEFINE_METHOD(netlib_sockaddr_family554__STUB, &Scm_GenericSockAddrFamily, 1, 0, netlib_sockaddr_family554__SPEC, netlib_sockaddr_family554, NULL);
 234 
 235 #endif /*defined HAVE_IPV6*/
 236 #if defined HAVE_IPV6
 237 static ScmObj netlib_sockaddr_addr555(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
 238 {
 239   ScmObj addr_scm;
 240   ScmObj addr;
 241   addr_scm = SCM_ARGREF(0);
 242   addr = (addr_scm);
 243   {
 244 #define BN_SIZE (16 / SIZEOF_LONG)
 245   ScmSockAddrIn6 *a = (ScmSockAddrIn6*)addr;
 246   u_long values[BN_SIZE];
 247   u_long *p = (u_long*)a->addr.sin6_addr.s6_addr;
 248   int i;
 249   ScmObj bn;
 250 
 251   for (i = 0; i < BN_SIZE; i++) values[BN_SIZE-i-1] = ntohl(*p++);
 252   bn = Scm_MakeBignumFromUIArray(1, values, BN_SIZE);
 253   SCM_RETURN(Scm_NormalizeBignum(SCM_BIGNUM(bn)));
 254   }
 255 }
 256 
 257 static ScmClass *netlib_sockaddr_addr555__SPEC[] = { 
 258 SCM_CLASS_STATIC_PTR(Scm_SockAddrIn6Class), 
 259 };
 260 static SCM_DEFINE_METHOD(netlib_sockaddr_addr555__STUB, &Scm_GenericSockAddrAddr, 1, 0, netlib_sockaddr_addr555__SPEC, netlib_sockaddr_addr555, NULL);
 261 
 262 #endif /*defined HAVE_IPV6*/
 263 #if defined HAVE_IPV6
 264 static ScmObj netlib_sockaddr_port556(ScmNextMethod *nm_, ScmObj *SCM_FP, int SCM_ARGCNT, void *d_)
 265 {
 266   ScmObj addr_scm;
 267   ScmObj addr;
 268   addr_scm = SCM_ARGREF(0);
 269   addr = (addr_scm);
 270   {
 271   ScmSockAddrIn6 *a = (ScmSockAddrIn6*)addr;
 272   SCM_RETURN(Scm_MakeInteger(ntohs(a->addr.sin6_port)));
 273   }
 274 }
 275 
 276 static ScmClass *netlib_sockaddr_port556__SPEC[] = { 
 277 SCM_CLASS_STATIC_PTR(Scm_SockAddrIn6Class), 
 278 };
 279 static SCM_DEFINE_METHOD(netlib_sockaddr_port556__STUB, &Scm_GenericSockAddrPort, 1, 0, netlib_sockaddr_port556__SPEC, netlib_sockaddr_port556, NULL);
 280 
 281 #endif /*defined HAVE_IPV6*/
 282 static ScmObj netlib_make_socket(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 283 {
 284   ScmObj domain_scm;
 285   int domain;
 286   ScmObj type_scm;
 287   int type;
 288   ScmObj protocol_scm;
 289   int protocol;
 290   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
 291   SCM_ENTER_SUBR("make-socket");
 292   if (Scm_Length(SCM_OPTARGS) > 1)
 293     Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS));
 294   domain_scm = SCM_ARGREF(0);
 295   if (!SCM_INTP(domain_scm)) Scm_Error("small integer required, but got %S", domain_scm);
 296   domain = SCM_INT_VALUE(domain_scm);
 297   type_scm = SCM_ARGREF(1);
 298   if (!SCM_INTP(type_scm)) Scm_Error("small integer required, but got %S", type_scm);
 299   type = SCM_INT_VALUE(type_scm);
 300   if (SCM_NULLP(SCM_OPTARGS)) protocol_scm = Scm_MakeInteger(0);
 301   else {
 302     protocol_scm = SCM_CAR(SCM_OPTARGS);
 303     SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
 304   }
 305   if (!SCM_INTP(protocol_scm)) Scm_Error("small integer required, but got %S", protocol_scm);
 306   protocol = SCM_INT_VALUE(protocol_scm);
 307   {
 308 {
 309 ScmObj SCM_RESULT;
 310 SCM_RESULT = Scm_MakeSocket(domain, type, protocol);
 311 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 312 }
 313   }
 314 }
 315 
 316 static SCM_DEFINE_STRING_CONST(netlib_make_socket__NAME, "make-socket", 11, 11);
 317 static SCM_DEFINE_SUBR(netlib_make_socket__STUB, 2, 1, SCM_OBJ(&netlib_make_socket__NAME), netlib_make_socket, NULL, NULL);
 318 
 319 static SCM_DEFINE_STRING_CONST(netlib_PF_UNSPEC__VAR__NAME, "PF_UNSPEC", 9, 9);
 320 static ScmObj netlib_PF_UNSPEC__VAR = SCM_UNBOUND;
 321 static SCM_DEFINE_STRING_CONST(netlib_PF_UNIX__VAR__NAME, "PF_UNIX", 7, 7);
 322 static ScmObj netlib_PF_UNIX__VAR = SCM_UNBOUND;
 323 static SCM_DEFINE_STRING_CONST(netlib_PF_INET__VAR__NAME, "PF_INET", 7, 7);
 324 static ScmObj netlib_PF_INET__VAR = SCM_UNBOUND;
 325 static SCM_DEFINE_STRING_CONST(netlib_AF_UNSPEC__VAR__NAME, "AF_UNSPEC", 9, 9);
 326 static ScmObj netlib_AF_UNSPEC__VAR = SCM_UNBOUND;
 327 static SCM_DEFINE_STRING_CONST(netlib_AF_UNIX__VAR__NAME, "AF_UNIX", 7, 7);
 328 static ScmObj netlib_AF_UNIX__VAR = SCM_UNBOUND;
 329 static SCM_DEFINE_STRING_CONST(netlib_AF_INET__VAR__NAME, "AF_INET", 7, 7);
 330 static ScmObj netlib_AF_INET__VAR = SCM_UNBOUND;
 331 static SCM_DEFINE_STRING_CONST(netlib_SOCK_STREAM__VAR__NAME, "SOCK_STREAM", 11, 11);
 332 static ScmObj netlib_SOCK_STREAM__VAR = SCM_UNBOUND;
 333 static SCM_DEFINE_STRING_CONST(netlib_SOCK_DGRAM__VAR__NAME, "SOCK_DGRAM", 10, 10);
 334 static ScmObj netlib_SOCK_DGRAM__VAR = SCM_UNBOUND;
 335 static SCM_DEFINE_STRING_CONST(netlib_SOCK_RAW__VAR__NAME, "SOCK_RAW", 8, 8);
 336 static ScmObj netlib_SOCK_RAW__VAR = SCM_UNBOUND;
 337 #if defined(MSG_CTRUNC)
 338 static SCM_DEFINE_STRING_CONST(netlib_MSG_CTRUNC__VAR__NAME, "MSG_CTRUNC", 10, 10);
 339 static ScmObj netlib_MSG_CTRUNC__VAR = SCM_UNBOUND;
 340 #endif /*defined(MSG_CTRUNC)*/
 341 #if defined(MSG_DONTROUTE)
 342 static SCM_DEFINE_STRING_CONST(netlib_MSG_DONTROUTE__VAR__NAME, "MSG_DONTROUTE", 13, 13);
 343 static ScmObj netlib_MSG_DONTROUTE__VAR = SCM_UNBOUND;
 344 #endif /*defined(MSG_DONTROUTE)*/
 345 #if defined(MSG_EOR)
 346 static SCM_DEFINE_STRING_CONST(netlib_MSG_EOR__VAR__NAME, "MSG_EOR", 7, 7);
 347 static ScmObj netlib_MSG_EOR__VAR = SCM_UNBOUND;
 348 #endif /*defined(MSG_EOR)*/
 349 #if defined(MSG_OOB)
 350 static SCM_DEFINE_STRING_CONST(netlib_MSG_OOB__VAR__NAME, "MSG_OOB", 7, 7);
 351 static ScmObj netlib_MSG_OOB__VAR = SCM_UNBOUND;
 352 #endif /*defined(MSG_OOB)*/
 353 #if defined(MSG_PEEK)
 354 static SCM_DEFINE_STRING_CONST(netlib_MSG_PEEK__VAR__NAME, "MSG_PEEK", 8, 8);
 355 static ScmObj netlib_MSG_PEEK__VAR = SCM_UNBOUND;
 356 #endif /*defined(MSG_PEEK)*/
 357 #if defined(MSG_TRUNC)
 358 static SCM_DEFINE_STRING_CONST(netlib_MSG_TRUNC__VAR__NAME, "MSG_TRUNC", 9, 9);
 359 static ScmObj netlib_MSG_TRUNC__VAR = SCM_UNBOUND;
 360 #endif /*defined(MSG_TRUNC)*/
 361 #if defined(MSG_WAITALL)
 362 static SCM_DEFINE_STRING_CONST(netlib_MSG_WAITALL__VAR__NAME, "MSG_WAITALL", 11, 11);
 363 static ScmObj netlib_MSG_WAITALL__VAR = SCM_UNBOUND;
 364 #endif /*defined(MSG_WAITALL)*/
 365 #if defined(IPPROTO_IP)
 366 static SCM_DEFINE_STRING_CONST(netlib_IPPROTO_IP__VAR__NAME, "IPPROTO_IP", 10, 10);
 367 static ScmObj netlib_IPPROTO_IP__VAR = SCM_UNBOUND;
 368 #endif /*defined(IPPROTO_IP)*/
 369 #if defined(IPPROTO_ICMP)
 370 static SCM_DEFINE_STRING_CONST(netlib_IPPROTO_ICMP__VAR__NAME, "IPPROTO_ICMP", 12, 12);
 371 static ScmObj netlib_IPPROTO_ICMP__VAR = SCM_UNBOUND;
 372 #endif /*defined(IPPROTO_ICMP)*/
 373 #if defined(IPPROTO_TCP)
 374 static SCM_DEFINE_STRING_CONST(netlib_IPPROTO_TCP__VAR__NAME, "IPPROTO_TCP", 11, 11);
 375 static ScmObj netlib_IPPROTO_TCP__VAR = SCM_UNBOUND;
 376 #endif /*defined(IPPROTO_TCP)*/
 377 #if defined(IPPROTO_UDP)
 378 static SCM_DEFINE_STRING_CONST(netlib_IPPROTO_UDP__VAR__NAME, "IPPROTO_UDP", 11, 11);
 379 static ScmObj netlib_IPPROTO_UDP__VAR = SCM_UNBOUND;
 380 #endif /*defined(IPPROTO_UDP)*/
 381 static ScmObj netlib_socket_address(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 382 {
 383   ScmObj sock_scm;
 384   ScmSocket* sock;
 385   SCM_ENTER_SUBR("socket-address");
 386   sock_scm = SCM_ARGREF(0);
 387   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 388   sock = SCM_SOCKET(sock_scm);
 389   {
 390   if (sock->address) { SCM_RETURN(SCM_OBJ(sock->address)); }
 391   else { SCM_RETURN(SCM_FALSE); }
 392   }
 393 }
 394 
 395 static SCM_DEFINE_STRING_CONST(netlib_socket_address__NAME, "socket-address", 14, 14);
 396 static SCM_DEFINE_SUBR(netlib_socket_address__STUB, 1, 0, SCM_OBJ(&netlib_socket_address__NAME), netlib_socket_address, NULL, NULL);
 397 
 398 static SCM_DEFINE_STRING_CONST(sym_none__NAME, "none", 4, 4);
 399 static ScmObj sym_none = SCM_UNBOUND;
 400 static SCM_DEFINE_STRING_CONST(sym_bound__NAME, "bound", 5, 5);
 401 static ScmObj sym_bound = SCM_UNBOUND;
 402 static SCM_DEFINE_STRING_CONST(sym_listening__NAME, "listening", 9, 9);
 403 static ScmObj sym_listening = SCM_UNBOUND;
 404 static SCM_DEFINE_STRING_CONST(sym_connected__NAME, "connected", 9, 9);
 405 static ScmObj sym_connected = SCM_UNBOUND;
 406 static SCM_DEFINE_STRING_CONST(sym_shutdown__NAME, "shutdown", 8, 8);
 407 static ScmObj sym_shutdown = SCM_UNBOUND;
 408 static SCM_DEFINE_STRING_CONST(sym_closed__NAME, "closed", 6, 6);
 409 static ScmObj sym_closed = SCM_UNBOUND;
 410 static ScmObj netlib_socket_status(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 411 {
 412   ScmObj sock_scm;
 413   ScmSocket* sock;
 414   SCM_ENTER_SUBR("socket-status");
 415   sock_scm = SCM_ARGREF(0);
 416   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 417   sock = SCM_SOCKET(sock_scm);
 418   {
 419   switch (sock->status) {
 420   case SCM_SOCKET_STATUS_NONE:      SCM_RETURN(sym_none);
 421   case SCM_SOCKET_STATUS_BOUND:     SCM_RETURN(sym_bound);
 422   case SCM_SOCKET_STATUS_LISTENING: SCM_RETURN(sym_listening);
 423   case SCM_SOCKET_STATUS_CONNECTED: SCM_RETURN(sym_connected);
 424   case SCM_SOCKET_STATUS_SHUTDOWN:  SCM_RETURN(sym_shutdown);
 425   case SCM_SOCKET_STATUS_CLOSED:    SCM_RETURN(sym_closed);
 426   default: Scm_Error("invalid state of socket %S: implementation bugs?",
 427                      sock);
 428            SCM_RETURN(SCM_UNDEFINED); /* dummy */
 429   }
 430   }
 431 }
 432 
 433 static SCM_DEFINE_STRING_CONST(netlib_socket_status__NAME, "socket-status", 13, 13);
 434 static SCM_DEFINE_SUBR(netlib_socket_status__STUB, 1, 0, SCM_OBJ(&netlib_socket_status__NAME), netlib_socket_status, NULL, NULL);
 435 
 436 static ScmObj netlib_socket_fd(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 437 {
 438   ScmObj sock_scm;
 439   ScmSocket* sock;
 440   SCM_ENTER_SUBR("socket-fd");
 441   sock_scm = SCM_ARGREF(0);
 442   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 443   sock = SCM_SOCKET(sock_scm);
 444   {
 445 {
 446 int SCM_RESULT;
 447  SCM_RESULT = (sock->fd);
 448 SCM_RETURN(Scm_MakeInteger(SCM_RESULT));
 449 }
 450   }
 451 }
 452 
 453 static SCM_DEFINE_STRING_CONST(netlib_socket_fd__NAME, "socket-fd", 9, 9);
 454 static SCM_DEFINE_SUBR(netlib_socket_fd__STUB, 1, 0, SCM_OBJ(&netlib_socket_fd__NAME), netlib_socket_fd, NULL, NULL);
 455 
 456 static SCM_DEFINE_STRING_CONST(KEYARG_buffering__NAME, "buffering", 9, 9);
 457 static ScmObj KEYARG_buffering = SCM_UNBOUND;
 458 static SCM_DEFINE_STRING_CONST(KEYARG_bufferedP__NAME, "buffered?", 9, 9);
 459 static ScmObj KEYARG_bufferedP = SCM_UNBOUND;
 460 static ScmObj netlib_socket_input_port(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 461 {
 462   ScmObj sock_scm;
 463   ScmSocket* sock;
 464   ScmObj buffering_scm;
 465   ScmObj buffering;
 466   ScmObj bufferedP_scm;
 467   ScmObj bufferedP;
 468   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
 469   SCM_ENTER_SUBR("socket-input-port");
 470   sock_scm = SCM_ARGREF(0);
 471   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 472   sock = SCM_SOCKET(sock_scm);
 473   buffering_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_buffering), SCM_OPTARGS, SCM_FALSE);
 474   buffering = (buffering_scm);
 475   bufferedP_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_bufferedP), SCM_OPTARGS, SCM_FALSE);
 476   bufferedP = (bufferedP_scm);
 477   {
 478  int bufmode;
 479   if (!SCM_FALSEP(bufferedP)) { /*for backward compatibility */
 480     bufmode = SCM_PORT_BUFFER_FULL;
 481   } else {
 482     bufmode = Scm_BufferingMode(buffering, SCM_PORT_INPUT, SCM_PORT_BUFFER_LINE);
 483   }
 484   SCM_RETURN(Scm_SocketInputPort(sock, bufmode));
 485   }
 486 }
 487 
 488 static SCM_DEFINE_STRING_CONST(netlib_socket_input_port__NAME, "socket-input-port", 17, 17);
 489 static SCM_DEFINE_SUBR(netlib_socket_input_port__STUB, 1, 1, SCM_OBJ(&netlib_socket_input_port__NAME), netlib_socket_input_port, NULL, NULL);
 490 
 491 static ScmObj netlib_socket_output_port(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 492 {
 493   ScmObj sock_scm;
 494   ScmSocket* sock;
 495   ScmObj buffering_scm;
 496   ScmObj buffering;
 497   ScmObj bufferedP_scm;
 498   ScmObj bufferedP;
 499   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
 500   SCM_ENTER_SUBR("socket-output-port");
 501   sock_scm = SCM_ARGREF(0);
 502   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 503   sock = SCM_SOCKET(sock_scm);
 504   buffering_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_buffering), SCM_OPTARGS, SCM_FALSE);
 505   buffering = (buffering_scm);
 506   bufferedP_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_bufferedP), SCM_OPTARGS, SCM_FALSE);
 507   bufferedP = (bufferedP_scm);
 508   {
 509  int bufmode;
 510   if (!SCM_FALSEP(bufferedP)) { /* for backward compatibility */
 511     bufmode = SCM_PORT_BUFFER_FULL;
 512   } else {
 513     bufmode = Scm_BufferingMode(buffering, SCM_PORT_OUTPUT, SCM_PORT_BUFFER_LINE);
 514   }
 515   SCM_RETURN(Scm_SocketOutputPort(sock, bufmode));
 516   }
 517 }
 518 
 519 static SCM_DEFINE_STRING_CONST(netlib_socket_output_port__NAME, "socket-output-port", 18, 18);
 520 static SCM_DEFINE_SUBR(netlib_socket_output_port__STUB, 1, 1, SCM_OBJ(&netlib_socket_output_port__NAME), netlib_socket_output_port, NULL, NULL);
 521 
 522 static ScmObj netlib_socket_shutdown(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 523 {
 524   ScmObj sock_scm;
 525   ScmSocket* sock;
 526   ScmObj how_scm;
 527   int how;
 528   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
 529   SCM_ENTER_SUBR("socket-shutdown");
 530   if (Scm_Length(SCM_OPTARGS) > 1)
 531     Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS));
 532   sock_scm = SCM_ARGREF(0);
 533   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 534   sock = SCM_SOCKET(sock_scm);
 535   if (SCM_NULLP(SCM_OPTARGS)) how_scm = Scm_MakeInteger(2);
 536   else {
 537     how_scm = SCM_CAR(SCM_OPTARGS);
 538     SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
 539   }
 540   if (!SCM_INTP(how_scm)) Scm_Error("small integer required, but got %S", how_scm);
 541   how = SCM_INT_VALUE(how_scm);
 542   {
 543 {
 544 ScmObj SCM_RESULT;
 545 SCM_RESULT = Scm_SocketShutdown(sock, how);
 546 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 547 }
 548   }
 549 }
 550 
 551 static SCM_DEFINE_STRING_CONST(netlib_socket_shutdown__NAME, "socket-shutdown", 15, 15);
 552 static SCM_DEFINE_SUBR(netlib_socket_shutdown__STUB, 1, 1, SCM_OBJ(&netlib_socket_shutdown__NAME), netlib_socket_shutdown, NULL, NULL);
 553 
 554 static ScmObj netlib_socket_close(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 555 {
 556   ScmObj sock_scm;
 557   ScmSocket* sock;
 558   SCM_ENTER_SUBR("socket-close");
 559   sock_scm = SCM_ARGREF(0);
 560   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 561   sock = SCM_SOCKET(sock_scm);
 562   {
 563 {
 564 ScmObj SCM_RESULT;
 565 SCM_RESULT = Scm_SocketClose(sock);
 566 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 567 }
 568   }
 569 }
 570 
 571 static SCM_DEFINE_STRING_CONST(netlib_socket_close__NAME, "socket-close", 12, 12);
 572 static SCM_DEFINE_SUBR(netlib_socket_close__STUB, 1, 0, SCM_OBJ(&netlib_socket_close__NAME), netlib_socket_close, NULL, NULL);
 573 
 574 static ScmObj netlib_socket_bind(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 575 {
 576   ScmObj sock_scm;
 577   ScmSocket* sock;
 578   ScmObj addr_scm;
 579   ScmSockAddr* addr;
 580   SCM_ENTER_SUBR("socket-bind");
 581   sock_scm = SCM_ARGREF(0);
 582   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 583   sock = SCM_SOCKET(sock_scm);
 584   addr_scm = SCM_ARGREF(1);
 585   if (!Scm_SockAddrP(addr_scm)) Scm_Error("socket address required, but got %S", addr_scm);
 586   addr = SCM_SOCKADDR(addr_scm);
 587   {
 588 {
 589 ScmObj SCM_RESULT;
 590 SCM_RESULT = Scm_SocketBind(sock, addr);
 591 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 592 }
 593   }
 594 }
 595 
 596 static SCM_DEFINE_STRING_CONST(netlib_socket_bind__NAME, "socket-bind", 11, 11);
 597 static SCM_DEFINE_SUBR(netlib_socket_bind__STUB, 2, 0, SCM_OBJ(&netlib_socket_bind__NAME), netlib_socket_bind, NULL, NULL);
 598 
 599 static ScmObj netlib_socket_listen(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 600 {
 601   ScmObj sock_scm;
 602   ScmSocket* sock;
 603   ScmObj backlog_scm;
 604   int backlog;
 605   SCM_ENTER_SUBR("socket-listen");
 606   sock_scm = SCM_ARGREF(0);
 607   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 608   sock = SCM_SOCKET(sock_scm);
 609   backlog_scm = SCM_ARGREF(1);
 610   if (!SCM_INTP(backlog_scm)) Scm_Error("small integer required, but got %S", backlog_scm);
 611   backlog = SCM_INT_VALUE(backlog_scm);
 612   {
 613 {
 614 ScmObj SCM_RESULT;
 615 SCM_RESULT = Scm_SocketListen(sock, backlog);
 616 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 617 }
 618   }
 619 }
 620 
 621 static SCM_DEFINE_STRING_CONST(netlib_socket_listen__NAME, "socket-listen", 13, 13);
 622 static SCM_DEFINE_SUBR(netlib_socket_listen__STUB, 2, 0, SCM_OBJ(&netlib_socket_listen__NAME), netlib_socket_listen, NULL, NULL);
 623 
 624 static ScmObj netlib_socket_accept(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 625 {
 626   ScmObj sock_scm;
 627   ScmSocket* sock;
 628   SCM_ENTER_SUBR("socket-accept");
 629   sock_scm = SCM_ARGREF(0);
 630   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 631   sock = SCM_SOCKET(sock_scm);
 632   {
 633 {
 634 ScmObj SCM_RESULT;
 635 SCM_RESULT = Scm_SocketAccept(sock);
 636 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 637 }
 638   }
 639 }
 640 
 641 static SCM_DEFINE_STRING_CONST(netlib_socket_accept__NAME, "socket-accept", 13, 13);
 642 static SCM_DEFINE_SUBR(netlib_socket_accept__STUB, 1, 0, SCM_OBJ(&netlib_socket_accept__NAME), netlib_socket_accept, NULL, NULL);
 643 
 644 static ScmObj netlib_socket_connect(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 645 {
 646   ScmObj sock_scm;
 647   ScmSocket* sock;
 648   ScmObj addr_scm;
 649   ScmSockAddr* addr;
 650   SCM_ENTER_SUBR("socket-connect");
 651   sock_scm = SCM_ARGREF(0);
 652   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 653   sock = SCM_SOCKET(sock_scm);
 654   addr_scm = SCM_ARGREF(1);
 655   if (!Scm_SockAddrP(addr_scm)) Scm_Error("socket address required, but got %S", addr_scm);
 656   addr = SCM_SOCKADDR(addr_scm);
 657   {
 658 {
 659 ScmObj SCM_RESULT;
 660 SCM_RESULT = Scm_SocketConnect(sock, addr);
 661 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 662 }
 663   }
 664 }
 665 
 666 static SCM_DEFINE_STRING_CONST(netlib_socket_connect__NAME, "socket-connect", 14, 14);
 667 static SCM_DEFINE_SUBR(netlib_socket_connect__STUB, 2, 0, SCM_OBJ(&netlib_socket_connect__NAME), netlib_socket_connect, NULL, NULL);
 668 
 669 static ScmObj netlib_socket_getsockname(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 670 {
 671   ScmObj sock_scm;
 672   ScmSocket* sock;
 673   SCM_ENTER_SUBR("socket-getsockname");
 674   sock_scm = SCM_ARGREF(0);
 675   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 676   sock = SCM_SOCKET(sock_scm);
 677   {
 678 {
 679 ScmObj SCM_RESULT;
 680 SCM_RESULT = Scm_SocketGetSockName(sock);
 681 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 682 }
 683   }
 684 }
 685 
 686 static SCM_DEFINE_STRING_CONST(netlib_socket_getsockname__NAME, "socket-getsockname", 18, 18);
 687 static SCM_DEFINE_SUBR(netlib_socket_getsockname__STUB, 1, 0, SCM_OBJ(&netlib_socket_getsockname__NAME), netlib_socket_getsockname, NULL, NULL);
 688 
 689 static ScmObj netlib_socket_getpeername(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 690 {
 691   ScmObj sock_scm;
 692   ScmSocket* sock;
 693   SCM_ENTER_SUBR("socket-getpeername");
 694   sock_scm = SCM_ARGREF(0);
 695   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 696   sock = SCM_SOCKET(sock_scm);
 697   {
 698 {
 699 ScmObj SCM_RESULT;
 700 SCM_RESULT = Scm_SocketGetPeerName(sock);
 701 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 702 }
 703   }
 704 }
 705 
 706 static SCM_DEFINE_STRING_CONST(netlib_socket_getpeername__NAME, "socket-getpeername", 18, 18);
 707 static SCM_DEFINE_SUBR(netlib_socket_getpeername__STUB, 1, 0, SCM_OBJ(&netlib_socket_getpeername__NAME), netlib_socket_getpeername, NULL, NULL);
 708 
 709 static ScmObj netlib_socket_send(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 710 {
 711   ScmObj sock_scm;
 712   ScmSocket* sock;
 713   ScmObj msg_scm;
 714   ScmString* msg;
 715   ScmObj flags_scm;
 716   int flags;
 717   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
 718   SCM_ENTER_SUBR("socket-send");
 719   if (Scm_Length(SCM_OPTARGS) > 1)
 720     Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS));
 721   sock_scm = SCM_ARGREF(0);
 722   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 723   sock = SCM_SOCKET(sock_scm);
 724   msg_scm = SCM_ARGREF(1);
 725   if (!SCM_STRINGP(msg_scm)) Scm_Error("string required, but got %S", msg_scm);
 726   msg = SCM_STRING(msg_scm);
 727   if (SCM_NULLP(SCM_OPTARGS)) flags_scm = Scm_MakeInteger(0);
 728   else {
 729     flags_scm = SCM_CAR(SCM_OPTARGS);
 730     SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
 731   }
 732   if (!SCM_INTP(flags_scm)) Scm_Error("small integer required, but got %S", flags_scm);
 733   flags = SCM_INT_VALUE(flags_scm);
 734   {
 735 {
 736 ScmObj SCM_RESULT;
 737 SCM_RESULT = Scm_SocketSend(sock, msg, flags);
 738 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 739 }
 740   }
 741 }
 742 
 743 static SCM_DEFINE_STRING_CONST(netlib_socket_send__NAME, "socket-send", 11, 11);
 744 static SCM_DEFINE_SUBR(netlib_socket_send__STUB, 2, 1, SCM_OBJ(&netlib_socket_send__NAME), netlib_socket_send, NULL, NULL);
 745 
 746 static ScmObj netlib_socket_sendto(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 747 {
 748   ScmObj sock_scm;
 749   ScmSocket* sock;
 750   ScmObj msg_scm;
 751   ScmString* msg;
 752   ScmObj to_scm;
 753   ScmSockAddr* to;
 754   ScmObj flags_scm;
 755   int flags;
 756   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
 757   SCM_ENTER_SUBR("socket-sendto");
 758   if (Scm_Length(SCM_OPTARGS) > 1)
 759     Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS));
 760   sock_scm = SCM_ARGREF(0);
 761   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 762   sock = SCM_SOCKET(sock_scm);
 763   msg_scm = SCM_ARGREF(1);
 764   if (!SCM_STRINGP(msg_scm)) Scm_Error("string required, but got %S", msg_scm);
 765   msg = SCM_STRING(msg_scm);
 766   to_scm = SCM_ARGREF(2);
 767   if (!Scm_SockAddrP(to_scm)) Scm_Error("socket address required, but got %S", to_scm);
 768   to = SCM_SOCKADDR(to_scm);
 769   if (SCM_NULLP(SCM_OPTARGS)) flags_scm = Scm_MakeInteger(0);
 770   else {
 771     flags_scm = SCM_CAR(SCM_OPTARGS);
 772     SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
 773   }
 774   if (!SCM_INTP(flags_scm)) Scm_Error("small integer required, but got %S", flags_scm);
 775   flags = SCM_INT_VALUE(flags_scm);
 776   {
 777 {
 778 ScmObj SCM_RESULT;
 779 SCM_RESULT = Scm_SocketSendTo(sock, msg, to, flags);
 780 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 781 }
 782   }
 783 }
 784 
 785 static SCM_DEFINE_STRING_CONST(netlib_socket_sendto__NAME, "socket-sendto", 13, 13);
 786 static SCM_DEFINE_SUBR(netlib_socket_sendto__STUB, 3, 1, SCM_OBJ(&netlib_socket_sendto__NAME), netlib_socket_sendto, NULL, NULL);
 787 
 788 static ScmObj netlib_socket_recv(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 789 {
 790   ScmObj sock_scm;
 791   ScmSocket* sock;
 792   ScmObj bytes_scm;
 793   int bytes;
 794   ScmObj flags_scm;
 795   int flags;
 796   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
 797   SCM_ENTER_SUBR("socket-recv");
 798   if (Scm_Length(SCM_OPTARGS) > 1)
 799     Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS));
 800   sock_scm = SCM_ARGREF(0);
 801   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 802   sock = SCM_SOCKET(sock_scm);
 803   bytes_scm = SCM_ARGREF(1);
 804   if (!SCM_INTP(bytes_scm)) Scm_Error("small integer required, but got %S", bytes_scm);
 805   bytes = SCM_INT_VALUE(bytes_scm);
 806   if (SCM_NULLP(SCM_OPTARGS)) flags_scm = Scm_MakeInteger(0);
 807   else {
 808     flags_scm = SCM_CAR(SCM_OPTARGS);
 809     SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
 810   }
 811   if (!SCM_INTP(flags_scm)) Scm_Error("small integer required, but got %S", flags_scm);
 812   flags = SCM_INT_VALUE(flags_scm);
 813   {
 814 {
 815 ScmObj SCM_RESULT;
 816 SCM_RESULT = Scm_SocketRecv(sock, bytes, flags);
 817 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 818 }
 819   }
 820 }
 821 
 822 static SCM_DEFINE_STRING_CONST(netlib_socket_recv__NAME, "socket-recv", 11, 11);
 823 static SCM_DEFINE_SUBR(netlib_socket_recv__STUB, 2, 1, SCM_OBJ(&netlib_socket_recv__NAME), netlib_socket_recv, NULL, NULL);
 824 
 825 static ScmObj netlib_socket_recvfrom(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 826 {
 827   ScmObj sock_scm;
 828   ScmSocket* sock;
 829   ScmObj bytes_scm;
 830   int bytes;
 831   ScmObj flags_scm;
 832   int flags;
 833   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
 834   SCM_ENTER_SUBR("socket-recvfrom");
 835   if (Scm_Length(SCM_OPTARGS) > 1)
 836     Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS));
 837   sock_scm = SCM_ARGREF(0);
 838   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 839   sock = SCM_SOCKET(sock_scm);
 840   bytes_scm = SCM_ARGREF(1);
 841   if (!SCM_INTP(bytes_scm)) Scm_Error("small integer required, but got %S", bytes_scm);
 842   bytes = SCM_INT_VALUE(bytes_scm);
 843   if (SCM_NULLP(SCM_OPTARGS)) flags_scm = Scm_MakeInteger(0);
 844   else {
 845     flags_scm = SCM_CAR(SCM_OPTARGS);
 846     SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
 847   }
 848   if (!SCM_INTP(flags_scm)) Scm_Error("small integer required, but got %S", flags_scm);
 849   flags = SCM_INT_VALUE(flags_scm);
 850   {
 851 {
 852 ScmObj SCM_RESULT;
 853 SCM_RESULT = Scm_SocketRecvFrom(sock, bytes, flags);
 854 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 855 }
 856   }
 857 }
 858 
 859 static SCM_DEFINE_STRING_CONST(netlib_socket_recvfrom__NAME, "socket-recvfrom", 15, 15);
 860 static SCM_DEFINE_SUBR(netlib_socket_recvfrom__STUB, 2, 1, SCM_OBJ(&netlib_socket_recvfrom__NAME), netlib_socket_recvfrom, NULL, NULL);
 861 
 862 static ScmObj netlib_socket_setsockopt(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 863 {
 864   ScmObj sock_scm;
 865   ScmSocket* sock;
 866   ScmObj level_scm;
 867   int level;
 868   ScmObj option_scm;
 869   int option;
 870   ScmObj value_scm;
 871   ScmObj value;
 872   SCM_ENTER_SUBR("socket-setsockopt");
 873   sock_scm = SCM_ARGREF(0);
 874   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 875   sock = SCM_SOCKET(sock_scm);
 876   level_scm = SCM_ARGREF(1);
 877   if (!SCM_INTP(level_scm)) Scm_Error("small integer required, but got %S", level_scm);
 878   level = SCM_INT_VALUE(level_scm);
 879   option_scm = SCM_ARGREF(2);
 880   if (!SCM_INTP(option_scm)) Scm_Error("small integer required, but got %S", option_scm);
 881   option = SCM_INT_VALUE(option_scm);
 882   value_scm = SCM_ARGREF(3);
 883   value = (value_scm);
 884   {
 885 {
 886 ScmObj SCM_RESULT;
 887 SCM_RESULT = Scm_SocketSetOpt(sock, level, option, value);
 888 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 889 }
 890   }
 891 }
 892 
 893 static SCM_DEFINE_STRING_CONST(netlib_socket_setsockopt__NAME, "socket-setsockopt", 17, 17);
 894 static SCM_DEFINE_SUBR(netlib_socket_setsockopt__STUB, 4, 0, SCM_OBJ(&netlib_socket_setsockopt__NAME), netlib_socket_setsockopt, NULL, NULL);
 895 
 896 static ScmObj netlib_socket_getsockopt(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 897 {
 898   ScmObj sock_scm;
 899   ScmSocket* sock;
 900   ScmObj level_scm;
 901   int level;
 902   ScmObj option_scm;
 903   int option;
 904   ScmObj rsize_scm;
 905   int rsize;
 906   SCM_ENTER_SUBR("socket-getsockopt");
 907   sock_scm = SCM_ARGREF(0);
 908   if (!SCM_SOCKETP(sock_scm)) Scm_Error("<socket> required, but got %S", sock_scm);
 909   sock = SCM_SOCKET(sock_scm);
 910   level_scm = SCM_ARGREF(1);
 911   if (!SCM_INTP(level_scm)) Scm_Error("small integer required, but got %S", level_scm);
 912   level = SCM_INT_VALUE(level_scm);
 913   option_scm = SCM_ARGREF(2);
 914   if (!SCM_INTP(option_scm)) Scm_Error("small integer required, but got %S", option_scm);
 915   option = SCM_INT_VALUE(option_scm);
 916   rsize_scm = SCM_ARGREF(3);
 917   if (!SCM_INTP(rsize_scm)) Scm_Error("small integer required, but got %S", rsize_scm);
 918   rsize = SCM_INT_VALUE(rsize_scm);
 919   {
 920 {
 921 ScmObj SCM_RESULT;
 922 SCM_RESULT = Scm_SocketGetOpt(sock, level, option, rsize);
 923 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 924 }
 925   }
 926 }
 927 
 928 static SCM_DEFINE_STRING_CONST(netlib_socket_getsockopt__NAME, "socket-getsockopt", 17, 17);
 929 static SCM_DEFINE_SUBR(netlib_socket_getsockopt__STUB, 4, 0, SCM_OBJ(&netlib_socket_getsockopt__NAME), netlib_socket_getsockopt, NULL, NULL);
 930 
 931 #if defined(SOL_SOCKET)
 932 static SCM_DEFINE_STRING_CONST(netlib_SOL_SOCKET__VAR__NAME, "SOL_SOCKET", 10, 10);
 933 static ScmObj netlib_SOL_SOCKET__VAR = SCM_UNBOUND;
 934 #endif /*defined(SOL_SOCKET)*/
 935 #if defined(SO_KEEPALIVE)
 936 static SCM_DEFINE_STRING_CONST(netlib_SO_KEEPALIVE__VAR__NAME, "SO_KEEPALIVE", 12, 12);
 937 static ScmObj netlib_SO_KEEPALIVE__VAR = SCM_UNBOUND;
 938 #endif /*defined(SO_KEEPALIVE)*/
 939 #if defined(SO_OOBINLINE)
 940 static SCM_DEFINE_STRING_CONST(netlib_SO_OOBINLINE__VAR__NAME, "SO_OOBINLINE", 12, 12);
 941 static ScmObj netlib_SO_OOBINLINE__VAR = SCM_UNBOUND;
 942 #endif /*defined(SO_OOBINLINE)*/
 943 #if defined(SO_REUSEADDR)
 944 static SCM_DEFINE_STRING_CONST(netlib_SO_REUSEADDR__VAR__NAME, "SO_REUSEADDR", 12, 12);
 945 static ScmObj netlib_SO_REUSEADDR__VAR = SCM_UNBOUND;
 946 #endif /*defined(SO_REUSEADDR)*/
 947 #if defined(SO_TYPE)
 948 static SCM_DEFINE_STRING_CONST(netlib_SO_TYPE__VAR__NAME, "SO_TYPE", 7, 7);
 949 static ScmObj netlib_SO_TYPE__VAR = SCM_UNBOUND;
 950 #endif /*defined(SO_TYPE)*/
 951 #if defined(SO_BROADCAST)
 952 static SCM_DEFINE_STRING_CONST(netlib_SO_BROADCAST__VAR__NAME, "SO_BROADCAST", 12, 12);
 953 static ScmObj netlib_SO_BROADCAST__VAR = SCM_UNBOUND;
 954 #endif /*defined(SO_BROADCAST)*/
 955 #if defined(SO_SNDBUF)
 956 static SCM_DEFINE_STRING_CONST(netlib_SO_SNDBUF__VAR__NAME, "SO_SNDBUF", 9, 9);
 957 static ScmObj netlib_SO_SNDBUF__VAR = SCM_UNBOUND;
 958 #endif /*defined(SO_SNDBUF)*/
 959 #if defined(SO_RFCBUF)
 960 static SCM_DEFINE_STRING_CONST(netlib_SO_RFCBUF__VAR__NAME, "SO_RFCBUF", 9, 9);
 961 static ScmObj netlib_SO_RFCBUF__VAR = SCM_UNBOUND;
 962 #endif /*defined(SO_RFCBUF)*/
 963 #if defined(SO_PRIORITY)
 964 static SCM_DEFINE_STRING_CONST(netlib_SO_PRIORITY__VAR__NAME, "SO_PRIORITY", 11, 11);
 965 static ScmObj netlib_SO_PRIORITY__VAR = SCM_UNBOUND;
 966 #endif /*defined(SO_PRIORITY)*/
 967 #if defined(SO_ERROR)
 968 static SCM_DEFINE_STRING_CONST(netlib_SO_ERROR__VAR__NAME, "SO_ERROR", 8, 8);
 969 static ScmObj netlib_SO_ERROR__VAR = SCM_UNBOUND;
 970 #endif /*defined(SO_ERROR)*/
 971 #if defined(SOL_TCP)
 972 static SCM_DEFINE_STRING_CONST(netlib_SOL_TCP__VAR__NAME, "SOL_TCP", 7, 7);
 973 static ScmObj netlib_SOL_TCP__VAR = SCM_UNBOUND;
 974 #endif /*defined(SOL_TCP)*/
 975 #if defined(TCP_NODELAY)
 976 static SCM_DEFINE_STRING_CONST(netlib_TCP_NODELAY__VAR__NAME, "TCP_NODELAY", 11, 11);
 977 static ScmObj netlib_TCP_NODELAY__VAR = SCM_UNBOUND;
 978 #endif /*defined(TCP_NODELAY)*/
 979 #if defined(TCP_MAXSEG)
 980 static SCM_DEFINE_STRING_CONST(netlib_TCP_MAXSEG__VAR__NAME, "TCP_MAXSEG", 10, 10);
 981 static ScmObj netlib_TCP_MAXSEG__VAR = SCM_UNBOUND;
 982 #endif /*defined(TCP_MAXSEG)*/
 983 #if defined(TCP_CORK)
 984 static SCM_DEFINE_STRING_CONST(netlib_TCP_CORK__VAR__NAME, "TCP_CORK", 8, 8);
 985 static ScmObj netlib_TCP_CORK__VAR = SCM_UNBOUND;
 986 #endif /*defined(TCP_CORK)*/
 987 #if defined(SOL_IP)
 988 static SCM_DEFINE_STRING_CONST(netlib_SOL_IP__VAR__NAME, "SOL_IP", 6, 6);
 989 static ScmObj netlib_SOL_IP__VAR = SCM_UNBOUND;
 990 #endif /*defined(SOL_IP)*/
 991 #if defined(IP_OPTIONS)
 992 static SCM_DEFINE_STRING_CONST(netlib_IP_OPTIONS__VAR__NAME, "IP_OPTIONS", 10, 10);
 993 static ScmObj netlib_IP_OPTIONS__VAR = SCM_UNBOUND;
 994 #endif /*defined(IP_OPTIONS)*/
 995 static ScmObj netlib_sys_gethostbyname(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 996 {
 997   ScmObj name_scm;
 998   const char * name;
 999   SCM_ENTER_SUBR("sys-gethostbyname");
1000   name_scm = SCM_ARGREF(0);
1001   if (!SCM_STRINGP(name_scm)) Scm_Error("const C string required, but got %S", name_scm);
1002   name = SCM_STRING_CONST_CSTRING(name_scm);
1003   {
1004 {
1005 ScmObj SCM_RESULT;
1006 SCM_RESULT = Scm_GetHostByName(name);
1007 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1008 }
1009   }
1010 }
1011 
1012 static SCM_DEFINE_STRING_CONST(netlib_sys_gethostbyname__NAME, "sys-gethostbyname", 17, 17);
1013 static SCM_DEFINE_SUBR(netlib_sys_gethostbyname__STUB, 1, 0, SCM_OBJ(&netlib_sys_gethostbyname__NAME), netlib_sys_gethostbyname, NULL, NULL);
1014 
1015 static ScmObj netlib_sys_gethostbyaddr(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1016 {
1017   ScmObj addr_scm;
1018   const char * addr;
1019   ScmObj type_scm;
1020   int type;
1021   SCM_ENTER_SUBR("sys-gethostbyaddr");
1022   addr_scm = SCM_ARGREF(0);
1023   if (!SCM_STRINGP(addr_scm)) Scm_Error("const C string required, but got %S", addr_scm);
1024   addr = SCM_STRING_CONST_CSTRING(addr_scm);
1025   type_scm = SCM_ARGREF(1);
1026   if (!SCM_INTP(type_scm)) Scm_Error("small integer required, but got %S", type_scm);
1027   type = SCM_INT_VALUE(type_scm);
1028   {
1029 {
1030 ScmObj SCM_RESULT;
1031 SCM_RESULT = Scm_GetHostByAddr(addr, type);
1032 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1033 }
1034   }
1035 }
1036 
1037 static SCM_DEFINE_STRING_CONST(netlib_sys_gethostbyaddr__NAME, "sys-gethostbyaddr", 17, 17);
1038 static SCM_DEFINE_SUBR(netlib_sys_gethostbyaddr__STUB, 2, 0, SCM_OBJ(&netlib_sys_gethostbyaddr__NAME), netlib_sys_gethostbyaddr, NULL, NULL);
1039 
1040 static ScmObj netlib_sys_getprotobyname(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1041 {
1042   ScmObj name_scm;
1043   const char * name;
1044   SCM_ENTER_SUBR("sys-getprotobyname");
1045   name_scm = SCM_ARGREF(0);
1046   if (!SCM_STRINGP(name_scm)) Scm_Error("const C string required, but got %S", name_scm);
1047   name = SCM_STRING_CONST_CSTRING(name_scm);
1048   {
1049 {
1050 ScmObj SCM_RESULT;
1051 SCM_RESULT = Scm_GetProtoByName(name);
1052 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1053 }
1054   }
1055 }
1056 
1057 static SCM_DEFINE_STRING_CONST(netlib_sys_getprotobyname__NAME, "sys-getprotobyname", 18, 18);
1058 static SCM_DEFINE_SUBR(netlib_sys_getprotobyname__STUB, 1, 0, SCM_OBJ(&netlib_sys_getprotobyname__NAME), netlib_sys_getprotobyname, NULL, NULL);
1059 
1060 static ScmObj netlib_sys_getprotobynumber(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1061 {
1062   ScmObj number_scm;
1063   int number;
1064   SCM_ENTER_SUBR("sys-getprotobynumber");
1065   number_scm = SCM_ARGREF(0);
1066   if (!SCM_INTP(number_scm)) Scm_Error("small integer required, but got %S", number_scm);
1067   number = SCM_INT_VALUE(number_scm);
1068   {
1069 {
1070 ScmObj SCM_RESULT;
1071 SCM_RESULT = Scm_GetProtoByNumber(number);
1072 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1073 }
1074   }
1075 }
1076 
1077 static SCM_DEFINE_STRING_CONST(netlib_sys_getprotobynumber__NAME, "sys-getprotobynumber", 20, 20);
1078 static SCM_DEFINE_SUBR(netlib_sys_getprotobynumber__STUB, 1, 0, SCM_OBJ(&netlib_sys_getprotobynumber__NAME), netlib_sys_getprotobynumber, NULL, NULL);
1079 
1080 static ScmObj netlib_sys_getservbyname(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1081 {
1082   ScmObj name_scm;
1083   const char * name;
1084   ScmObj proto_scm;
1085   const char * proto;
1086   SCM_ENTER_SUBR("sys-getservbyname");
1087   name_scm = SCM_ARGREF(0);
1088   if (!SCM_STRINGP(name_scm)) Scm_Error("const C string required, but got %S", name_scm);
1089   name = SCM_STRING_CONST_CSTRING(name_scm);
1090   proto_scm = SCM_ARGREF(1);
1091   if (!SCM_STRINGP(proto_scm)) Scm_Error("const C string required, but got %S", proto_scm);
1092   proto = SCM_STRING_CONST_CSTRING(proto_scm);
1093   {
1094 {
1095 ScmObj SCM_RESULT;
1096 SCM_RESULT = Scm_GetServByName(name, proto);
1097 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1098 }
1099   }
1100 }
1101 
1102 static SCM_DEFINE_STRING_CONST(netlib_sys_getservbyname__NAME, "sys-getservbyname", 17, 17);
1103 static SCM_DEFINE_SUBR(netlib_sys_getservbyname__STUB, 2, 0, SCM_OBJ(&netlib_sys_getservbyname__NAME), netlib_sys_getservbyname, NULL, NULL);
1104 
1105 static ScmObj netlib_sys_getservbyport(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1106 {
1107   ScmObj port_scm;
1108   int port;
1109   ScmObj proto_scm;
1110   const char * proto;
1111   SCM_ENTER_SUBR("sys-getservbyport");
1112   port_scm = SCM_ARGREF(0);
1113   if (!SCM_INTP(port_scm)) Scm_Error("small integer required, but got %S", port_scm);
1114   port = SCM_INT_VALUE(port_scm);
1115   proto_scm = SCM_ARGREF(1);
1116   if (!SCM_STRINGP(proto_scm)) Scm_Error("const C string required, but got %S", proto_scm);
1117   proto = SCM_STRING_CONST_CSTRING(proto_scm);
1118   {
1119 {
1120 ScmObj SCM_RESULT;
1121 SCM_RESULT = Scm_GetServByPort(port, proto);
1122 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1123 }
1124   }
1125 }
1126 
1127 static SCM_DEFINE_STRING_CONST(netlib_sys_getservbyport__NAME, "sys-getservbyport", 17, 17);
1128 static SCM_DEFINE_SUBR(netlib_sys_getservbyport__STUB, 2, 0, SCM_OBJ(&netlib_sys_getservbyport__NAME), netlib_sys_getservbyport, NULL, NULL);
1129 
1130 static ScmObj netlib_sys_ntohl(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1131 {
1132   ScmObj x_scm;
1133   u_int x;
1134   SCM_ENTER_SUBR("sys-ntohl");
1135   x_scm = SCM_ARGREF(0);
1136   if (!SCM_UINTEGERP(x_scm)) Scm_Error("C integer required, but got %S", x_scm);
1137   x = Scm_GetIntegerU(x_scm);
1138   {
1139 {
1140 u_int SCM_RESULT;
1141 SCM_RESULT = ntohl(x);
1142 SCM_RETURN(Scm_MakeIntegerFromUI(SCM_RESULT));
1143 }
1144   }
1145 }
1146 
1147 static SCM_DEFINE_STRING_CONST(netlib_sys_ntohl__NAME, "sys-ntohl", 9, 9);
1148 static SCM_DEFINE_SUBR(netlib_sys_ntohl__STUB, 1, 0, SCM_OBJ(&netlib_sys_ntohl__NAME), netlib_sys_ntohl, NULL, NULL);
1149 
1150 static ScmObj netlib_sys_ntohs(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1151 {
1152   ScmObj x_scm;
1153   u_int x;
1154   SCM_ENTER_SUBR("sys-ntohs");
1155   x_scm = SCM_ARGREF(0);
1156   if (!SCM_UINTP(x_scm)) Scm_Error("C integer required, but got %S", x_scm);
1157   x = Scm_GetIntegerU(x_scm);
1158   {
1159 {
1160 u_int SCM_RESULT;
1161 SCM_RESULT = ntohs(x);
1162 SCM_RETURN(Scm_MakeIntegerFromUI(SCM_RESULT));
1163 }
1164   }
1165 }
1166 
1167 static SCM_DEFINE_STRING_CONST(netlib_sys_ntohs__NAME, "sys-ntohs", 9, 9);
1168 static SCM_DEFINE_SUBR(netlib_sys_ntohs__STUB, 1, 0, SCM_OBJ(&netlib_sys_ntohs__NAME), netlib_sys_ntohs, NULL, NULL);
1169 
1170 static ScmObj netlib_sys_htonl(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1171 {
1172   ScmObj x_scm;
1173   u_int x;
1174   SCM_ENTER_SUBR("sys-htonl");
1175   x_scm = SCM_ARGREF(0);
1176   if (!SCM_UINTEGERP(x_scm)) Scm_Error("C integer required, but got %S", x_scm);
1177   x = Scm_GetIntegerU(x_scm);
1178   {
1179 {
1180 u_int SCM_RESULT;
1181 SCM_RESULT = htonl(x);
1182 SCM_RETURN(Scm_MakeIntegerFromUI(SCM_RESULT));
1183 }
1184   }
1185 }
1186 
1187 static SCM_DEFINE_STRING_CONST(netlib_sys_htonl__NAME, "sys-htonl", 9, 9);
1188 static SCM_DEFINE_SUBR(netlib_sys_htonl__STUB, 1, 0, SCM_OBJ(&netlib_sys_htonl__NAME), netlib_sys_htonl, NULL, NULL);
1189 
1190 static ScmObj netlib_sys_htons(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1191 {
1192   ScmObj x_scm;
1193   u_int x;
1194   SCM_ENTER_SUBR("sys-htons");
1195   x_scm = SCM_ARGREF(0);
1196   if (!SCM_UINTP(x_scm)) Scm_Error("C integer required, but got %S", x_scm);
1197   x = Scm_GetIntegerU(x_scm);
1198   {
1199 {
1200 u_int SCM_RESULT;
1201 SCM_RESULT = htons(x);
1202 SCM_RETURN(Scm_MakeIntegerFromUI(SCM_RESULT));
1203 }
1204   }
1205 }
1206 
1207 static SCM_DEFINE_STRING_CONST(netlib_sys_htons__NAME, "sys-htons", 9, 9);
1208 static SCM_DEFINE_SUBR(netlib_sys_htons__STUB, 1, 0, SCM_OBJ(&netlib_sys_htons__NAME), netlib_sys_htons, NULL, NULL);
1209 
1210 extern ScmObj addrinfo_allocate(ScmClass *klass, ScmObj initargs);
1211 #if defined HAVE_IPV6
1212 SCM_DEFINE_BUILTIN_CLASS(Scm_SysAddrinfoClass, NULL, NULL, NULL, addrinfo_allocate, SCM_CLASS_DEFAULT_CPL);
1213 
1214 static ScmObj Scm_SysAddrinfoClass_flags_GET(ScmObj OBJARG)
1215 {
1216   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1217   return Scm_MakeInteger(obj->flags);
1218 }
1219 
1220 static void Scm_SysAddrinfoClass_flags_SET(ScmObj OBJARG, ScmObj value)
1221 {
1222   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1223   if (!SCM_EXACTP(value)) Scm_Error("int required, but got %S", value);
1224   obj->flags = Scm_GetInteger(value);
1225 }
1226 
1227 static ScmObj Scm_SysAddrinfoClass_family_GET(ScmObj OBJARG)
1228 {
1229   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1230   return Scm_MakeInteger(obj->family);
1231 }
1232 
1233 static void Scm_SysAddrinfoClass_family_SET(ScmObj OBJARG, ScmObj value)
1234 {
1235   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1236   if (!SCM_EXACTP(value)) Scm_Error("int required, but got %S", value);
1237   obj->family = Scm_GetInteger(value);
1238 }
1239 
1240 static ScmObj Scm_SysAddrinfoClass_socktype_GET(ScmObj OBJARG)
1241 {
1242   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1243   return Scm_MakeInteger(obj->socktype);
1244 }
1245 
1246 static void Scm_SysAddrinfoClass_socktype_SET(ScmObj OBJARG, ScmObj value)
1247 {
1248   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1249   if (!SCM_EXACTP(value)) Scm_Error("int required, but got %S", value);
1250   obj->socktype = Scm_GetInteger(value);
1251 }
1252 
1253 static ScmObj Scm_SysAddrinfoClass_protocol_GET(ScmObj OBJARG)
1254 {
1255   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1256   return Scm_MakeInteger(obj->protocol);
1257 }
1258 
1259 static void Scm_SysAddrinfoClass_protocol_SET(ScmObj OBJARG, ScmObj value)
1260 {
1261   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1262   if (!SCM_EXACTP(value)) Scm_Error("int required, but got %S", value);
1263   obj->protocol = Scm_GetInteger(value);
1264 }
1265 
1266 static ScmObj Scm_SysAddrinfoClass_addrlen_GET(ScmObj OBJARG)
1267 {
1268   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1269   return Scm_MakeIntegerFromUI(obj->addrlen);
1270 }
1271 
1272 static void Scm_SysAddrinfoClass_addrlen_SET(ScmObj OBJARG, ScmObj value)
1273 {
1274   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1275   if (!SCM_UINTEGERP(value)) Scm_Error("u_int required, but got %S", value);
1276   obj->addrlen = Scm_GetIntegerU(value);
1277 }
1278 
1279 static ScmObj Scm_SysAddrinfoClass_canonname_GET(ScmObj OBJARG)
1280 {
1281   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1282   return SCM_OBJ_SAFE(obj->canonname);
1283 }
1284 
1285 static void Scm_SysAddrinfoClass_canonname_SET(ScmObj OBJARG, ScmObj value)
1286 {
1287   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1288   if (!SCM_STRINGP(value)) Scm_Error("ScmString* required, but got %S", value);
1289   obj->canonname = SCM_STRING(value);
1290 }
1291 
1292 static ScmObj Scm_SysAddrinfoClass_addr_GET(ScmObj OBJARG)
1293 {
1294   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1295   return SCM_OBJ_SAFE(obj->addr);
1296 }
1297 
1298 static void Scm_SysAddrinfoClass_addr_SET(ScmObj OBJARG, ScmObj value)
1299 {
1300   ScmSysAddrinfo* obj = SCM_SYS_ADDRINFO(OBJARG);
1301   if (!SCM_SOCKADDRP(value)) Scm_Error("ScmSockAddr* required, but got %S", value);
1302   obj->addr = SCM_SOCKADDR(value);
1303 }
1304 
1305 static ScmClassStaticSlotSpec Scm_SysAddrinfoClass__SLOTS[] = {
1306   SCM_CLASS_SLOT_SPEC("flags", Scm_SysAddrinfoClass_flags_GET, Scm_SysAddrinfoClass_flags_SET),
1307   SCM_CLASS_SLOT_SPEC("family", Scm_SysAddrinfoClass_family_GET, Scm_SysAddrinfoClass_family_SET),
1308   SCM_CLASS_SLOT_SPEC("socktype", Scm_SysAddrinfoClass_socktype_GET, Scm_SysAddrinfoClass_socktype_SET),
1309   SCM_CLASS_SLOT_SPEC("protocol", Scm_SysAddrinfoClass_protocol_GET, Scm_SysAddrinfoClass_protocol_SET),
1310   SCM_CLASS_SLOT_SPEC("addrlen", Scm_SysAddrinfoClass_addrlen_GET, Scm_SysAddrinfoClass_addrlen_SET),
1311   SCM_CLASS_SLOT_SPEC("canonname", Scm_SysAddrinfoClass_canonname_GET, Scm_SysAddrinfoClass_canonname_SET),
1312   SCM_CLASS_SLOT_SPEC("addr", Scm_SysAddrinfoClass_addr_GET, Scm_SysAddrinfoClass_addr_SET),
1313   { NULL }
1314 };
1315 
1316 #endif /*defined HAVE_IPV6*/
1317 #if defined HAVE_IPV6
1318 static ScmObj netlib_sys_getaddrinfo(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1319 {
1320   ScmObj nodename_scm;
1321   const char * nodename;
1322   ScmObj servname_scm;
1323   const char * servname;
1324   ScmObj hints_scm;
1325   ScmObj hints;
1326   SCM_ENTER_SUBR("sys-getaddrinfo");
1327   nodename_scm = SCM_ARGREF(0);
1328   if (!SCM_MAYBE_P(SCM_STRINGP, nodename_scm)) Scm_Error("const C string or #f required, but got %S", nodename_scm);
1329   nodename = SCM_MAYBE(SCM_STRING_CONST_CSTRING, nodename_scm);
1330   servname_scm = SCM_ARGREF(1);
1331   if (!SCM_MAYBE_P(SCM_STRINGP, servname_scm)) Scm_Error("const C string or #f required, but got %S", servname_scm);
1332   servname = SCM_MAYBE(SCM_STRING_CONST_CSTRING, servname_scm);
1333   hints_scm = SCM_ARGREF(2);
1334   hints = (hints_scm);
1335   {
1336   struct addrinfo ai;
1337   if (!SCM_SYS_ADDRINFO_P(hints) && !SCM_FALSEP(hints))
1338     Scm_Error("<sys-addrinfo> or #f required, but got %S", hints);
1339   if (!SCM_FALSEP(hints)) {
1340     memset(&ai, 0, sizeof(ai));
1341     ai.ai_flags = SCM_SYS_ADDRINFO(hints)->flags;
1342     ai.ai_family = SCM_SYS_ADDRINFO(hints)->family;
1343     ai.ai_socktype = SCM_SYS_ADDRINFO(hints)->socktype;
1344     ai.ai_protocol = SCM_SYS_ADDRINFO(hints)->protocol;
1345   }
1346   SCM_RETURN(Scm_GetAddrinfo(nodename, servname,
1347                              SCM_FALSEP(hints) ? NULL : &ai));
1348   }
1349 }
1350 
1351 static SCM_DEFINE_STRING_CONST(netlib_sys_getaddrinfo__NAME, "sys-getaddrinfo", 15, 15);
1352 static SCM_DEFINE_SUBR(netlib_sys_getaddrinfo__STUB, 3, 0, SCM_OBJ(&netlib_sys_getaddrinfo__NAME), netlib_sys_getaddrinfo, NULL, NULL);
1353 
1354 #endif /*defined HAVE_IPV6*/
1355 #if defined HAVE_IPV6
1356 static ScmObj netlib_sys_getnameinfo(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1357 {
1358   ScmObj addr_scm;
1359   ScmSockAddr* addr;
1360   ScmObj flags_scm;
1361   int flags;
1362   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
1363   SCM_ENTER_SUBR("sys-getnameinfo");
1364   if (Scm_Length(SCM_OPTARGS) > 1)
1365     Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS));
1366   addr_scm = SCM_ARGREF(0);
1367   if (!Scm_SockAddrP(addr_scm)) Scm_Error("socket address required, but got %S", addr_scm);
1368   addr = SCM_SOCKADDR(addr_scm);
1369   if (SCM_NULLP(SCM_OPTARGS)) flags_scm = SCM_UNBOUND;
1370   else {
1371     flags_scm = SCM_CAR(SCM_OPTARGS);
1372     SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
1373   }
1374   if (!SCM_INTP(flags_scm)) Scm_Error("small integer required, but got %S", flags_scm);
1375   flags = SCM_INT_VALUE(flags_scm);
1376   {
1377 {
1378 ScmObj SCM_RESULT;
1379 SCM_RESULT = Scm_GetNameinfo(addr, flags);
1380 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1381 }
1382   }
1383 }
1384 
1385 static SCM_DEFINE_STRING_CONST(netlib_sys_getnameinfo__NAME, "sys-getnameinfo", 15, 15);
1386 static SCM_DEFINE_SUBR(netlib_sys_getnameinfo__STUB, 1, 1, SCM_OBJ(&netlib_sys_getnameinfo__NAME), netlib_sys_getnameinfo, NULL, NULL);
1387 
1388 #endif /*defined HAVE_IPV6*/
1389 #if defined(AF_INET6)
1390 static SCM_DEFINE_STRING_CONST(netlib_AF_INET6__VAR__NAME, "AF_INET6", 8, 8);
1391 static ScmObj netlib_AF_INET6__VAR = SCM_UNBOUND;
1392 #endif /*defined(AF_INET6)*/
1393 #if defined(PF_INET6)
1394 static SCM_DEFINE_STRING_CONST(netlib_PF_INET6__VAR__NAME, "PF_INET6", 8, 8);
1395 static ScmObj netlib_PF_INET6__VAR = SCM_UNBOUND;
1396 #endif /*defined(PF_INET6)*/
1397 #if defined(IPPROTO_IPV6)
1398 static SCM_DEFINE_STRING_CONST(netlib_IPPROTO_IPV6__VAR__NAME, "IPPROTO_IPV6", 12, 12);
1399 static ScmObj netlib_IPPROTO_IPV6__VAR = SCM_UNBOUND;
1400 #endif /*defined(IPPROTO_IPV6)*/
1401 #if defined(IPV6_UNICAST_HOPS)
1402 static SCM_DEFINE_STRING_CONST(netlib_IPV6_UNICAST_HOPS__VAR__NAME, "IPV6_UNICAST_HOPS", 17, 17);
1403 static ScmObj netlib_IPV6_UNICAST_HOPS__VAR = SCM_UNBOUND;
1404 #endif /*defined(IPV6_UNICAST_HOPS)*/
1405 #if defined(IPV6_MULTICAST_IF)
1406 static SCM_DEFINE_STRING_CONST(netlib_IPV6_MULTICAST_IF__VAR__NAME, "IPV6_MULTICAST_IF", 17, 17);
1407 static ScmObj netlib_IPV6_MULTICAST_IF__VAR = SCM_UNBOUND;
1408 #endif /*defined(IPV6_MULTICAST_IF)*/
1409 #if defined(IPV6_MULTICAST_HOPS)
1410 static SCM_DEFINE_STRING_CONST(netlib_IPV6_MULTICAST_HOPS__VAR__NAME, "IPV6_MULTICAST_HOPS", 19, 19);
1411 static ScmObj netlib_IPV6_MULTICAST_HOPS__VAR = SCM_UNBOUND;
1412 #endif /*defined(IPV6_MULTICAST_HOPS)*/
1413 #if defined(IPV6_MULTICAST_LOOP)
1414 static SCM_DEFINE_STRING_CONST(netlib_IPV6_MULTICAST_LOOP__VAR__NAME, "IPV6_MULTICAST_LOOP", 19, 19);
1415 static ScmObj netlib_IPV6_MULTICAST_LOOP__VAR = SCM_UNBOUND;
1416 #endif /*defined(IPV6_MULTICAST_LOOP)*/
1417 #if defined(IPV6_JOIN_GROUP)
1418 static SCM_DEFINE_STRING_CONST(netlib_IPV6_JOIN_GROUP__VAR__NAME, "IPV6_JOIN_GROUP", 15, 15);
1419 static ScmObj netlib_IPV6_JOIN_GROUP__VAR = SCM_UNBOUND;
1420 #endif /*defined(IPV6_JOIN_GROUP)*/
1421 #if defined(IPV6_LEAVE_GROUP)
1422 static SCM_DEFINE_STRING_CONST(netlib_IPV6_LEAVE_GROUP__VAR__NAME, "IPV6_LEAVE_GROUP", 16, 16);
1423 static ScmObj netlib_IPV6_LEAVE_GROUP__VAR = SCM_UNBOUND;
1424 #endif /*defined(IPV6_LEAVE_GROUP)*/
1425 #if defined(IPV6_V6ONLY)
1426 static SCM_DEFINE_STRING_CONST(netlib_IPV6_V6ONLY__VAR__NAME, "IPV6_V6ONLY", 11, 11);
1427 static ScmObj netlib_IPV6_V6ONLY__VAR = SCM_UNBOUND;
1428 #endif /*defined(IPV6_V6ONLY)*/
1429 #if defined(AI_PASSIVE)
1430 static SCM_DEFINE_STRING_CONST(netlib_AI_PASSIVE__VAR__NAME, "AI_PASSIVE", 10, 10);
1431 static ScmObj netlib_AI_PASSIVE__VAR = SCM_UNBOUND;
1432 #endif /*defined(AI_PASSIVE)*/
1433 #if defined(AI_CANONNAME)
1434 static SCM_DEFINE_STRING_CONST(netlib_AI_CANONNAME__VAR__NAME, "AI_CANONNAME", 12, 12);
1435 static ScmObj netlib_AI_CANONNAME__VAR = SCM_UNBOUND;
1436 #endif /*defined(AI_CANONNAME)*/
1437 #if defined(AI_NUMERICHOST)
1438 static SCM_DEFINE_STRING_CONST(netlib_AI_NUMERICHOST__VAR__NAME, "AI_NUMERICHOST", 14, 14);
1439 static ScmObj netlib_AI_NUMERICHOST__VAR = SCM_UNBOUND;
1440 #endif /*defined(AI_NUMERICHOST)*/
1441 #if defined(AI_NUMERICSERV)
1442 static SCM_DEFINE_STRING_CONST(netlib_AI_NUMERICSERV__VAR__NAME, "AI_NUMERICSERV", 14, 14);
1443 static ScmObj netlib_AI_NUMERICSERV__VAR = SCM_UNBOUND;
1444 #endif /*defined(AI_NUMERICSERV)*/
1445 #if defined(AI_V4MAPPED)
1446 static SCM_DEFINE_STRING_CONST(netlib_AI_V4MAPPED__VAR__NAME, "AI_V4MAPPED", 11, 11);
1447 static ScmObj netlib_AI_V4MAPPED__VAR = SCM_UNBOUND;
1448 #endif /*defined(AI_V4MAPPED)*/
1449 #if defined(AI_ALL)
1450 static SCM_DEFINE_STRING_CONST(netlib_AI_ALL__VAR__NAME, "AI_ALL", 6, 6);
1451 static ScmObj netlib_AI_ALL__VAR = SCM_UNBOUND;
1452 #endif /*defined(AI_ALL)*/
1453 #if defined(AI_ADDRCONFIG)
1454 static SCM_DEFINE_STRING_CONST(netlib_AI_ADDRCONFIG__VAR__NAME, "AI_ADDRCONFIG", 13, 13);
1455 static ScmObj netlib_AI_ADDRCONFIG__VAR = SCM_UNBOUND;
1456 #endif /*defined(AI_ADDRCONFIG)*/
1457 #if defined(NI_NOFQDN)
1458 static SCM_DEFINE_STRING_CONST(netlib_NI_NOFQDN__VAR__NAME, "NI_NOFQDN", 9, 9);
1459 static ScmObj netlib_NI_NOFQDN__VAR = SCM_UNBOUND;
1460 #endif /*defined(NI_NOFQDN)*/
1461 #if defined(NI_NUMERICHOST)
1462 static SCM_DEFINE_STRING_CONST(netlib_NI_NUMERICHOST__VAR__NAME, "NI_NUMERICHOST", 14, 14);
1463 static ScmObj netlib_NI_NUMERICHOST__VAR = SCM_UNBOUND;
1464 #endif /*defined(NI_NUMERICHOST)*/
1465 #if defined(NI_NAMEREQD)
1466 static SCM_DEFINE_STRING_CONST(netlib_NI_NAMEREQD__VAR__NAME, "NI_NAMEREQD", 11, 11);
1467 static ScmObj netlib_NI_NAMEREQD__VAR = SCM_UNBOUND;
1468 #endif /*defined(NI_NAMEREQD)*/
1469 #if defined(NI_NUMERICSERV)
1470 static SCM_DEFINE_STRING_CONST(netlib_NI_NUMERICSERV__VAR__NAME, "NI_NUMERICSERV", 14, 14);
1471 static ScmObj netlib_NI_NUMERICSERV__VAR = SCM_UNBOUND;
1472 #endif /*defined(NI_NUMERICSERV)*/
1473 #if defined(NI_DGRAM)
1474 static SCM_DEFINE_STRING_CONST(netlib_NI_DGRAM__VAR__NAME, "NI_DGRAM", 8, 8);
1475 static ScmObj netlib_NI_DGRAM__VAR = SCM_UNBOUND;
1476 #endif /*defined(NI_DGRAM)*/
1477 void Scm_Init_netlib(ScmModule *module)
1478 {
1479 
1480 #if defined(NI_DGRAM)
1481   netlib_NI_DGRAM__VAR = Scm_Intern(&netlib_NI_DGRAM__VAR__NAME);
1482   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_NI_DGRAM__VAR)), SCM_OBJ(Scm_MakeInteger(NI_DGRAM)));
1483 #endif /* defined(NI_DGRAM) */
1484 #if defined(NI_NUMERICSERV)
1485   netlib_NI_NUMERICSERV__VAR = Scm_Intern(&netlib_NI_NUMERICSERV__VAR__NAME);
1486   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_NI_NUMERICSERV__VAR)), SCM_OBJ(Scm_MakeInteger(NI_NUMERICSERV)));
1487 #endif /* defined(NI_NUMERICSERV) */
1488 #if defined(NI_NAMEREQD)
1489   netlib_NI_NAMEREQD__VAR = Scm_Intern(&netlib_NI_NAMEREQD__VAR__NAME);
1490   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_NI_NAMEREQD__VAR)), SCM_OBJ(Scm_MakeInteger(NI_NAMEREQD)));
1491 #endif /* defined(NI_NAMEREQD) */
1492 #if defined(NI_NUMERICHOST)
1493   netlib_NI_NUMERICHOST__VAR = Scm_Intern(&netlib_NI_NUMERICHOST__VAR__NAME);
1494   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_NI_NUMERICHOST__VAR)), SCM_OBJ(Scm_MakeInteger(NI_NUMERICHOST)));
1495 #endif /* defined(NI_NUMERICHOST) */
1496 #if defined(NI_NOFQDN)
1497   netlib_NI_NOFQDN__VAR = Scm_Intern(&netlib_NI_NOFQDN__VAR__NAME);
1498   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_NI_NOFQDN__VAR)), SCM_OBJ(Scm_MakeInteger(NI_NOFQDN)));
1499 #endif /* defined(NI_NOFQDN) */
1500 #if defined(AI_ADDRCONFIG)
1501   netlib_AI_ADDRCONFIG__VAR = Scm_Intern(&netlib_AI_ADDRCONFIG__VAR__NAME);
1502   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AI_ADDRCONFIG__VAR)), SCM_OBJ(Scm_MakeInteger(AI_ADDRCONFIG)));
1503 #endif /* defined(AI_ADDRCONFIG) */
1504 #if defined(AI_ALL)
1505   netlib_AI_ALL__VAR = Scm_Intern(&netlib_AI_ALL__VAR__NAME);
1506   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AI_ALL__VAR)), SCM_OBJ(Scm_MakeInteger(AI_ALL)));
1507 #endif /* defined(AI_ALL) */
1508 #if defined(AI_V4MAPPED)
1509   netlib_AI_V4MAPPED__VAR = Scm_Intern(&netlib_AI_V4MAPPED__VAR__NAME);
1510   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AI_V4MAPPED__VAR)), SCM_OBJ(Scm_MakeInteger(AI_V4MAPPED)));
1511 #endif /* defined(AI_V4MAPPED) */
1512 #if defined(AI_NUMERICSERV)
1513   netlib_AI_NUMERICSERV__VAR = Scm_Intern(&netlib_AI_NUMERICSERV__VAR__NAME);
1514   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AI_NUMERICSERV__VAR)), SCM_OBJ(Scm_MakeInteger(AI_NUMERICSERV)));
1515 #endif /* defined(AI_NUMERICSERV) */
1516 #if defined(AI_NUMERICHOST)
1517   netlib_AI_NUMERICHOST__VAR = Scm_Intern(&netlib_AI_NUMERICHOST__VAR__NAME);
1518   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AI_NUMERICHOST__VAR)), SCM_OBJ(Scm_MakeInteger(AI_NUMERICHOST)));
1519 #endif /* defined(AI_NUMERICHOST) */
1520 #if defined(AI_CANONNAME)
1521   netlib_AI_CANONNAME__VAR = Scm_Intern(&netlib_AI_CANONNAME__VAR__NAME);
1522   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AI_CANONNAME__VAR)), SCM_OBJ(Scm_MakeInteger(AI_CANONNAME)));
1523 #endif /* defined(AI_CANONNAME) */
1524 #if defined(AI_PASSIVE)
1525   netlib_AI_PASSIVE__VAR = Scm_Intern(&netlib_AI_PASSIVE__VAR__NAME);
1526   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AI_PASSIVE__VAR)), SCM_OBJ(Scm_MakeInteger(AI_PASSIVE)));
1527 #endif /* defined(AI_PASSIVE) */
1528 #if defined(IPV6_V6ONLY)
1529   netlib_IPV6_V6ONLY__VAR = Scm_Intern(&netlib_IPV6_V6ONLY__VAR__NAME);
1530   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPV6_V6ONLY__VAR)), SCM_OBJ(Scm_MakeInteger(IPV6_V6ONLY)));
1531 #endif /* defined(IPV6_V6ONLY) */
1532 #if defined(IPV6_LEAVE_GROUP)
1533   netlib_IPV6_LEAVE_GROUP__VAR = Scm_Intern(&netlib_IPV6_LEAVE_GROUP__VAR__NAME);
1534   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPV6_LEAVE_GROUP__VAR)), SCM_OBJ(Scm_MakeInteger(IPV6_LEAVE_GROUP)));
1535 #endif /* defined(IPV6_LEAVE_GROUP) */
1536 #if defined(IPV6_JOIN_GROUP)
1537   netlib_IPV6_JOIN_GROUP__VAR = Scm_Intern(&netlib_IPV6_JOIN_GROUP__VAR__NAME);
1538   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPV6_JOIN_GROUP__VAR)), SCM_OBJ(Scm_MakeInteger(IPV6_JOIN_GROUP)));
1539 #endif /* defined(IPV6_JOIN_GROUP) */
1540 #if defined(IPV6_MULTICAST_LOOP)
1541   netlib_IPV6_MULTICAST_LOOP__VAR = Scm_Intern(&netlib_IPV6_MULTICAST_LOOP__VAR__NAME);
1542   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPV6_MULTICAST_LOOP__VAR)), SCM_OBJ(Scm_MakeInteger(IPV6_MULTICAST_LOOP)));
1543 #endif /* defined(IPV6_MULTICAST_LOOP) */
1544 #if defined(IPV6_MULTICAST_HOPS)
1545   netlib_IPV6_MULTICAST_HOPS__VAR = Scm_Intern(&netlib_IPV6_MULTICAST_HOPS__VAR__NAME);
1546   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPV6_MULTICAST_HOPS__VAR)), SCM_OBJ(Scm_MakeInteger(IPV6_MULTICAST_HOPS)));
1547 #endif /* defined(IPV6_MULTICAST_HOPS) */
1548 #if defined(IPV6_MULTICAST_IF)
1549   netlib_IPV6_MULTICAST_IF__VAR = Scm_Intern(&netlib_IPV6_MULTICAST_IF__VAR__NAME);
1550   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPV6_MULTICAST_IF__VAR)), SCM_OBJ(Scm_MakeInteger(IPV6_MULTICAST_IF)));
1551 #endif /* defined(IPV6_MULTICAST_IF) */
1552 #if defined(IPV6_UNICAST_HOPS)
1553   netlib_IPV6_UNICAST_HOPS__VAR = Scm_Intern(&netlib_IPV6_UNICAST_HOPS__VAR__NAME);
1554   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPV6_UNICAST_HOPS__VAR)), SCM_OBJ(Scm_MakeInteger(IPV6_UNICAST_HOPS)));
1555 #endif /* defined(IPV6_UNICAST_HOPS) */
1556 #if defined(IPPROTO_IPV6)
1557   netlib_IPPROTO_IPV6__VAR = Scm_Intern(&netlib_IPPROTO_IPV6__VAR__NAME);
1558   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPPROTO_IPV6__VAR)), SCM_OBJ(Scm_MakeInteger(IPPROTO_IPV6)));
1559 #endif /* defined(IPPROTO_IPV6) */
1560 #if defined(PF_INET6)
1561   netlib_PF_INET6__VAR = Scm_Intern(&netlib_PF_INET6__VAR__NAME);
1562   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_PF_INET6__VAR)), SCM_OBJ(Scm_MakeInteger(PF_INET6)));
1563 #endif /* defined(PF_INET6) */
1564 #if defined(AF_INET6)
1565   netlib_AF_INET6__VAR = Scm_Intern(&netlib_AF_INET6__VAR__NAME);
1566   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AF_INET6__VAR)), SCM_OBJ(Scm_MakeInteger(AF_INET6)));
1567 #endif /* defined(AF_INET6) */
1568 #if defined HAVE_IPV6
1569   SCM_DEFINE(module, "sys-getnameinfo", SCM_OBJ(&netlib_sys_getnameinfo__STUB));
1570 #endif /* defined HAVE_IPV6 */
1571 #if defined HAVE_IPV6
1572   SCM_DEFINE(module, "sys-getaddrinfo", SCM_OBJ(&netlib_sys_getaddrinfo__STUB));
1573 #endif /* defined HAVE_IPV6 */
1574 #if defined HAVE_IPV6
1575   Scm_InitBuiltinClass(&Scm_SysAddrinfoClass, "<sys-addrinfo>", Scm_SysAddrinfoClass__SLOTS, TRUE, module);
1576 #endif /* defined HAVE_IPV6 */
1577   SCM_DEFINE(module, "sys-htons", SCM_OBJ(&netlib_sys_htons__STUB));
1578   SCM_DEFINE(module, "sys-htonl", SCM_OBJ(&netlib_sys_htonl__STUB));
1579   SCM_DEFINE(module, "sys-ntohs", SCM_OBJ(&netlib_sys_ntohs__STUB));
1580   SCM_DEFINE(module, "sys-ntohl", SCM_OBJ(&netlib_sys_ntohl__STUB));
1581   SCM_DEFINE(module, "sys-getservbyport", SCM_OBJ(&netlib_sys_getservbyport__STUB));
1582   SCM_DEFINE(module, "sys-getservbyname", SCM_OBJ(&netlib_sys_getservbyname__STUB));
1583   SCM_DEFINE(module, "sys-getprotobynumber", SCM_OBJ(&netlib_sys_getprotobynumber__STUB));
1584   SCM_DEFINE(module, "sys-getprotobyname", SCM_OBJ(&netlib_sys_getprotobyname__STUB));
1585   SCM_DEFINE(module, "sys-gethostbyaddr", SCM_OBJ(&netlib_sys_gethostbyaddr__STUB));
1586   SCM_DEFINE(module, "sys-gethostbyname", SCM_OBJ(&netlib_sys_gethostbyname__STUB));
1587 #if defined(IP_OPTIONS)
1588   netlib_IP_OPTIONS__VAR = Scm_Intern(&netlib_IP_OPTIONS__VAR__NAME);
1589   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IP_OPTIONS__VAR)), SCM_OBJ(Scm_MakeInteger(IP_OPTIONS)));
1590 #endif /* defined(IP_OPTIONS) */
1591 #if defined(SOL_IP)
1592   netlib_SOL_IP__VAR = Scm_Intern(&netlib_SOL_IP__VAR__NAME);
1593   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SOL_IP__VAR)), SCM_OBJ(Scm_MakeInteger(SOL_IP)));
1594 #endif /* defined(SOL_IP) */
1595 #if defined(TCP_CORK)
1596   netlib_TCP_CORK__VAR = Scm_Intern(&netlib_TCP_CORK__VAR__NAME);
1597   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_TCP_CORK__VAR)), SCM_OBJ(Scm_MakeInteger(TCP_CORK)));
1598 #endif /* defined(TCP_CORK) */
1599 #if defined(TCP_MAXSEG)
1600   netlib_TCP_MAXSEG__VAR = Scm_Intern(&netlib_TCP_MAXSEG__VAR__NAME);
1601   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_TCP_MAXSEG__VAR)), SCM_OBJ(Scm_MakeInteger(TCP_MAXSEG)));
1602 #endif /* defined(TCP_MAXSEG) */
1603 #if defined(TCP_NODELAY)
1604   netlib_TCP_NODELAY__VAR = Scm_Intern(&netlib_TCP_NODELAY__VAR__NAME);
1605   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_TCP_NODELAY__VAR)), SCM_OBJ(Scm_MakeInteger(TCP_NODELAY)));
1606 #endif /* defined(TCP_NODELAY) */
1607 #if defined(SOL_TCP)
1608   netlib_SOL_TCP__VAR = Scm_Intern(&netlib_SOL_TCP__VAR__NAME);
1609   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SOL_TCP__VAR)), SCM_OBJ(Scm_MakeInteger(SOL_TCP)));
1610 #endif /* defined(SOL_TCP) */
1611 #if defined(SO_ERROR)
1612   netlib_SO_ERROR__VAR = Scm_Intern(&netlib_SO_ERROR__VAR__NAME);
1613   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SO_ERROR__VAR)), SCM_OBJ(Scm_MakeInteger(SO_ERROR)));
1614 #endif /* defined(SO_ERROR) */
1615 #if defined(SO_PRIORITY)
1616   netlib_SO_PRIORITY__VAR = Scm_Intern(&netlib_SO_PRIORITY__VAR__NAME);
1617   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SO_PRIORITY__VAR)), SCM_OBJ(Scm_MakeInteger(SO_PRIORITY)));
1618 #endif /* defined(SO_PRIORITY) */
1619 #if defined(SO_RFCBUF)
1620   netlib_SO_RFCBUF__VAR = Scm_Intern(&netlib_SO_RFCBUF__VAR__NAME);
1621   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SO_RFCBUF__VAR)), SCM_OBJ(Scm_MakeInteger(SO_RFCBUF)));
1622 #endif /* defined(SO_RFCBUF) */
1623 #if defined(SO_SNDBUF)
1624   netlib_SO_SNDBUF__VAR = Scm_Intern(&netlib_SO_SNDBUF__VAR__NAME);
1625   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SO_SNDBUF__VAR)), SCM_OBJ(Scm_MakeInteger(SO_SNDBUF)));
1626 #endif /* defined(SO_SNDBUF) */
1627 #if defined(SO_BROADCAST)
1628   netlib_SO_BROADCAST__VAR = Scm_Intern(&netlib_SO_BROADCAST__VAR__NAME);
1629   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SO_BROADCAST__VAR)), SCM_OBJ(Scm_MakeInteger(SO_BROADCAST)));
1630 #endif /* defined(SO_BROADCAST) */
1631 #if defined(SO_TYPE)
1632   netlib_SO_TYPE__VAR = Scm_Intern(&netlib_SO_TYPE__VAR__NAME);
1633   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SO_TYPE__VAR)), SCM_OBJ(Scm_MakeInteger(SO_TYPE)));
1634 #endif /* defined(SO_TYPE) */
1635 #if defined(SO_REUSEADDR)
1636   netlib_SO_REUSEADDR__VAR = Scm_Intern(&netlib_SO_REUSEADDR__VAR__NAME);
1637   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SO_REUSEADDR__VAR)), SCM_OBJ(Scm_MakeInteger(SO_REUSEADDR)));
1638 #endif /* defined(SO_REUSEADDR) */
1639 #if defined(SO_OOBINLINE)
1640   netlib_SO_OOBINLINE__VAR = Scm_Intern(&netlib_SO_OOBINLINE__VAR__NAME);
1641   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SO_OOBINLINE__VAR)), SCM_OBJ(Scm_MakeInteger(SO_OOBINLINE)));
1642 #endif /* defined(SO_OOBINLINE) */
1643 #if defined(SO_KEEPALIVE)
1644   netlib_SO_KEEPALIVE__VAR = Scm_Intern(&netlib_SO_KEEPALIVE__VAR__NAME);
1645   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SO_KEEPALIVE__VAR)), SCM_OBJ(Scm_MakeInteger(SO_KEEPALIVE)));
1646 #endif /* defined(SO_KEEPALIVE) */
1647 #if defined(SOL_SOCKET)
1648   netlib_SOL_SOCKET__VAR = Scm_Intern(&netlib_SOL_SOCKET__VAR__NAME);
1649   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SOL_SOCKET__VAR)), SCM_OBJ(Scm_MakeInteger(SOL_SOCKET)));
1650 #endif /* defined(SOL_SOCKET) */
1651   SCM_DEFINE(module, "socket-getsockopt", SCM_OBJ(&netlib_socket_getsockopt__STUB));
1652   SCM_DEFINE(module, "socket-setsockopt", SCM_OBJ(&netlib_socket_setsockopt__STUB));
1653   SCM_DEFINE(module, "socket-recvfrom", SCM_OBJ(&netlib_socket_recvfrom__STUB));
1654   SCM_DEFINE(module, "socket-recv", SCM_OBJ(&netlib_socket_recv__STUB));
1655   SCM_DEFINE(module, "socket-sendto", SCM_OBJ(&netlib_socket_sendto__STUB));
1656   SCM_DEFINE(module, "socket-send", SCM_OBJ(&netlib_socket_send__STUB));
1657   SCM_DEFINE(module, "socket-getpeername", SCM_OBJ(&netlib_socket_getpeername__STUB));
1658   SCM_DEFINE(module, "socket-getsockname", SCM_OBJ(&netlib_socket_getsockname__STUB));
1659   SCM_DEFINE(module, "socket-connect", SCM_OBJ(&netlib_socket_connect__STUB));
1660   SCM_DEFINE(module, "socket-accept", SCM_OBJ(&netlib_socket_accept__STUB));
1661   SCM_DEFINE(module, "socket-listen", SCM_OBJ(&netlib_socket_listen__STUB));
1662   SCM_DEFINE(module, "socket-bind", SCM_OBJ(&netlib_socket_bind__STUB));
1663   SCM_DEFINE(module, "socket-close", SCM_OBJ(&netlib_socket_close__STUB));
1664   SCM_DEFINE(module, "socket-shutdown", SCM_OBJ(&netlib_socket_shutdown__STUB));
1665   SCM_DEFINE(module, "socket-output-port", SCM_OBJ(&netlib_socket_output_port__STUB));
1666   KEYARG_bufferedP = Scm_MakeKeyword(&KEYARG_bufferedP__NAME);
1667   KEYARG_buffering = Scm_MakeKeyword(&KEYARG_buffering__NAME);
1668   SCM_DEFINE(module, "socket-input-port", SCM_OBJ(&netlib_socket_input_port__STUB));
1669   SCM_DEFINE(module, "socket-fd", SCM_OBJ(&netlib_socket_fd__STUB));
1670   SCM_DEFINE(module, "socket-status", SCM_OBJ(&netlib_socket_status__STUB));
1671   sym_closed = Scm_Intern(&sym_closed__NAME);
1672   sym_shutdown = Scm_Intern(&sym_shutdown__NAME);
1673   sym_connected = Scm_Intern(&sym_connected__NAME);
1674   sym_listening = Scm_Intern(&sym_listening__NAME);
1675   sym_bound = Scm_Intern(&sym_bound__NAME);
1676   sym_none = Scm_Intern(&sym_none__NAME);
1677   SCM_DEFINE(module, "socket-address", SCM_OBJ(&netlib_socket_address__STUB));
1678 #if defined(IPPROTO_UDP)
1679   netlib_IPPROTO_UDP__VAR = Scm_Intern(&netlib_IPPROTO_UDP__VAR__NAME);
1680   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPPROTO_UDP__VAR)), SCM_OBJ(Scm_MakeInteger(IPPROTO_UDP)));
1681 #endif /* defined(IPPROTO_UDP) */
1682 #if defined(IPPROTO_TCP)
1683   netlib_IPPROTO_TCP__VAR = Scm_Intern(&netlib_IPPROTO_TCP__VAR__NAME);
1684   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPPROTO_TCP__VAR)), SCM_OBJ(Scm_MakeInteger(IPPROTO_TCP)));
1685 #endif /* defined(IPPROTO_TCP) */
1686 #if defined(IPPROTO_ICMP)
1687   netlib_IPPROTO_ICMP__VAR = Scm_Intern(&netlib_IPPROTO_ICMP__VAR__NAME);
1688   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPPROTO_ICMP__VAR)), SCM_OBJ(Scm_MakeInteger(IPPROTO_ICMP)));
1689 #endif /* defined(IPPROTO_ICMP) */
1690 #if defined(IPPROTO_IP)
1691   netlib_IPPROTO_IP__VAR = Scm_Intern(&netlib_IPPROTO_IP__VAR__NAME);
1692   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_IPPROTO_IP__VAR)), SCM_OBJ(Scm_MakeInteger(IPPROTO_IP)));
1693 #endif /* defined(IPPROTO_IP) */
1694 #if defined(MSG_WAITALL)
1695   netlib_MSG_WAITALL__VAR = Scm_Intern(&netlib_MSG_WAITALL__VAR__NAME);
1696   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_MSG_WAITALL__VAR)), SCM_OBJ(Scm_MakeInteger(MSG_WAITALL)));
1697 #endif /* defined(MSG_WAITALL) */
1698 #if defined(MSG_TRUNC)
1699   netlib_MSG_TRUNC__VAR = Scm_Intern(&netlib_MSG_TRUNC__VAR__NAME);
1700   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_MSG_TRUNC__VAR)), SCM_OBJ(Scm_MakeInteger(MSG_TRUNC)));
1701 #endif /* defined(MSG_TRUNC) */
1702 #if defined(MSG_PEEK)
1703   netlib_MSG_PEEK__VAR = Scm_Intern(&netlib_MSG_PEEK__VAR__NAME);
1704   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_MSG_PEEK__VAR)), SCM_OBJ(Scm_MakeInteger(MSG_PEEK)));
1705 #endif /* defined(MSG_PEEK) */
1706 #if defined(MSG_OOB)
1707   netlib_MSG_OOB__VAR = Scm_Intern(&netlib_MSG_OOB__VAR__NAME);
1708   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_MSG_OOB__VAR)), SCM_OBJ(Scm_MakeInteger(MSG_OOB)));
1709 #endif /* defined(MSG_OOB) */
1710 #if defined(MSG_EOR)
1711   netlib_MSG_EOR__VAR = Scm_Intern(&netlib_MSG_EOR__VAR__NAME);
1712   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_MSG_EOR__VAR)), SCM_OBJ(Scm_MakeInteger(MSG_EOR)));
1713 #endif /* defined(MSG_EOR) */
1714 #if defined(MSG_DONTROUTE)
1715   netlib_MSG_DONTROUTE__VAR = Scm_Intern(&netlib_MSG_DONTROUTE__VAR__NAME);
1716   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_MSG_DONTROUTE__VAR)), SCM_OBJ(Scm_MakeInteger(MSG_DONTROUTE)));
1717 #endif /* defined(MSG_DONTROUTE) */
1718 #if defined(MSG_CTRUNC)
1719   netlib_MSG_CTRUNC__VAR = Scm_Intern(&netlib_MSG_CTRUNC__VAR__NAME);
1720   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_MSG_CTRUNC__VAR)), SCM_OBJ(Scm_MakeInteger(MSG_CTRUNC)));
1721 #endif /* defined(MSG_CTRUNC) */
1722   netlib_SOCK_RAW__VAR = Scm_Intern(&netlib_SOCK_RAW__VAR__NAME);
1723   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SOCK_RAW__VAR)), SCM_OBJ(Scm_MakeInteger(SOCK_RAW)));
1724   netlib_SOCK_DGRAM__VAR = Scm_Intern(&netlib_SOCK_DGRAM__VAR__NAME);
1725   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SOCK_DGRAM__VAR)), SCM_OBJ(Scm_MakeInteger(SOCK_DGRAM)));
1726   netlib_SOCK_STREAM__VAR = Scm_Intern(&netlib_SOCK_STREAM__VAR__NAME);
1727   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_SOCK_STREAM__VAR)), SCM_OBJ(Scm_MakeInteger(SOCK_STREAM)));
1728   netlib_AF_INET__VAR = Scm_Intern(&netlib_AF_INET__VAR__NAME);
1729   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AF_INET__VAR)), SCM_OBJ(Scm_MakeInteger(AF_INET)));
1730   netlib_AF_UNIX__VAR = Scm_Intern(&netlib_AF_UNIX__VAR__NAME);
1731   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AF_UNIX__VAR)), SCM_OBJ(Scm_MakeInteger(AF_UNIX)));
1732   netlib_AF_UNSPEC__VAR = Scm_Intern(&netlib_AF_UNSPEC__VAR__NAME);
1733   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_AF_UNSPEC__VAR)), SCM_OBJ(Scm_MakeInteger(AF_UNSPEC)));
1734   netlib_PF_INET__VAR = Scm_Intern(&netlib_PF_INET__VAR__NAME);
1735   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_PF_INET__VAR)), SCM_OBJ(Scm_MakeInteger(PF_INET)));
1736   netlib_PF_UNIX__VAR = Scm_Intern(&netlib_PF_UNIX__VAR__NAME);
1737   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_PF_UNIX__VAR)), SCM_OBJ(Scm_MakeInteger(PF_UNIX)));
1738   netlib_PF_UNSPEC__VAR = Scm_Intern(&netlib_PF_UNSPEC__VAR__NAME);
1739   Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(netlib_PF_UNSPEC__VAR)), SCM_OBJ(Scm_MakeInteger(PF_UNSPEC)));
1740   SCM_DEFINE(module, "make-socket", SCM_OBJ(&netlib_make_socket__STUB));
1741 #if defined HAVE_IPV6
1742   Scm_InitBuiltinMethod(&netlib_sockaddr_port556__STUB);
1743 #endif /* defined HAVE_IPV6 */
1744 #if defined HAVE_IPV6
1745   Scm_InitBuiltinMethod(&netlib_sockaddr_addr555__STUB);
1746 #endif /* defined HAVE_IPV6 */
1747 #if defined HAVE_IPV6
1748   Scm_InitBuiltinMethod(&netlib_sockaddr_family554__STUB);
1749 #endif /* defined HAVE_IPV6 */
1750 #if defined HAVE_IPV6
1751   Scm_InitBuiltinMethod(&netlib_sockaddr_name553__STUB);
1752 #endif /* defined HAVE_IPV6 */
1753 #if defined HAVE_IPV6
1754   sym_inet6 = Scm_Intern(&sym_inet6__NAME);
1755 #endif /* defined HAVE_IPV6 */
1756   Scm_InitBuiltinMethod(&netlib_sockaddr_port552__STUB);
1757   Scm_InitBuiltinMethod(&netlib_sockaddr_addr551__STUB);
1758   Scm_InitBuiltinMethod(&netlib_sockaddr_family550__STUB);
1759   Scm_InitBuiltinMethod(&netlib_sockaddr_name549__STUB);
1760   Scm_InitBuiltinMethod(&netlib_sockaddr_family548__STUB);
1761   Scm_InitBuiltinMethod(&netlib_sockaddr_name547__STUB);
1762   Scm_InitBuiltinMethod(&netlib_sockaddr_family546__STUB);
1763   Scm_InitBuiltinMethod(&netlib_sockaddr_name545__STUB);
1764   sym_unknown = Scm_Intern(&sym_unknown__NAME);
1765   sym_inet = Scm_Intern(&sym_inet__NAME);
1766   sym_unix = Scm_Intern(&sym_unix__NAME);
1767   Scm_InitBuiltinGeneric(&Scm_GenericSockAddrPort, "sockaddr-port", module);
1768   Scm_InitBuiltinGeneric(&Scm_GenericSockAddrAddr, "sockaddr-addr", module);
1769   Scm_InitBuiltinGeneric(&Scm_GenericSockAddrFamily, "sockaddr-family", module);
1770   Scm_InitBuiltinGeneric(&Scm_GenericSockAddrName, "sockaddr-name", module);
1771 }

/* [<][>][^][v][top][bottom][index][help] */