43cb3d662bddb5d690a2596c84059c0c947f111d
[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 typedef int     socklen_t;
13
14 typedef enum
15 {
16         AF_UNSPEC       = 0,
17         AF_INET         = 4,
18         AF_INET6        = 6
19 } sa_family_t;
20
21 struct sockaddr
22 {
23         sa_family_t     sa_family;
24         char            sa_data[16];
25 };
26
27 /**
28  * \brief Values for \a domain of socket()
29  */
30 enum eSocketDomains
31 {
32         PF_LOCAL,       //!< Machine-local comms
33         PF_INET,        //!< IPv4
34         PF_INET6,       //!< IPv6
35         PF_PACKET       //!< Low level packet interface
36 };
37 #define PF_UNIX PF_LOCAL
38
39 enum eSocketTypes
40 {
41         SOCK_STREAM,    //!< Stream (TCP)
42         SOCK_DGRAM,     //!< Datagram (UDP)
43         SOCK_SEQPACKET, //!< 
44         SOCK_RAW,       //!< Raw packet access
45         SOCK_RDM        //!< Reliable non-ordered datagrams
46 };
47
48 /**
49  * \brief Create a new socket descriptor
50  * \param domain        Address family
51  */
52 extern int      socket(int domain, int type, int protocol);
53
54 /**
55  * \brief Bind a socket to an address
56  */
57 extern int      bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
58
59 /**
60  * \brief Connect to another socket
61  */
62 extern int      connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
63
64 /**
65  * \brief Listen for incoming connections
66  */
67 extern int      listen(int sockfd, int backlog);
68
69 /**
70  * \brief Accept an incoming connection
71  */
72 extern int      accept(int sockfd, struct sockaddr *clientaddr, socklen_t addrlen);
73
74 #endif
75

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