#define _SYS_SOCKETS_H_
#include <sys/types.h>
+#ifndef size_t
#include <stddef.h> // size_t
+#endif
#include <stdint.h> // uint32_t
typedef uint32_t socklen_t;
struct sockaddr
{
sa_family_t sa_family;
- char sa_data[16];
+ char sa_data[16+2];
};
struct msghdr
enum
{
SO_REUSEADDR,
- SO_LINGER
+ SO_LINGER,
+ SO_ERROR,
+ SO_KEEPALIVE,
+};
+
+// shutdown how
+enum
+{
+ SHUT_RD,
+ SHUT_WR,
+ SHUT_RDWR
};
+// flags for send*
+//#define MSG_CONFIRM 0x01
+#define MSG_DONTROUTE 0x02
+#define MSG_OOB 0x40
+// flags for recv
+#define MSG_PEEK 0x100
+
/**
* \brief Create a new socket descriptor
* \param domain Address family
*/
extern int socket(int domain, int type, int protocol);
+/**
+ *
+ */
+extern int shutdown(int socket, int how);
+
/**
* \brief Bind a socket to an address
*/
/**
* \brief Accept an incoming connection
*/
-extern int accept(int sockfd, struct sockaddr *clientaddr, socklen_t addrlen);
+extern int accept(int sockfd, struct sockaddr *clientaddr, socklen_t *addrlen);
extern int recvfrom(int sockfd, void *buffer, size_t length, int flags, struct sockaddr *clientaddr, socklen_t *addrlen);
extern int recv(int sockfd, void *buffer, size_t length, int flags);
extern int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen);
extern int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen);
+extern struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);
+extern void sethostent(int stayopen);
+extern void endhostent(void);
+extern void herror(const char *s);
+extern const char *hstrerror(int err);
+extern struct hostent *gethostent(void);
+
#endif