My Kernel v0.1.0
net.h
1#ifndef UAPI_KERNEL_NET_H
2#define UAPI_KERNEL_NET_H
3
4#include <uapi/kernel/net/ip.h>
5
6#include <stdint.h>
7#include <stddef.h>
8
9/* TODO: uapi/types.h */
10typedef uint16_t sa_family_t;
11typedef size_t socklen_t;
12
14enum communication_domain {
15 AF_UNSPEC = 0,
16 AF_INET = 2
17};
18
20enum socket_type {
21 SOCK_STREAM = 0,
22 SOCK_DGRAM = 1,
23 SOCK_RAW = 3,
24};
25
26#define PF_INET AF_INET
27
28struct sockaddr {
29 sa_family_t sa_family;
30 char sa_data[14]; /* minimum 14 bytes of data */
31};
32
33struct sockaddr_in {
34 sa_family_t sin_family;
35 uint16_t sin_port;
36 uint32_t sin_addr;
37};
38
39struct iovec { /* Scatter/gather array items */
40 void *iov_base; /* Starting address */
41 size_t iov_len; /* Number of bytes to transfer */
42};
43
44struct msghdr {
45 void *msg_name; /* optional address */
46 socklen_t msg_namelen; /* size of address */
47 struct iovec *msg_iov; /* scatter/gather array */
48 size_t msg_iovlen; /* # elements in msg_iov */
49 void *msg_control; /* ancillary data, see below */
50 size_t msg_controllen; /* ancillary data buffer len */
51 int msg_flags; /* flags on received message */
52};
53
54struct cmsghdr {
55 socklen_t cmsg_len;
56 int cmsg_level;
57 int cmsg_type;
58 unsigned char cmsg_data[];
59};
60
61#endif /* UAPI_KERNEL_NET_H */