7 * By John Hodge (thePowersGang)
9 #ifndef _SYS_SOCKETS_H_
10 #define _SYS_SOCKETS_H_
12 #include <sys/types.h>
13 #include <stddef.h> // size_t
15 typedef int socklen_t;
27 sa_family_t sa_family;
32 * \brief Values for \a domain of socket()
36 PF_LOCAL, //!< Machine-local comms
39 PF_PACKET //!< Low level packet interface
41 #define PF_UNIX PF_LOCAL
45 SOCK_STREAM, //!< Stream (TCP)
46 SOCK_DGRAM, //!< Datagram (UDP)
48 SOCK_RAW, //!< Raw packet access
49 SOCK_RDM //!< Reliable non-ordered datagrams
53 * \brief Create a new socket descriptor
54 * \param domain Address family
56 extern int socket(int domain, int type, int protocol);
59 * \brief Bind a socket to an address
61 extern int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
64 * \brief Connect to another socket
66 extern int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
69 * \brief Listen for incoming connections
71 extern int listen(int sockfd, int backlog);
74 * \brief Accept an incoming connection
76 extern int accept(int sockfd, struct sockaddr *clientaddr, socklen_t addrlen);
78 extern int recvfrom(int sockfd, void *buffer, size_t length, int flags, struct sockaddr *clientaddr, socklen_t *addrlen);
79 extern int recv(int sockfd, void *buffer, size_t length, int flags);
80 extern int sendto(int sockfd, const void *buffer, size_t length, int flags, const struct sockaddr *clientaddr, socklen_t addrlen);
81 extern int send(int sockfd, void *buffer, size_t length, int flags);