]> xenbits.xensource.com Git - unikraft/libs/lwip.git/commitdiff
Add prototype for libvfscore for Sockets
authorSimon Kuenzer <simon.kuenzer@neclab.eu>
Thu, 14 Jun 2018 23:14:08 +0000 (01:14 +0200)
committerSimon Kuenzer <simon.kuenzer@neclab.eu>
Fri, 15 Jun 2018 01:21:07 +0000 (03:21 +0200)
Initial implementation for integrating Sockets to libvfscore
in Unikraft.

Signed-off-by: Sharan Santhanam <sharan.santhanam@neclab.eu>
Makefile.uk
export.syms [new file with mode: 0644]
include/sys/socket.h [new file with mode: 0644]
socket_glue.c [new file with mode: 0644]

index fc76c49d9f36b05b70acfc6aeb545b4cea049d62..df54787a2adcdb9b1192a00519cd1ffb71d17bd4 100644 (file)
@@ -86,6 +86,7 @@ LIBLWIP_SRCS-y += $(LIBLWIP_BASE)/mailbox.c|unikraft
 LIBLWIP_SRCS-y += $(LIBLWIP_BASE)/init.c|unikraft
 LIBLWIP_SRCS-y += $(LIBLWIP_BASE)/threads.c|unikraft
 LIBLWIP_SRCS-y += $(LIBLWIP_BASE)/time.c|unikraft
+LIBLWIP_SRCS-y += $(LIBLWIP_BASE)/socket_glue.c|unikraft
 LIBLWIP_SRCS-y += $(LIBLWIP_EXTRACTED)/core/init.c
 LIBLWIP_SRCS-y += $(LIBLWIP_EXTRACTED)/core/def.c
 LIBLWIP_SRCS-y += $(LIBLWIP_EXTRACTED)/core/inet_chksum.c
diff --git a/export.syms b/export.syms
new file mode 100644 (file)
index 0000000..ec7c2bf
--- /dev/null
@@ -0,0 +1,17 @@
+liblwip_init
+socket
+accept
+bind
+shutdown
+getpeername
+getsockname
+getsockopt
+setsockopt
+connect
+listen
+recv
+recvfrom
+send
+sendmsg
+sendto
+select
diff --git a/include/sys/socket.h b/include/sys/socket.h
new file mode 100644 (file)
index 0000000..05da60b
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef UK_LWIP_SOCKET_H
+#include <uk/config.h>
+
+#ifndef CONFIG_HAVE_LIBC
+
+#if CONFIG_LIBLWIP
+#include <lwip/inet.h>
+#include <lwip/sockets.h>
+#endif /* CONFIG_LIBLWIP */
+
+#define SOCK_CLOEXEC    0x10000000
+#define SOCK_NONBLOCK   0x20000000
+
+#endif /* CONFIG_HAVELIBC */
+#endif /* UK_LWIP_SOCKET_H */
diff --git a/socket_glue.c b/socket_glue.c
new file mode 100644 (file)
index 0000000..21b7569
--- /dev/null
@@ -0,0 +1,144 @@
+/* network stub calls */
+#include <sys/time.h>
+#include <vfscore/file.h>
+#include <uk/alloc.h>
+#include <uk/essentials.h>
+#include <uk/print.h>
+#include <stdio.h>
+#include <errno.h>
+#include <lwip/sockets.h>
+
+#define  NET_LIB_NAME          "lwip-socket"
+
+
+struct sock_net_file {
+       struct vfscore_file vfscore_file;
+       int sock_fd;
+};
+
+static int sock_net_close(struct vfscore_file *vfscore_file)
+{
+       int    ret = 0;
+       return ret;
+}
+
+static ssize_t sock_net_write(struct vfscore_file *vfscore_file, const void *buf,
+                            size_t count)
+{
+       int ret = 0;
+       return ret;
+}
+
+static ssize_t sock_net_read(struct vfscore_file *vfscore_file, void *buf,
+                           size_t count)
+{
+       int ret = 0;
+       return ret;
+}
+
+static struct vfscore_fops sock_net_fops = {
+       .close = sock_net_close,
+       .write = sock_net_write,
+       .read  = sock_net_read,
+};
+
+int socket(int domain, int type, int protocol)
+{
+       int ret = 0;
+       return ret;
+}
+
+int accept(int s, struct sockaddr *addr, socklen_t *addrlen)
+{
+       int ret = 0;
+       return ret;
+}
+
+int bind(int s, const struct sockaddr *name, socklen_t namelen)
+{
+       int ret = 0;
+       return ret;
+}
+
+int shutdown(int s, int how)
+{
+       int ret = 0;
+       return ret;
+}
+
+int getpeername(int s, struct sockaddr *name, socklen_t *namelen)
+{
+       int ret = 0;
+       return ret;
+}
+
+int getsockname(int s, struct sockaddr *name, socklen_t *namelen)
+{
+       int ret = 0;
+       return ret;
+}
+
+int getsockopt(int s, int level, int optname, void *optval, socklen_t
+               *optlen)
+{
+       int ret = 0;
+       return ret;
+}
+
+int setsockopt (int s, int level, int optname, const void *optval,
+               socklen_t optlen)
+{
+       int ret = 0;
+       return ret;
+}
+
+int connect(int s, const struct sockaddr *name, socklen_t namelen)
+{
+       int ret = 0;
+       return ret;
+}
+
+int listen(int s, int backlog)
+{
+       int ret = 0;
+       return ret;
+}
+
+int recv(int s, void *mem, size_t len, int flags)
+{
+       int ret = 0;
+       return ret;
+}
+
+int recvfrom(int s, void *mem, size_t len, int flags,
+                     struct sockaddr *from, socklen_t *fromlen)
+{
+       int ret = 0;
+       return ret;
+}
+
+int send(int s, const void *dataptr, size_t size, int flags)
+{
+       int ret = 0;
+       return ret;
+}
+
+int sendmsg(int s, const struct msghdr *message, int flags)
+{
+       int ret = 0;
+       return ret;
+}
+
+int sendto(int s, const void *dataptr, size_t size, int flags,
+                   const struct sockaddr *to, socklen_t tolen)
+{
+       int ret = 0;
+       return ret;
+}
+
+int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set
+               *exceptset, struct timeval *timeout)
+{
+       int ret = -ENOTSUP;
+       return ret;
+}