]> xenbits.xensource.com Git - unikraft/libs/lwip.git/commitdiff
Provide ioctl for LWIP
authorMihai Pogonaru <pogonarumihai@gmail.com>
Sat, 29 Jun 2019 13:55:00 +0000 (16:55 +0300)
committerFelipe Huici <felipe.huici@neclab.eu>
Sat, 29 Jun 2019 14:43:12 +0000 (16:43 +0200)
Signed-off-by: Mihai Pogonaru <pogonarumihai@gmail.com>
Reviewed-by: Costin Lupu <costin.lupu@cs.pub.ro>
exportsyms.uk
include/sys/socket.h
sockets.c

index 375a7898f71850ba4f74a0fc9ab1ce6418ae6fae..10c1ab852e7d43a61abe235060304f65c6aa2151 100644 (file)
@@ -6,7 +6,6 @@ getsockname
 getsockopt
 liblwip_init
 listen
-lwip_ioctl
 lwip_htonl
 lwip_htons
 lwip_gethostbyname
index 42bad6ccb7df243be27f1d925eb0e4d06ded1773..7a8aca0270d01a6a75bf93c6502bb0492c9b3651 100644 (file)
@@ -52,8 +52,6 @@
 #define SOCK_SEQPACKET 5
 #endif
 
-#define ioctl(s, cmd, argp) lwip_ioctl(s, cmd, argp)
-
 int socket(int domain, int type, int protocol);
 int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
 int bind(int s, const struct sockaddr *name, socklen_t namelen);
index 38639f8a7f4993c2d22406839f182356d50f1890..aa772da8b46f1ac6c7b24a5cf3b0ef17f4718078 100644 (file)
--- a/sockets.c
+++ b/sockets.c
@@ -57,6 +57,10 @@ static int sock_net_write(struct vnode *s_vnode,
 static int sock_net_read(struct vnode *s_vnode,
                        struct vfscore_file *vfscore_file __unused,
                        struct uio *buf, int ioflag __unused);
+static int sock_net_ioctl(struct vnode *s_vnode,
+                       struct vfscore_file *vfscore_file __unused,
+                       unsigned long request,
+                       void *buf);
 
 #define sock_net_inactive  ((vnop_inactive_t) vfscore_vop_nullop)
 
@@ -64,6 +68,7 @@ static struct vnops sock_net_vnops = {
        .vop_close = sock_net_close,
        .vop_write = sock_net_write,
        .vop_read  = sock_net_read,
+       .vop_ioctl = sock_net_ioctl,
        .vop_inactive = sock_net_inactive
 };
 
@@ -299,6 +304,21 @@ static int sock_net_read(struct vnode *s_vnode,
        return 0;
 }
 
+static int sock_net_ioctl(struct vnode *s_vnode,
+                       struct vfscore_file *vfscore_file __unused,
+                       unsigned long request,
+                       void *buf)
+{
+       struct sock_net_file *file = NULL;
+
+       file = s_vnode->v_data;
+       LWIP_DEBUGF(SOCKETS_DEBUG, ("%s fd:%d lwip_fd:%d\n",
+                                   __func__,
+                                   file->vfscore_file->fd,
+                                   file->sock_fd));
+       return lwip_ioctl(file->sock_fd, request, buf);
+}
+
 int socket(int domain, int type, int protocol)
 {
        int ret = 0;