From 8a9208612eec8ddae4c418485d848ecfa0613699 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Mon, 30 Oct 2023 22:12:14 +0100 Subject: Meta: Move kernel and userland to their own folders. This is to allow both the kernel and the userland to share certain header files and to make the folder structure a bit more clear. --- kernel/socket.h | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 kernel/socket.h (limited to 'kernel/socket.h') diff --git a/kernel/socket.h b/kernel/socket.h new file mode 100644 index 0000000..bb278c1 --- /dev/null +++ b/kernel/socket.h @@ -0,0 +1,72 @@ +#ifndef SOCKET_H +#define SOCKET_H +#include +#include +#include +#include + +#define AF_UNIX 0 +#define AF_INET 1 +#define AF_LOCAL AF_UNIX + +#define SOCK_DGRAM 0 + +#define INADDR_ANY 0 + +#define MSG_WAITALL 1 + +typedef struct { + vfs_fd_t *ptr_socket_fd; + FIFO_FILE *fifo_file; + + int domain; + int type; + int protocol; + void *child; + + // UNIX socket + char *path; + vfs_fd_t *incoming_fd; +} SOCKET; + +typedef struct { + char *path; + SOCKET *s; +} OPEN_UNIX_SOCKET; + +typedef struct { + uint32_t address; + uint16_t port; + SOCKET *s; +} OPEN_INET_SOCKET; + +typedef uint32_t in_addr_t; +typedef uint16_t in_port_t; +typedef unsigned int sa_family_t; +typedef int socklen_t; + +struct sockaddr { + sa_family_t sa_family; /* Address family */ + char *sa_data; /* Socket address */ +}; + +struct sockaddr_in { + sa_family_t sin_family; + union { + uint32_t s_addr; + uint8_t a[4]; + } sin_addr; + uint16_t sin_port; +}; + +struct sockaddr_un { + sa_family_t sun_family; /* Address family */ + char *sun_path; /* Socket pathname */ +}; + +OPEN_INET_SOCKET *find_open_udp_port(uint16_t port); +int uds_open(const char *path); +int socket(int domain, int type, int protocol); +int accept(int socket, struct sockaddr *address, socklen_t *address_len); +int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); +#endif -- cgit v1.2.3