From: Simon Kuenzer Date: Thu, 14 Jun 2018 23:14:08 +0000 (+0200) Subject: Add prototype for libvfscore for Sockets X-Git-Tag: RELEASE-0.3~15 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=7d8209cdcb9f08d0b07651cd5c7cb2bd9496d1f5;p=unikraft%2Flibs%2Flwip.git Add prototype for libvfscore for Sockets Initial implementation for integrating Sockets to libvfscore in Unikraft. Signed-off-by: Sharan Santhanam --- diff --git a/Makefile.uk b/Makefile.uk index fc76c49..df54787 100644 --- a/Makefile.uk +++ b/Makefile.uk @@ -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 index 0000000..ec7c2bf --- /dev/null +++ b/export.syms @@ -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 index 0000000..05da60b --- /dev/null +++ b/include/sys/socket.h @@ -0,0 +1,15 @@ +#ifndef UK_LWIP_SOCKET_H +#include + +#ifndef CONFIG_HAVE_LIBC + +#if CONFIG_LIBLWIP +#include +#include +#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 index 0000000..21b7569 --- /dev/null +++ b/socket_glue.c @@ -0,0 +1,144 @@ +/* network stub calls */ +#include +#include +#include +#include +#include +#include +#include +#include + +#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; +}