XenevaOS
Loading...
Searching...
No Matches
socket.h
Go to the documentation of this file.
1
30#ifndef __SOCKET_H__
31#define __SOCKET_H__
32
33#include <stdint.h>
34#include <_xeneva.h>
35#include <stddef.h>
36
37#ifdef __cplusplus
39#endif
40
41#define AF_UNSPEC 0
42#define AF_INET 1
43#define AF_RAW 2
44#define AF_INET6 3
45
46#define SOCK_STREAM 1
47#define SOCK_DGRAM 2
48#define SOCK_RAW 3
49
50#define IPPROTOCOL_ICMP 1
51#define IPPROTOCOL_TCP 6
52#define IPPROTOCOL_UDP 17
53#define IPPROTOCOL_ICMPV6 58
54
55#define SOL_SOCKET 0
56
57#define SO_KEEPALIVE 1
58#define SO_REUSEADDR 2
59#define SO_BINDTODEVICE 3
60
61 typedef size_t socklen_t;
62
63#pragma pack(push, 1)
64 typedef struct _dns_entry_ {
65 int index;
68#pragma pack(pop)
69
70 typedef struct _sock_addr_ {
71 unsigned short sa_family; //address family
72 char sa_data[14];
74
75 typedef struct _addrinfo_ {
76 int ai_flags;
77 int ai_family;
78 int ai_socktype;
79 int ai_protocol;
82 char* ai_canonname;
83 struct _addinfo_* ai_next;
85
86 typedef struct _iovec_ {
87 void* iov_base;
88 size_t iov_len;
90
91 typedef struct _msghdr_ {
92 void* msg_name;
95 size_t msg_iovlen;
96 void* msg_control;
97 size_t msg_controllen;
98 int msg_flags;
100
101 /* Simple Route table entry structure */
102 typedef struct _route_entry_ {
103 char* ifname;
110
111 typedef struct _route_entry_info_ {
112 int index;
113 void* route_entry;
115
118
119 struct in_addr {
121 };
122
123 typedef struct _sockaddr_in_ {
124 short sin_family;
125 unsigned short sin_port;
126 struct in_addr sin_addr;
127 char sin_zero[8];
129
130 struct in6_addr {
131 uint8_t s6_addr[16];
132 };
133
134 typedef struct _sockaddr_in6_ {
135 short sin6_family;
136 unsigned short sin6_port;
138 struct in6_addr sin6_addr;
141
142 XE_LIB int socket(int domain, int type, int protocol);
143 XE_LIB int connect(int sockfd, sockaddr_* addr, socklen_t addrlen);
144 XE_LIB int send(int sockfd, msghdr* msg, int flags);
145 XE_LIB int receive(int sockfd, msghdr* msg, int flags);
147 int sockfd, int level, int optname, const void* optval, socklen_t optlen);
148 XE_LIB int bind(int sockfd, struct sockaddr* addr, socklen_t addrlen);
149 XE_LIB int accept(int sockfd, sockaddr* addr, socklen_t* addrlen);
150 XE_LIB int listen(int sockfd, int backlog);
151 XE_LIB ssize_t recvfrom(int sockfd,
152 void* buf,
153 size_t len,
154 int flags,
155 struct sockaddr* src_addr,
156 socklen_t* addrlen);
157 XE_LIB ssize_t sendto(int sockfd,
158 const void* buf,
159 size_t len,
160 int flags,
161 const struct sockaddr* dest_addr,
162 socklen_t addrlen);
163#ifdef __cplusplus
164}
165#endif
166
167#endif
struct _sockaddr_in6_ sockaddr_in6
struct _iovec_ iovec
struct _sockaddr_in_ sockaddr_in
struct _addrinfo_ addrinfo
struct _msghdr_ msghdr
uint16_t in_port_t
Definition socket.h:126
uint32_t in_addr_t
Definition socket.h:125
size_t socklen_t
Definition socket.h:62
int64_t ssize_t
Definition stddef.h:38
XE_LIB int listen(int sockfd, int backlog)
struct _route_entry_ XERouteEntry
XE_LIB int socket_setopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen)
struct _route_entry_info_ XERouteEntryInfo
XE_LIB ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
Definition xenet.cpp:81
XE_LIB int accept(int sockfd, sockaddr *addr, socklen_t *addrlen)
struct _dns_entry_ XEDNSEntry
XE_LIB ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
Definition xenet.cpp:61
struct _sock_addr_ sockaddr_
XE_LIB int bind(int sockfd, struct sockaddr *addr, socklen_t addrlen)
XE_LIB int receive(int sockfd, msghdr *msg, int flags)
XE_LIB int send(int sockfd, msghdr *msg, int flags)
XE_LIB int socket(int domain, int type, int protocol)
XE_LIB int connect(int sockfd, sockaddr_ *addr, socklen_t addrlen)
#define XE_LIB
Definition _xeneva.h:55
#define XE_EXTERN
Definition _xeneva.h:50
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
unsigned short int uint16_t
Definition acefiex.h:162
Definition socket.h:70
int ai_family
Definition socket.h:72
int ai_protocol
Definition socket.h:74
sockaddr_ * ai_addr
Definition socket.h:81
char * ai_canonname
Definition socket.h:77
int ai_flags
Definition socket.h:71
int ai_socktype
Definition socket.h:73
struct _addinfo_ * ai_next
Definition socket.h:78
socklen_t ai_addrlen
Definition socket.h:75
Definition socket.cpp:45
uint32_t address
Definition socket.cpp:47
int index
Definition socket.cpp:46
Definition socket.h:81
void * iov_base
Definition socket.h:82
size_t iov_len
Definition socket.h:83
Definition socket.h:86
void * msg_name
Definition socket.h:87
iovec * msg_iov
Definition socket.h:89
size_t msg_iovlen
Definition socket.h:90
int msg_flags
Definition socket.h:93
void * msg_control
Definition socket.h:91
size_t msg_controllen
Definition socket.h:92
socklen_t msg_namelen
Definition socket.h:88
Definition route.h:37
uint32_t gateway
Definition route.h:42
uint32_t netmask
Definition route.h:40
uint32_t ifaddress
Definition route.h:41
char * ifname
Definition route.h:38
uint32_t dest
Definition route.h:39
uint8_t flags
Definition route.h:43
Definition route.h:55
int index
Definition route.h:56
void * route_entry
Definition route.h:57
Definition socket.h:70
char sa_data[14]
Definition socket.h:72
unsigned short sa_family
Definition socket.h:71
Definition socket.h:65
Definition socket.h:143
uint32_t sin6_scope_id
Definition socket.h:148
uint32_t sin6_flowinfo
Definition socket.h:146
unsigned short sin6_port
Definition socket.h:145
struct in6_addr sin6_addr
Definition socket.h:147
short sin6_family
Definition socket.h:144
Definition socket.h:132
unsigned short sin_port
Definition socket.h:134
struct in_addr sin_addr
Definition socket.h:135
char sin_zero[8]
Definition socket.h:136
short sin_family
Definition socket.h:133
Definition socket.h:139
uint8_t s6_addr[16]
Definition socket.h:140
Definition socket.h:128
in_addr_t s_addr
Definition socket.h:129