chibi-scheme/lib/chibi/net.stub

57 lines
1.6 KiB
Text

(c-system-include "sys/types.h")
(c-system-include "sys/socket.h")
(c-system-include "netdb.h")
(define-c-int-type socklen_t)
(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 socklen_t)))
;;> 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.
;;/