#endif
#include <stdint.h> // uint32_t
+#ifdef __cplusplus
+extern "C" {
+#endif
+
typedef uint32_t socklen_t;
-typedef enum
+enum
{
AF_UNSPEC = 0,
AF_PACKET = 1,
AF_LOCAL = 2,
AF_INET = 4,
AF_INET6 = 6,
-} sa_family_t;
+};
#define AF_UNIX AF_LOCAL
+typedef uint8_t sa_family_t; // I would use an enum, but cast issues
struct sockaddr
{
sa_family_t sa_family;
- char sa_data[16];
+ char sa_data[16+2];
};
struct msghdr
{
SO_REUSEADDR,
SO_LINGER,
- SO_ERROR
+ SO_ERROR,
+ SO_KEEPALIVE,
};
// shutdown how
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 listen(int sockfd, int backlog);
+#define SOMAXCONN 128 // Maximum size of backlog (actually far higher)
+
/**
* \brief Accept an incoming connection
*/
extern const char *hstrerror(int err);
extern struct hostent *gethostent(void);
+#ifdef __cplusplus
+}
+#endif
+
#endif