/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- netlib_sockaddr_name545
- netlib_sockaddr_family546
- netlib_sockaddr_name547
- netlib_sockaddr_family548
- netlib_sockaddr_name549
- netlib_sockaddr_family550
- netlib_sockaddr_addr551
- netlib_sockaddr_port552
- netlib_sockaddr_name553
- netlib_sockaddr_family554
- netlib_sockaddr_addr555
- netlib_sockaddr_port556
- netlib_make_socket
- netlib_socket_address
- netlib_socket_status
- netlib_socket_fd
- netlib_socket_input_port
- netlib_socket_output_port
- netlib_socket_shutdown
- netlib_socket_close
- netlib_socket_bind
- netlib_socket_listen
- netlib_socket_accept
- netlib_socket_connect
- netlib_socket_getsockname
- netlib_socket_getpeername
- netlib_socket_send
- netlib_socket_sendto
- netlib_socket_recv
- netlib_socket_recvfrom
- netlib_socket_setsockopt
- netlib_socket_getsockopt
- netlib_sys_gethostbyname
- netlib_sys_gethostbyaddr
- netlib_sys_getprotobyname
- netlib_sys_getprotobynumber
- netlib_sys_getservbyname
- netlib_sys_getservbyport
- netlib_sys_ntohl
- netlib_sys_ntohs
- netlib_sys_htonl
- netlib_sys_htons
- Scm_SysAddrinfoClass_flags_GET
- Scm_SysAddrinfoClass_flags_SET
- Scm_SysAddrinfoClass_family_GET
- Scm_SysAddrinfoClass_family_SET
- Scm_SysAddrinfoClass_socktype_GET
- Scm_SysAddrinfoClass_socktype_SET
- Scm_SysAddrinfoClass_protocol_GET
- Scm_SysAddrinfoClass_protocol_SET
- Scm_SysAddrinfoClass_addrlen_GET
- Scm_SysAddrinfoClass_addrlen_SET
- Scm_SysAddrinfoClass_canonname_GET
- Scm_SysAddrinfoClass_canonname_SET
- Scm_SysAddrinfoClass_addr_GET
- Scm_SysAddrinfoClass_addr_SET
- netlib_sys_getaddrinfo
- netlib_sys_getnameinfo
- 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 }