defs.h
上传用户:sddyfurun
上传日期:2007-01-04
资源大小:525k
文件大小:5k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. /* Copyright (c) 1995,1996,1997 NEC Corporation.  All rights reserved.       */
  2. /*                                                                           */
  3. /* The redistribution, use and modification in source or binary forms of     */
  4. /* this software is subject to the conditions set forth in the copyright     */
  5. /* document ("Copyright") included with this distribution.                   */
  6. /*
  7.  * $Id: defs.h,v 1.25.4.4 1998/11/16 16:23:46 steve Exp $
  8.  */
  9. #ifndef DEFS_H
  10. #define DEFS_H
  11. #define SOCKS5_VERSION_NAME "Socks5 v1.0r8 "
  12. #ifndef P
  13. #if defined(__STDC__) || defined(HAVE_FUNC_PROTOTYPE)
  14. #define P(x) x
  15. #else
  16. #define P(X) ()
  17. #endif
  18. #endif
  19. #if defined(__SVR4) && !defined(__svr4__)
  20. #define __svr4__
  21. #endif
  22. #if defined(sun) && defined(__svr4__)
  23. #define CONST
  24. #else
  25. #define CONST const
  26. #endif
  27. #ifndef MIN
  28. #define MIN(a, b) (((a) < (b))?(a):(b))
  29. #endif
  30. #ifndef MAX
  31. #define MAX(a, b) (((a) > (b))?(a):(b))
  32. #endif
  33. #if F_SETOWN
  34. #define recv_sigio(x) fcntl((x), F_SETOWN, getpid())
  35. #elif defined FIOSETOWN
  36. #define recv_sigio(x) do { int pid = getpid(); ioctl((x), FIOSETOWN, &pid);   } while (0)
  37. #elif defined FIOSSAIOOWN
  38. #define recv_sigio(x) do { int pid = getpid(); ioctl((x), FIOSSAIOOWN, &pid); } while (0)
  39. #else 
  40. #define recv_sigio(x) /* What should your OS do...??? */
  41. #endif
  42. #ifndef HAVE_STRERROR
  43. #ifdef  HAVE_SYSERRLIST
  44. extern int   sys_nerr;
  45. extern char *sys_errlist[];
  46. #define strerror(x) (((int)(x) < sys_nerr)?sys_errlist[(x)]:"Unknown error")
  47. #else
  48. #define strerror(x) "Inaccessible error string"
  49. #define HAVE_STRERROR
  50. #endif
  51. #endif
  52. #ifndef HAVE_STRDUP
  53. static inline char *strdup(const char *s1) {
  54.     char *s2 = malloc(strlen(s1)+1);
  55.     if (s2) strcpy(s2,s1);
  56.     return s2;
  57. }
  58. #define HAVE_STRDUP
  59. #endif
  60. #ifndef STDIN_FILENO
  61. #define STDIN_FILENO 0
  62. #endif
  63. #ifndef STDOUT_FILENO
  64. #define STDOUT_FILENO 1
  65. #endif
  66. #ifndef STDERR_FILENO
  67. #define STDERR_FILENO 2
  68. #endif
  69. #ifndef S_ISLNK
  70. #define S_ISLNK(m) (((m)&(S_IFMT)) == (S_IFLNK))
  71. #endif
  72. #ifndef IORETTYPE 
  73. #define IORETTYPE int
  74. #endif
  75. #ifndef IOPTRTYPE 
  76. #define IOPTRTYPE void *
  77. #endif
  78. #ifndef IOLENTYPE 
  79. #define IOLENTYPE size_t
  80. #endif
  81. #define ADDRCOMP(a, b) ((a)->sin_port == (b)->sin_port && (a)->sin_addr.s_addr == (b)->sin_addr.s_addr)
  82. #ifndef MAXNAMELEN
  83. #define MAXNAMELEN 256
  84. #endif
  85. #ifndef MAXHOSTNAMELEN
  86. #define MAXHOSTNAMELEN 256
  87. #endif
  88. #ifndef GENERICBUFSIZE
  89. #define GENERICBUFSIZE 4096      /* How big should the flow buffer be???     */
  90. #endif
  91. #ifndef HAVE_IPPORT_RESERVED
  92. #define HAVE_IPPORT_RESERVED
  93. #define IPPORT_RESERVED 1024
  94. #endif
  95. #ifndef INADDR_ANY
  96. #define INADDR_ANY 0x00000000
  97. #endif
  98. #ifndef INADDR_LOOPBACK
  99. #define INADDR_LOOPBACK 0x7f000001
  100. #endif
  101. #define SOCKS_DEF_PORT    1080 /* tcp   */
  102. #define INVALIDPORT (u_short)-1 /* A macro for realizing an invalid port...   */
  103. #define INVALIDADDR (u_int)-1 /* A macro for realizing an invalid address.  */
  104. /* authentication types */
  105. #define AUTH_NONE      0x00
  106. #define AUTH_GSSAPI    0x01
  107. #define AUTH_PASSWD    0x02
  108. /* error types */
  109. #define AUTH_OK        0
  110. #define AUTH_FAIL      -1
  111. /* version */
  112. #define DIRECT   0
  113. #define SOCKS4_VERSION    4
  114. #define SOCKS5_VERSION    5
  115. /* command */
  116. #define SOCKS_CONNECT 1
  117. #define SOCKS_BIND 2
  118. #define SOCKS_UDP       3
  119. #define SOCKS_PING      0x80
  120. #define SOCKS_TRACER    0x81
  121. #define SOCKS_ANY       0xff
  122. /* UDP sub-command */
  123. #define S5UDP_USECLIENTPORT 0xc1
  124. #define S5UDP_BIND 0xc2
  125. #define S5UDP_GETSOCKNAME 0xc3
  126. /* reserved */
  127. #define S5UDP_USECTRL 0x04
  128. /* socks 4 errors */
  129. #define SOCKS_NOERR     0
  130. #define SOCKS_RESULT 90
  131. #define SOCKS_FAIL 91
  132. #define SOCKS_NO_IDENTD 92
  133. #define SOCKS_BAD_ID 93
  134. /* socks 5 errors */
  135. #define SOCKS5_NOERR       0x00
  136. #define SOCKS5_RESULT    0x00
  137. #define SOCKS5_FAIL    0x01
  138. #define SOCKS5_AUTHORIZE   0x02
  139. #define SOCKS5_NETUNREACH  0x03
  140. #define SOCKS5_HOSTUNREACH 0x04
  141. #define SOCKS5_CONNREF     0x05
  142. #define SOCKS5_TTLEXP      0x06
  143. #define SOCKS5_BADCMND     0x07
  144. #define SOCKS5_BADADDR     0x08
  145. /* flags */
  146. #define SOCKS5_FLAG_NONAME  0x01
  147. #define SOCKS5_FLAG_VERBOSE 0x02
  148. #define SOCKS5_IPV4ADDR 0x01 
  149. #define SOCKS5_HOSTNAME 0x03
  150. #define SOCKS5_IPV6ADDR 0x04
  151. /* socks5 offsets */
  152. #define RP_VERSION 0
  153. #define RP_COMMAND 1
  154. #define RP_REPLY   1
  155. #define RP_AUTH    1
  156. #define RP_RESERVE 2
  157. #define RP_FLAGS   3
  158. #define RP_HOSTOFF 4
  159. /* socks4 offsets */
  160. #define SP_VERSION 0
  161. #define SP_COMMAND 1
  162. #define SP_PORTOFF 2
  163. #define SP_HOSTOFF 4
  164. #define SP_USEROFF 8
  165. #define MINHDRSIZE   10
  166. #define IPV4HDRSIZE  10
  167. #define IPV6HDRSIZE  22
  168. #define MAXHDRSIZE   262
  169. #define NAMEHDRSIZE(x) (7 + strlen((x)))
  170. #define UDP_MAX_PAYLOAD ((2<<16) - 18 - 8) /* 8 = sizeof(struct udp), 18  = sizeof(struct ip) */
  171. #ifdef HAVE_NETINET6_IN6_H
  172. #define HOSTLEN(x)  (((x)[RP_FLAGS] == SOCKS5_HOSTNAME)?((x)[RP_HOSTOFF]+1): 
  173.     (((x)[RP_FLAGS] == SOCKS5_IPV4ADDR)?sizeof(struct in_addr):sizeof(struct in_addr6)))
  174. #else
  175. #define HOSTLEN(x)  (((x)[RP_FLAGS] == SOCKS5_HOSTNAME)?((x)[RP_HOSTOFF]+1):sizeof(struct in_addr))
  176. #endif
  177. #define HDRSIZE(x)  (RP_HOSTOFF + HOSTLEN((x)) + sizeof(u_short))
  178. #ifdef HAVE_SHL_LOAD
  179. #define S5LibHandle shl_t
  180. #else
  181. #define S5LibHandle void *
  182. #endif
  183. #ifdef __FreeBSD__
  184. #define UNDERSCORE "_"
  185. #else
  186. #define UNDERSCORE
  187. #endif
  188. #endif