aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-10-06 15:37:11 -0700
committerAlon Zakai <alonzakai@gmail.com>2011-10-06 15:37:11 -0700
commitce6b7ea953dd0a974a0123e6674803a3b0b1f5a2 (patch)
treec902f3cee4e949565f4388bb5fd1462a932eff41
parent5e4a111053b401069fb4581bba191d60f9f6e527 (diff)
socket header stuff
-rw-r--r--system/include/libc/sys/unistd.h2
-rw-r--r--system/include/net/arpa/inet.h1
-rw-r--r--system/include/net/netdb.h18
-rw-r--r--system/include/net/netinet/in.h2
-rw-r--r--system/include/poll.h22
-rw-r--r--system/include/sys/poll.h28
-rw-r--r--system/include/sys/socket.h26
7 files changed, 76 insertions, 23 deletions
diff --git a/system/include/libc/sys/unistd.h b/system/include/libc/sys/unistd.h
index 57be7421..1eee3806 100644
--- a/system/include/libc/sys/unistd.h
+++ b/system/include/libc/sys/unistd.h
@@ -223,7 +223,7 @@ int _EXFUN(truncate, (const char *, off_t __length));
#endif
#endif
-#if defined(__CYGWIN__) || defined(__rtems__)
+#if defined(EMSCRIPTEN) || defined(__CYGWIN__) || defined(__rtems__)
int _EXFUN(getdtablesize, (void));
int _EXFUN(setdtablesize, (int));
useconds_t _EXFUN(ualarm, (useconds_t __useconds, useconds_t __interval));
diff --git a/system/include/net/arpa/inet.h b/system/include/net/arpa/inet.h
index 2cc6f45a..76ad8b5f 100644
--- a/system/include/net/arpa/inet.h
+++ b/system/include/net/arpa/inet.h
@@ -4,3 +4,4 @@ uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
+int inet_aton(const char *cp, struct in_addr *addr);
diff --git a/system/include/net/netdb.h b/system/include/net/netdb.h
index 27ce5b22..3b6f3389 100644
--- a/system/include/net/netdb.h
+++ b/system/include/net/netdb.h
@@ -1,2 +1,18 @@
-/* */
+
+struct addrinfo
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ socklen_t ai_addrlen;
+ struct sockaddr *ai_addr;
+ char *ai_canonname;
+ struct addrinfo *ai_next;
+};
+
+extern int getaddrinfo(const char *name, const char *service, const struct addrinfo *req, struct addrinfo **pai);
+extern void freeaddrinfo(struct addrinfo *ai);
+extern int getnameinfo (struct sockaddr *sa, socklen_t salen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, unsigned int flags);
+const char *gai_strerror(int ecode);
diff --git a/system/include/net/netinet/in.h b/system/include/net/netinet/in.h
index 57576236..0def3127 100644
--- a/system/include/net/netinet/in.h
+++ b/system/include/net/netinet/in.h
@@ -1,4 +1,6 @@
+#define INET_ADDRSTRLEN 16
+
struct in_addr {
unsigned long s_addr;
};
diff --git a/system/include/poll.h b/system/include/poll.h
index 63c02b90..e4c40dca 100644
--- a/system/include/poll.h
+++ b/system/include/poll.h
@@ -1,23 +1,3 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define POLLIN 1
-#define POLLOUT 2
-#define POLLNVAL 4
-#define POLLERR 8
-#define POLLHUP 16
-
-struct pollfd {
- int fd;
- short events;
- short revents;
-};
-
-int poll(struct pollfd *data, int num, int extra);
-
-#ifdef __cplusplus
-}
-#endif
+#include "sys/poll.h"
diff --git a/system/include/sys/poll.h b/system/include/sys/poll.h
new file mode 100644
index 00000000..e72ac26f
--- /dev/null
+++ b/system/include/sys/poll.h
@@ -0,0 +1,28 @@
+
+#ifndef _SYS_POLL_H
+#define _SYS_POLL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define POLLIN 1
+#define POLLOUT 2
+#define POLLNVAL 4
+#define POLLERR 8
+#define POLLHUP 16
+
+struct pollfd {
+ int fd;
+ short events;
+ short revents;
+};
+
+int poll(struct pollfd *data, int num, int extra);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/system/include/sys/socket.h b/system/include/sys/socket.h
index 9795c654..95a0635a 100644
--- a/system/include/sys/socket.h
+++ b/system/include/sys/socket.h
@@ -1,5 +1,14 @@
/* */
+#define AF_UNSPEC 100
+#define SOCK_STREAM 200
+#define SOL_SOCKET 50
+#define SO_ERROR 10
+#define SOCK_DGRAM 20
+#define SO_REUSEADDR 30
+#define SO_SNDBUF 40
+#define SO_RCVBUF 60
+
typedef int socklen_t;
typedef unsigned int sa_family_t;
@@ -11,4 +20,21 @@ struct sockaddr {
char sa_data[];
};
+struct sockaddr_storage {
+ sa_family_t ss_family;
+};
+
+ssize_t recvfrom(int socket, void *buffer, size_t length, int flags, struct sockaddr *address, socklen_t *address_len);
+int getpeername(int socket, struct sockaddr *address, socklen_t *address_len);
+int getsockname(int socket, struct sockaddr *address, socklen_t *address_len);
+int socket(int domain, int type, int protocol);
+int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);
+int listen(int sockfd, int backlog);
+int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
+int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
+int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen);
+ssize_t recv(int s, void *buf, size_t len, int flags);
+ssize_t send(int s, const void *buf, size_t len, int flags);
+int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
+ssize_t sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);