Usermode/libpsocket - Minor fixes
[tpg/acess2.git] / Usermode / Libraries / libpsocket.so_src / include_exp / sys / socket.h
index dc44ec6..9c3e3bd 100644 (file)
@@ -9,24 +9,32 @@
 #define _SYS_SOCKETS_H_
 
 #include <sys/types.h>
+#ifndef size_t
 #include <stddef.h>    // size_t
+#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
@@ -92,15 +100,37 @@ enum
 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
  */
@@ -116,10 +146,12 @@ extern int        connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
  */
 extern int     listen(int sockfd, int backlog);
 
+#define SOMAXCONN      128     // Maximum size of backlog (actually far higher)
+
 /**
  * \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);
@@ -132,5 +164,16 @@ extern int getsockopt(int socket, int level, int option_name, void *option_value
 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);
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif
 

UCC git Repository :: git.ucc.asn.au