From 91a314a298b3e5d1c8008ac5d8547c50a51f8f22 Mon Sep 17 00:00:00 2001 From: Matheus Date: Mon, 24 Oct 2022 15:41:48 -0300 Subject: [PATCH] socket: add msghdr to header and fix backlog issue --- src/include/kernel/socket.h | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/include/kernel/socket.h b/src/include/kernel/socket.h index cb4eb1cc..15f99742 100644 --- a/src/include/kernel/socket.h +++ b/src/include/kernel/socket.h @@ -1,6 +1,8 @@ #ifndef _SOCKET_H_INCLUDE #define _SOCKET_H_INCLUDE +#include + #include #include #include @@ -18,6 +20,15 @@ #define AF_UNIX 1 typedef unsigned socklen_t; +typedef struct { + void *msg_name; + socklen_t msg_namelen; + struct iovec *msg_iov; + size_t msg_iovlen; + void *msg_control; + size_t msg_controllen; + int msg_flags; +} msghdr; typedef struct _socket_t{ int lock; @@ -56,15 +67,15 @@ static inline socket_t* socket_popfrombacklog(socket_t* listener){ memcpy(listener->backlog, listener->backlog+1, sizeof(socket_t*)*listener->backlogend); - listener->backlog[listener->backlogend]; + listener->backlog[listener->backlogend] = NULL; return sock; } -int socket_connect(struct _socket_t* sock, void* addr, socklen_t addrlen); +int socket_connect(struct _socket_t* sock, void* addr, socklen_t addrlen, fd_t* fd); int socket_new(socket_t** returnptr, int family, int type, int protocol); int socket_bind(struct _socket_t* sock, void* addr, socklen_t addrlen); int socket_listen(struct _socket_t* sock, int backlog); -int socket_accept(socket_t** peer, socket_t* sock, void* addr, socklen_t* addrlen); -int socket_send(socket_t* socket, void* buff, socklen_t len, int flags, int* error); +int socket_accept(socket_t** peer, socket_t* sock, void* addr, socklen_t* addrlen, fd_t* fd); +int socket_send(socket_t* socket, void* buff, size_t len, int flags, int* error, fd_t* fd); #endif