]> xenbits.xensource.com Git - unikraft/libs/lwip.git/commitdiff
sockets: Add recvmsg() function
authorCostin Lupu <costin.lupu@cs.pub.ro>
Wed, 4 Sep 2019 19:09:10 +0000 (22:09 +0300)
committerCostin Lupu <costin.lup@gmail.com>
Mon, 9 Sep 2019 16:37:08 +0000 (19:37 +0300)
Signed-off-by: Costin Lupu <costin.lupu@cs.pub.ro>
Reviewed-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@stud.acs.upb.ro>
exportsyms.uk
include/sys/socket.h
sockets.c

index bcdfed3f059f3aaa61e47cae9baa03cbd4f4cd9c..6afef397df49a9eddd84baf5e34b9fbf7e833e02 100644 (file)
@@ -39,6 +39,7 @@ pbuf_ref
 poll
 recv
 recvfrom
+recvmsg
 select
 send
 sendmsg
index aff064e6b8c81fc8e85f998f61f9fbf37ad80421..7e027b918d42d81749eee2a93973faaa4d8bcf49 100644 (file)
@@ -70,6 +70,7 @@ int listen(int s, int backlog);
 int recv(int s, void *mem, size_t len, int flags);
 int recvfrom(int s, void *mem, size_t len, int flags,
             struct sockaddr *from, socklen_t *fromlen);
+int recvmsg(int s, struct msghdr *msg, int flags);
 int send(int s, const void *dataptr, size_t size, int flags);
 int sendmsg(int s, const struct msghdr *message, int flags);
 int sendto(int s, const void *dataptr, size_t size, int flags,
index aa772da8b46f1ac6c7b24a5cf3b0ef17f4718078..1806846e610a21ef7fb023bfbfee2121a2c61c2b 100644 (file)
--- a/sockets.c
+++ b/sockets.c
@@ -755,6 +755,25 @@ EXIT:
        return ret;
 }
 
+int recvmsg(int s, struct msghdr *msg, int flags)
+{
+       int ret = 0;
+       struct sock_net_file *file = NULL;
+
+       file = sock_net_file_get(s);
+       if (PTRISERR(file)) {
+               LWIP_DEBUGF(SOCKETS_DEBUG,
+                           ("failed to identify socket descriptor\n"));
+               ret = -1;
+               SOCK_NET_SET_ERRNO(PTR2ERR(file));
+               goto EXIT;
+       }
+       ret = lwip_recvmsg(file->sock_fd, msg, flags);
+       vfscore_put_file(file->vfscore_file); /* release refcount */
+EXIT:
+       return ret;
+}
+
 int send(int s, const void *dataptr, size_t size, int flags)
 {
        int ret = 0;