more socket stuff
[nestedvm.git] / upstream / misc / extraheaders.sh
index 17d2612..61fe163 100755 (executable)
@@ -1,13 +1,14 @@
+
 #!/bin/sh -e
 
-mkdir -p arpa netinet sys nestedvm
+mkdir -p arpa netinet sys nestedvm net
 
-for f in arpa/inet.h netdb.h netinet/in.h sys/socket.h; do
-    test -e $f || echo "#include <nestedvm/socket.h>" > $f
+for f in arpa/inet.h netdb.h netinet/in.h sys/socket.h net/if.h; do
+    test -f $f || echo "#include <nestedvm/socket.h>" > $f
 done
 
 for f in getopt.h; do
-    test -e $f || echo "#include <unistd.h>" > $f
+    test -f $f || echo "#include <unistd.h>" > $f
 done
 
 cat <<__EOF__ > sys/ioctl.h
@@ -369,12 +370,17 @@ cat <<__EOF__ > nestedvm/socket.h
 #define __NESTEDVM_SOCKETS_H
 
 #include <sys/types.h>
+#include <sys/time.h>
 
 static unsigned short htons(int x) { return x; }
 static unsigned long htonl(int x) { return x; }
 static unsigned short ntohs(int x) { return x; }
 static unsigned long ntohl(int x) { return x; }
 
+/* Note AF_UNIX isn't supported */
+#define AF_UNIX 1
+#define PF_UNIX AF_UNIX
+
 #define AF_INET 2
 #define PF_INET AF_INET
 
@@ -390,12 +396,17 @@ static unsigned long ntohl(int x) { return x; }
 
 #define SO_REUSEADDR 0x0004
 #define SO_KEEPALIVE 0x0008 
+#define SO_BROADCAST 0x0020
+#define SO_TYPE      0x1008
 
 #define SHUT_RD 0
 #define SHUT_WR 1
 #define SHUT_RDWR 2
 
 #define INADDR_ANY 0
+#define INADDR_NONE -1
+#define INADDR_LOOPBACK 0x7f000001
+#define INADDR_BROADCAST 0xffffffff
 
 typedef unsigned long in_addr_t;
 typedef int socklen_t;
@@ -417,6 +428,14 @@ struct sockaddr_in {
        struct  in_addr sin_addr;
 };
 
+struct sockaddr_un {
+       u_char  sun_len;
+       u_char  sun_family;
+       char    sun_path[256];
+};
+
+#define SUN_LEN(su) (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
+
 struct  servent {
     char    *s_name;        /* official name of service */
     char    **s_aliases;    /* alias list */
@@ -443,7 +462,14 @@ int listen(int s, int backlog);
 int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
 int shutdown(int s, int how);
 int connect(int s, const struct sockaddr *name, socklen_t namelen);
+
 char *inet_ntoa(struct in_addr in);
+in_addr_t inet_addr(const char *cp);
+int inet_aton(const char *cp, struct in_addr *addr);
+
+int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
+int sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
+int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
 
 int getsockopt(int s, int level, int name, void *val, socklen_t *len);
 int setsockopt(int s, int level, int name, const void *val, socklen_t len);