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

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