00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _ABLE_CLIB_SYS_SOCKET_H
00030 #define _ABLE_CLIB_SYS_SOCKET_H 1
00031
00032 #include <sys/types.h>
00033
00035 struct sockaddr {
00036 u8_t sa_len;
00037 u8_t sa_family;
00038 char sa_data[14];
00039 };
00040
00041
00042 #define SOCK_STREAM 1
00043 #define SOCK_DGRAM 2
00044 #define SOCK_RAW 3
00046
00047 #define SO_DEBUG 0x0001
00048 #define SO_ACCEPTCONN 0x0002
00049 #define SO_REUSEADDR 0x0004
00050 #define SO_KEEPALIVE 0x0008
00051 #define SO_DONTROUTE 0x0010
00052 #define SO_BROADCAST 0x0020
00053 #define SO_USELOOPBACK 0x0040
00054 #define SO_LINGER 0x0080
00055 #define SO_OOBINLINE 0x0100
00056 #define SO_REUSEPORT 0x0200
00058 #define SO_DONTLINGER (int)(~SO_LINGER)
00059
00060
00061
00062
00063 #define SO_SNDBUF 0x1001
00064 #define SO_RCVBUF 0x1002
00065 #define SO_SNDLOWAT 0x1003
00066 #define SO_RCVLOWAT 0x1004
00067 #define SO_SNDTIMEO 0x1005
00068 #define SO_RCVTIMEO 0x1006
00069 #define SO_ERROR 0x1007
00070 #define SO_TYPE 0x1008
00071 #define SO_CONTIMEO 0x1009
00072 #define SO_NO_CHECK 0x100a
00076 struct linger {
00077 int l_onoff;
00078 int l_linger;
00079 };
00080
00081
00082 #define SOL_SOCKET 0xfff
00084 #define AF_UNSPEC 0
00085 #define AF_INET 2
00086
00087 #define PF_INET AF_INET
00088 #define PF_UNSPEC AF_UNSPEC
00089
00090 #define IPPROTO_IP 0
00091 #define IPPROTO_TCP 6
00092 #define IPPROTO_UDP 17
00093 #define IPPROTO_UDPLITE 136
00094
00095
00096 #define MSG_PEEK 0x01
00097 #define MSG_WAITALL 0x02
00101 #define MSG_OOB 0x04
00105 #define MSG_DONTWAIT 0x08
00108
00109
00110
00111 #define TCP_NODELAY 0x01
00112 #define TCP_KEEPALIVE 0x02
00115 #define TCP_KEEPIDLE 0x03
00118 #define TCP_KEEPINTVL 0x04
00121 #define TCP_KEEPCNT 0x05
00125 #define IPTOS_TOS_MASK 0x1E
00126 #define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK)
00127 #define IPTOS_LOWDELAY 0x10
00128 #define IPTOS_THROUGHPUT 0x08
00129 #define IPTOS_RELIABILITY 0x04
00130 #define IPTOS_LOWCOST 0x02
00131 #define IPTOS_MINCOST IPTOS_LOWCOST
00132
00133
00134
00135
00136 #define IPTOS_PREC_MASK 0xe0
00137 #define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK)
00138 #define IPTOS_PREC_NETCONTROL 0xe0
00139 #define IPTOS_PREC_INTERNETCONTROL 0xc0
00140 #define IPTOS_PREC_CRITIC_ECP 0xa0
00141 #define IPTOS_PREC_FLASHOVERRIDE 0x80
00142 #define IPTOS_PREC_FLASH 0x60
00143 #define IPTOS_PREC_IMMEDIATE 0x40
00144 #define IPTOS_PREC_PRIORITY 0x20
00145 #define IPTOS_PREC_ROUTINE 0x00
00146
00147
00148
00149 #if defined(_IOW) && defined(_IOR) && !defined(SIOCSHIWAT)
00150 #define SIOCSHIWAT _IOW('s', 0, unsigned long)
00151 #define SIOCGHIWAT _IOR('s', 1, unsigned long)
00152 #define SIOCSLOWAT _IOW('s', 2, unsigned long)
00153 #define SIOCGLOWAT _IOR('s', 3, unsigned long)
00154 #define SIOCATMARK _IOR('s', 7, unsigned long)
00155 #endif
00156
00157
00158 #define SHUT_RD 0
00159 #define SHUT_WR 1
00160 #define SHUT_RDWR 2
00161
00162
00172 extern int socket(int domain, int type, int protocol);
00173
00188 extern int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
00189
00198 extern int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);
00199
00210 extern int shutdown(int sockfd, int how);
00211
00221 extern int getpeername (int sockfd, struct sockaddr *name, socklen_t *namelen);
00222
00233 extern int getsockname (int sockfd, struct sockaddr *name, socklen_t *namelen);
00234
00245 extern int getsockopt (int sockfd, int level, int optname, void *optval, socklen_t *optlen);
00246
00257 extern int setsockopt (int sockfd, int level, int optname, const void *optval, socklen_t optlen);
00258
00266 extern int connect(int sockfd, const struct sockaddr *name, socklen_t namelen);
00267
00274 extern int listen(int sockfd, int backlog);
00275
00286 extern int recv(int sockfd, void *buf, int len, int flags);
00287
00302 extern ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
00303
00313 extern int send(int sockfd, const void *buf, int len, int flags);
00314
00326 extern ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
00327
00328
00329 #endif