mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-20 22:29:16 +02:00
55 lines
1.6 KiB
Text
55 lines
1.6 KiB
Text
|
|
(c-system-include "sys/types.h")
|
|
(c-system-include "sys/socket.h")
|
|
(c-system-include "netdb.h")
|
|
|
|
(define-c-struct sockaddr
|
|
predicate: sockaddr?)
|
|
|
|
(define-c-struct addrinfo
|
|
constructor: (make-address-info ai_family ai_socktype ai_protocol)
|
|
finalizer: freeaddrinfo
|
|
predicate: address-info?
|
|
(int ai_family address-info-family)
|
|
(int ai_socktype address-info-socket-type)
|
|
(int ai_protocol address-info-protocol)
|
|
((link sockaddr) ai_addr address-info-address)
|
|
(size_t ai_addrlen address-info-address-length)
|
|
((link addrinfo) ai_next address-info-next))
|
|
|
|
;;> The addrinfo struct accessors.
|
|
;;/
|
|
|
|
(define-c errno (%get-address-info getaddrinfo)
|
|
(string string (maybe-null addrinfo) (result free addrinfo)))
|
|
|
|
;;> Bind a name to a socket.
|
|
|
|
(define-c int bind (int sockaddr int))
|
|
|
|
;;> Listen on a socket.
|
|
|
|
(define-c int listen (int int))
|
|
|
|
;;> Accept a connection on a socket.
|
|
|
|
(define-c int accept (int sockaddr (pointer unsigned)))
|
|
|
|
;;> Create an endpoint for communication.
|
|
|
|
(define-c int socket (int int int))
|
|
|
|
;;> Initiate a connection on a socket.
|
|
|
|
(define-c int connect (int sockaddr int))
|
|
|
|
(define-c-const int (address-family/unix "AF_UNIX"))
|
|
(define-c-const int (address-family/inet "AF_INET"))
|
|
(define-c-const int (socket-type/stream "SOCK_STREAM"))
|
|
(define-c-const int (socket-type/datagram "SOCK_DGRAM"))
|
|
(define-c-const int (socket-type/raw "SOCK_RAW"))
|
|
(define-c-const int (ip-proto/tcp "IPPROTO_TCP"))
|
|
(define-c-const int (ip-proto/udp "IPPROTO_UDP"))
|
|
|
|
;;> The constants for the addrinfo struct.
|
|
;;/
|