From e6c8f7298b40757a410d9df6319824c4f0d70351 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Wed, 28 Feb 2024 21:47:49 +0100 Subject: TCP/UDP: Start rewrite of network sockets Having sockets be file descriptors seems like a bad idea so I trying to make UDP and TCP sockets be more independent and not be abstracted away as much. --- kernel/network/udp.c | 42 ++---------------------------------------- 1 file changed, 2 insertions(+), 40 deletions(-) (limited to 'kernel/network/udp.c') diff --git a/kernel/network/udp.c b/kernel/network/udp.c index 5aae050..4f3848a 100644 --- a/kernel/network/udp.c +++ b/kernel/network/udp.c @@ -20,44 +20,6 @@ void send_udp_packet(struct sockaddr_in *src, const struct sockaddr_in *dst, } void handle_udp(u8 src_ip[4], const u8 *payload, u32 packet_length) { - assert(packet_length >= 8); - // n_.* means network format(big endian) - // h_.* means host format((probably) little endian) - u16 n_source_port = *(u16 *)payload; - u16 h_source_port = ntohs(n_source_port); - (void)h_source_port; - u16 h_dst_port = ntohs(*(u16 *)(payload + 2)); - u16 h_length = ntohs(*(u16 *)(payload + 4)); - assert(h_length == packet_length); - u16 data_length = h_length - 8; - const u8 *data = payload + 8; - - // Find the open port - OPEN_INET_SOCKET *in_s = find_open_udp_port(htons(h_dst_port)); - assert(in_s); - SOCKET *s = in_s->s; - vfs_fd_t *fifo_file = s->ptr_socket_fd; - - // Write the sockaddr struct such that it can later be - // given to userland if asked. - struct sockaddr_in /*{ - sa_family_t sin_family; - union { - u32 s_addr; - } sin_addr; - u16 sin_port; - }*/ in; - in.sin_family = AF_INET; - memcpy(&in.sin_addr.s_addr, src_ip, sizeof(u32)); - in.sin_port = n_source_port; - socklen_t sock_length = sizeof(struct sockaddr_in); - - raw_vfs_pwrite(fifo_file, &sock_length, sizeof(sock_length), 0); - raw_vfs_pwrite(fifo_file, &in, sizeof(in), 0); - - // Write the UDP payload length(not including header) - raw_vfs_pwrite(fifo_file, &data_length, sizeof(u16), 0); - - // Write the UDP payload - raw_vfs_pwrite(fifo_file, (char *)data, data_length, 0); + // TODO: Reimplement + assert(NULL); } -- cgit v1.2.3