X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibpsocket.so_src%2Finclude_exp%2Fsys%2Fsocket.h;h=4d2a1c23e5768a2313b5e2336b5c9087bcbd1d0c;hb=bdefac5f54668fcccff11a69619ff31b25595eeb;hp=ecf5ce864c89a0983c021047e39e367d95b7c271;hpb=0dfc38f0ca6b391b15154e3173b5c9504df17f84;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libpsocket.so_src/include_exp/sys/socket.h b/Usermode/Libraries/libpsocket.so_src/include_exp/sys/socket.h index ecf5ce86..4d2a1c23 100644 --- a/Usermode/Libraries/libpsocket.so_src/include_exp/sys/socket.h +++ b/Usermode/Libraries/libpsocket.so_src/include_exp/sys/socket.h @@ -1,25 +1,28 @@ /* - * Acess2 C Library + * Acess2 POSIX Sockets Emulation + * - By John Hodge (thePowersGang) * * sys/sockets.h * - POSIX Sockets - * - * By John Hodge (thePowersGang) */ #ifndef _SYS_SOCKETS_H_ #define _SYS_SOCKETS_H_ #include +#include // size_t +#include // uint32_t -typedef int socklen_t; +typedef uint32_t socklen_t; typedef enum { AF_UNSPEC = 0, AF_PACKET = 1, + AF_LOCAL = 2, AF_INET = 4, AF_INET6 = 6, } sa_family_t; +#define AF_UNIX AF_LOCAL struct sockaddr { @@ -27,11 +30,51 @@ struct sockaddr char sa_data[16]; }; +struct msghdr +{ + void *msg_name; + socklen_t msg_namelen; + struct iovec *msg_iov; + int msg_iovlen; + void *msg_control; + socklen_t msg_controllen; + int msg_flags; +}; + +struct cmsghdr +{ + socklen_t cmsg_len; + int cmsg_level; + int cmsg_type; +}; + +#define SCM_RIGHTS 0x1 + +#define CMSG_DATA(cmsg) ((unsigned char*)(cmsg + 1)) +#define CMSG_NXTHDR(mhdr, cmsg) 0 +#define CMSG_FIRSTHDR(mhdr) 0 + +struct linger +{ + int l_onoff; + int l_linger; +}; + +enum eSocketTypes +{ + SOCK_STREAM, //!< Stream (TCP) + SOCK_DGRAM, //!< Datagram (UDP) + SOCK_SEQPACKET, //!< + SOCK_RAW, //!< Raw packet access + SOCK_RDM //!< Reliable non-ordered datagrams +}; + /** * \brief Values for \a domain of socket() */ enum eSocketDomains { + PF_UNSPEC, PF_LOCAL, //!< Machine-local comms PF_INET, //!< IPv4 PF_INET6, //!< IPv6 @@ -39,13 +82,18 @@ enum eSocketDomains }; #define PF_UNIX PF_LOCAL -enum eSocketTypes +// getsockopt/setsockopt level +enum { - SOCK_STREAM, //!< Stream (TCP) - SOCK_DGRAM, //!< Datagram (UDP) - SOCK_SEQPACKET, //!< - SOCK_RAW, //!< Raw packet access - SOCK_RDM //!< Reliable non-ordered datagrams + SOL_SOCKET +}; + + +// SOL_SOCKET getsockopt/setsockopt names +enum +{ + SO_REUSEADDR, + SO_LINGER }; /** @@ -79,5 +127,11 @@ extern int recv(int sockfd, void *buffer, size_t length, int flags); extern int sendto(int sockfd, const void *buffer, size_t length, int flags, const struct sockaddr *clientaddr, socklen_t addrlen); extern int send(int sockfd, void *buffer, size_t length, int flags); +extern int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_t option_len); +extern int getsockopt(int socket, int level, int option_name, void *option_value, socklen_t *option_len); + +extern int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen); +extern int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen); + #endif