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/* connect() returns -119 until the handshake finishes. */
61#define SO_NONBLOCK 4
62
63 typedef size_t socklen_t;
64
65#pragma pack(push, 1)
66 typedef struct _dns_entry_ {
67 int index;
70#pragma pack(pop)
71
72 typedef struct _sock_addr_ {
73 unsigned short sa_family; //address family
74 char sa_data[14];
76
77 typedef struct _addrinfo_ {
78 int ai_flags;
79 int ai_family;
80 int ai_socktype;
81 int ai_protocol;
84 char* ai_canonname;
87
88 typedef struct _iovec_ {
89 void* iov_base;
90 size_t iov_len;
92
93 typedef struct _msghdr_ {
94 void* msg_name;
97 size_t msg_iovlen;
98 void* msg_control;
99 size_t msg_controllen;
100 int msg_flags;
102
103 /* Route flags (match BaseHdr/Net/route.h) */
104#define RTF_UP 0x01
105#define RTF_HOST 0x02
106#define RTF_GATEWAY 0x04
107#define RTF_LOCAL 0x08
108#define RTF_CONNECTED 0x10
109
110 /* Simple Route table entry structure */
111 typedef struct _route_entry_ {
112 char* ifname;
119
120 typedef struct _route_entry_info_ {
121 int index;
122 void* route_entry;
124
125 /* Netfilter (match BaseHdr/Net/netfilter.h) */
126#define NF_PRE_ROUTING 0
127#define NF_LOCAL_IN 1
128#define NF_FORWARD 2
129#define NF_LOCAL_OUT 3
130#define NF_POST_ROUTING 4
131#define NF_ACCEPT 0
132#define NF_DROP 1
133#define NF_REJECT 2
134
148
153
156
157 struct in_addr {
159 };
160
161 typedef struct _sockaddr_in_ {
162 short sin_family;
163 unsigned short sin_port;
164 struct in_addr sin_addr;
165 char sin_zero[8];
167
168 struct in6_addr {
169 uint8_t s6_addr[16];
170 };
171
172 typedef struct _sockaddr_in6_ {
173 short sin6_family;
174 unsigned short sin6_port;
176 struct in6_addr sin6_addr;
179
180 XE_LIB int socket(int domain, int type, int protocol);
181 XE_LIB int connect(int sockfd, sockaddr_* addr, socklen_t addrlen);
182 XE_LIB int send(int sockfd, msghdr* msg, int flags);
183 XE_LIB int receive(int sockfd, msghdr* msg, int flags);
185 int sockfd, int level, int optname, const void* optval, socklen_t optlen);
186 XE_LIB int bind(int sockfd, struct sockaddr* addr, socklen_t addrlen);
187 XE_LIB int accept(int sockfd, sockaddr* addr, socklen_t* addrlen);
188 XE_LIB int listen(int sockfd, int backlog);
189 XE_LIB ssize_t recvfrom(int sockfd,
190 void* buf,
191 size_t len,
192 int flags,
193 struct sockaddr* src_addr,
194 socklen_t* addrlen);
195 XE_LIB ssize_t sendto(int sockfd,
196 const void* buf,
197 size_t len,
198 int flags,
199 const struct sockaddr* dest_addr,
200 socklen_t addrlen);
201#ifdef __cplusplus
202}
203#endif
204
205#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:133
uint32_t in_addr_t
Definition socket.h:132
size_t socklen_t
Definition socket.h:67
int64_t ssize_t
Definition stddef.h:38
uint8_t flags
Definition virtio.h:0
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:90
struct _xe_nf_rule_info_ XENfRuleInfo
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:70
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)
struct _xe_nf_rule_ XENfRule
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
const char * level
Definition drm_print.h:515
size_t len
Definition initial.c:23
Definition socket.h:75
int ai_family
Definition socket.h:77
int ai_protocol
Definition socket.h:79
struct _addrinfo_ * ai_next
Definition socket.h:85
sockaddr_ * ai_addr
Definition socket.h:83
char * ai_canonname
Definition socket.h:82
int ai_flags
Definition socket.h:76
int ai_socktype
Definition socket.h:78
socklen_t ai_addrlen
Definition socket.h:80
Definition socket.cpp:45
uint32_t address
Definition socket.cpp:47
int index
Definition socket.cpp:46
Definition socket.h:86
void * iov_base
Definition socket.h:87
size_t iov_len
Definition socket.h:88
Definition socket.h:91
void * msg_name
Definition socket.h:92
iovec * msg_iov
Definition socket.h:94
size_t msg_iovlen
Definition socket.h:95
int msg_flags
Definition socket.h:98
void * msg_control
Definition socket.h:96
size_t msg_controllen
Definition socket.h:97
socklen_t msg_namelen
Definition socket.h:93
Definition route.h:45
uint32_t gateway
Definition route.h:50
uint32_t netmask
Definition route.h:48
uint32_t ifaddress
Definition route.h:49
char * ifname
Definition route.h:46
uint32_t dest
Definition route.h:47
uint8_t flags
Definition route.h:51
Definition route.h:63
int index
Definition route.h:64
void * route_entry
Definition route.h:65
Definition socket.h:72
char sa_data[14]
Definition socket.h:74
unsigned short sa_family
Definition socket.h:73
Definition socket.h:70
Definition socket.h:150
uint32_t sin6_scope_id
Definition socket.h:155
uint32_t sin6_flowinfo
Definition socket.h:153
unsigned short sin6_port
Definition socket.h:152
struct in6_addr sin6_addr
Definition socket.h:154
short sin6_family
Definition socket.h:151
Definition socket.h:139
unsigned short sin_port
Definition socket.h:141
struct in_addr sin_addr
Definition socket.h:142
char sin_zero[8]
Definition socket.h:143
short sin_family
Definition socket.h:140
Definition socket.h:135
int target
Definition socket.h:146
uint32_t src
Definition socket.h:140
char in_dev[16]
Definition socket.h:137
uint8_t proto
Definition socket.h:139
uint16_t sport
Definition socket.h:144
uint32_t dst_mask
Definition socket.h:143
int hook
Definition socket.h:136
uint32_t dst
Definition socket.h:142
char out_dev[16]
Definition socket.h:138
uint32_t src_mask
Definition socket.h:141
uint16_t dport
Definition socket.h:145
Definition socket.h:149
int index
Definition socket.h:150
XENfRule * rule
Definition socket.h:151
Definition socket.h:146
uint8_t s6_addr[16]
Definition socket.h:147
Definition socket.h:135
in_addr_t s_addr
Definition socket.h:136