Usermode - Misc header changes
[tpg/acess2.git] / Usermode / Libraries / libpsocket.so_src / include_exp / sys / socket.h
1 /*
2  * Acess2 C Library
3  *
4  * sys/sockets.h
5  * - POSIX Sockets
6  *
7  * By John Hodge (thePowersGang)
8  */
9 #ifndef _SYS_SOCKETS_H_
10 #define _SYS_SOCKETS_H_
11
12 #include <sys/types.h>
13 #include <stddef.h>     // size_t
14
15 typedef int     socklen_t;
16
17 typedef enum
18 {
19         AF_UNSPEC       = 0,
20         AF_PACKET       = 1,
21         AF_INET         = 4,
22         AF_INET6        = 6,
23 } sa_family_t;
24
25 struct sockaddr
26 {
27         sa_family_t     sa_family;
28         char            sa_data[16];
29 };
30
31 /**
32  * \brief Values for \a domain of socket()
33  */
34 enum eSocketDomains
35 {
36         PF_LOCAL,       //!< Machine-local comms
37         PF_INET,        //!< IPv4
38         PF_INET6,       //!< IPv6
39         PF_PACKET       //!< Low level packet interface
40 };
41 #define PF_UNIX PF_LOCAL
42
43 enum eSocketTypes
44 {
45         SOCK_STREAM,    //!< Stream (TCP)
46         SOCK_DGRAM,     //!< Datagram (UDP)
47         SOCK_SEQPACKET, //!< 
48         SOCK_RAW,       //!< Raw packet access
49         SOCK_RDM        //!< Reliable non-ordered datagrams
50 };
51
52 /**
53  * \brief Create a new socket descriptor
54  * \param domain        Address family
55  */
56 extern int      socket(int domain, int type, int protocol);
57
58 /**
59  * \brief Bind a socket to an address
60  */
61 extern int      bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
62
63 /**
64  * \brief Connect to another socket
65  */
66 extern int      connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
67
68 /**
69  * \brief Listen for incoming connections
70  */
71 extern int      listen(int sockfd, int backlog);
72
73 /**
74  * \brief Accept an incoming connection
75  */
76 extern int      accept(int sockfd, struct sockaddr *clientaddr, socklen_t addrlen);
77
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);
82
83 #endif
84

UCC git Repository :: git.ucc.asn.au