sockets: expect fd argument

This commit is contained in:
Matheus
2022-10-24 15:36:46 -03:00
parent 9815b8b06d
commit 6db1cfe81d
3 changed files with 15 additions and 13 deletions
+12 -10
View File
@@ -65,41 +65,43 @@ int socket_listen(struct _socket_t* sock, int backlog){
}
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){
switch(sock->family){
case AF_UNIX:
return unsocket_connect(sock, addr, addrlen);
return unsocket_connect(sock, addr, addrlen, fd);
default:
return EINVAL;
}
}
int socket_accept(socket_t** peer, socket_t* sock, void* addr, socklen_t* addrlen){
int socket_accept(socket_t** peer, socket_t* sock, void* addr, socklen_t* addrlen, fd_t* fd){
switch(sock->family){
case AF_UNIX:
return unsocket_accept(peer, sock, addr, addrlen);
return unsocket_accept(peer, sock, addr, addrlen, fd);
default:
return EINVAL;
}
}
int socket_send(socket_t* socket, void* buff, socklen_t len, int flags, int* count){
int socket_send(socket_t* socket, void* buff, size_t len, int flags, int* error, fd_t* fd){
switch(socket->family){
case AF_UNIX:
return unsocket_send(socket, buff, len, flags, count);
return unsocket_send(socket, buff, len, flags, error, fd);
default:
return EINVAL;
*error = EINVAL;
return 0;
}
}
int socket_recv(socket_t* socket, void* buff, socklen_t len, int flags, int* count){
int socket_recv(socket_t* socket, void* buff, size_t len, int flags, int* error, fd_t* fd){
switch(socket->family){
case AF_UNIX:
return unsocket_recv(socket, buff, len, flags, count);
return unsocket_recv(socket, buff, len, flags, error, fd);
default:
return EINVAL;
*error = EINVAL;
return 0;
}
}
+2 -2
View File
@@ -65,7 +65,7 @@ syscallret syscall_accept(int sockfd, void* addr, socklen_t* addrlen){
socket_t* peer;
retv.errno = socket_accept(&peer, listenersock, addr, addrlen);
retv.errno = socket_accept(&peer, listenersock, addr, addrlen, fd);
if(retv.errno)
goto _fail;
@@ -89,7 +89,7 @@ syscallret syscall_accept(int sockfd, void* addr, socklen_t* addrlen){
fd_release(connfd);
retv.ret = connifd;
memcpy(addr, &peer->addr_un, peer->addrlen);
*addrlen = peer->addrlen;
+1 -1
View File
@@ -33,7 +33,7 @@ syscallret syscall_connect(int sockfd, void* addr, size_t addrlen){
goto _ret;
}
retv.errno = socket_connect(fd->node->objdata, addr, addrlen);
retv.errno = socket_connect(fd->node->objdata, addr, addrlen, fd);
_ret: