diff options
author | Anton Kling <anton@kling.gg> | 2024-04-29 22:00:55 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-04-29 22:00:55 +0200 |
commit | 231301a6190605bd3ced4d961ee0d5d3fcd49d65 (patch) | |
tree | 8af67c28f9b638393f700fbaf2c9e33fd97a8b46 /include | |
parent | 7d2ab3a71f4bda9d8ee997764d98b29e13a902c5 (diff) |
Kernel/IRC: Add setsockopt and move IRC client to use new socket interface
Diffstat (limited to 'include')
-rw-r--r-- | include/sys/socket.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/include/sys/socket.h b/include/sys/socket.h new file mode 100644 index 0000000..eab62eb --- /dev/null +++ b/include/sys/socket.h @@ -0,0 +1,72 @@ +#ifndef SYS_SOCKET_H +#define SYS_SOCKET_H +#include <stddef.h> +#include <stdint.h> + +#define AF_UNIX 0 +#define AF_INET 1 +#define AF_LOCAL AF_UNIX + +#define SOCK_DGRAM 0 +#define SOCK_STREAM 1 +#define MSG_WAITALL 1 + +#define INADDR_ANY 0 + +#define IPPROTO_TCP 0 +#define TCP_NODELAY 0 + +#ifndef KERNEL + +typedef struct { + int domain; + int type; + int protocol; + + // UNIX socket + char *path; + int incoming_fd; +} SOCKET; + +typedef struct { + char *path; + SOCKET *s; +} OPEN_UNIX_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 */ +}; + +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); +size_t recvfrom(int socket, void *buffer, size_t length, int flags, + struct sockaddr *address, socklen_t *address_len); +size_t sendto(int socket, const void *message, size_t length, int flags, + const struct sockaddr *dest_addr, socklen_t dest_len); +int listen(int socket, int backlog); +int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); +int setsockopt(int socket, int level, int option_name, const void *option_value, + socklen_t option_len); +#endif // KERNEL +#endif // SYS_SOCKET_H |