00001
00002
00003
00004
00005 #ifndef SYS_SOCKET_H
00006 #define SYS_SOCKET_H
00007
00008
00009
00010
00011 #include <stdint.h>
00012
00013
00014 #include <net/gen/socket.h>
00015
00016 #define SOCK_STREAM 1
00017 #define SOCK_DGRAM 2
00018 #define SOCK_RAW 3
00019 #define SOCK_RDM 4
00020 #define SOCK_SEQPACKET 5
00021
00022 #define SOL_SOCKET 0xFFFF
00023
00024 #define SO_DEBUG 0x0001
00025 #define SO_REUSEADDR 0x0004
00026 #define SO_KEEPALIVE 0x0008
00027 #define SO_TYPE 0x0010
00028
00029 #define SO_SNDBUF 0x1001
00030 #define SO_RCVBUF 0x1002
00031 #define SO_ERROR 0x1007
00032
00033
00034 #define SHUT_RD 0
00035 #define SHUT_WR 1
00036 #define SHUT_RDWR 2
00037
00038 #ifndef _SA_FAMILY_T
00039 #define _SA_FAMILY_T
00040 typedef uint8_t sa_family_t;
00041 #endif
00042
00043 typedef int32_t socklen_t;
00044
00045 struct sockaddr
00046 {
00047 sa_family_t sa_family;
00048 char sa_data[8];
00049 };
00050
00051 _PROTOTYPE( int accept, (int _socket,
00052 struct sockaddr *_RESTRICT _address,
00053 socklen_t *_RESTRICT _address_len) );
00054 _PROTOTYPE( int bind, (int _socket, const struct sockaddr *_address,
00055 socklen_t _address_len) );
00056 _PROTOTYPE( int connect, (int _socket, const struct sockaddr *_address,
00057 socklen_t _address_len) );
00058 _PROTOTYPE( int getpeername, (int _socket,
00059 struct sockaddr *_RESTRICT _address,
00060 socklen_t *_RESTRICT _address_len) );
00061 _PROTOTYPE( int getsockname, (int _socket,
00062 struct sockaddr *_RESTRICT _address,
00063 socklen_t *_RESTRICT _address_len) );
00064 _PROTOTYPE( int setsockopt,(int _socket, int _level, int _option_name,
00065 const void *_option_value, socklen_t _option_len) );
00066 _PROTOTYPE( int getsockopt, (int _socket, int _level, int _option_name,
00067 void *_RESTRICT _option_value, socklen_t *_RESTRICT _option_len));
00068 _PROTOTYPE( int listen, (int _socket, int _backlog) );
00069 _PROTOTYPE( ssize_t recv, (int _socket, void *_buffer, size_t _length,
00070 int _flags) );
00071 _PROTOTYPE( ssize_t recvfrom, (int _socket, void *_RESTRICT _buffer,
00072 size_t _length, int _flags, struct sockaddr *_RESTRICT _address,
00073 socklen_t *_RESTRICT _address_len) );
00074 _PROTOTYPE( ssize_t send, (int _socket, const void *_buffer,
00075 size_t _length, int _flags) );
00076 _PROTOTYPE( ssize_t sendto, (int _socket, const void *_message,
00077 size_t _length, int _flags, const struct sockaddr *_dest_addr,
00078 socklen_t _dest_len) );
00079 _PROTOTYPE( int shutdown, (int _socket, int _how) );
00080 _PROTOTYPE( int socket, (int _domain, int _type, int _protocol) );
00081
00082
00083
00084
00085 #define PF_INET AF_INET
00086 #define PF_INET6 AF_INET6
00087 #define PF_UNIX AF_UNIX
00088 #define PF_UNSPEC AF_UNSPEC
00089
00090
00091 struct sockaddr_storage
00092 {
00093 sa_family_t __ss_family;
00094 char __ss_pad1[6];
00095 #ifdef __LONG_LONG_SUPPORTED
00096 int64_t __ss_align;
00097 #else
00098 int32_t __ss_align[2];
00099 #endif
00100 char __ss_pad2[112];
00101 };
00102
00103 #endif