config.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:8k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /* -*- Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
  2. /*
  3.  * Copyright (c) 1995-1997 The Regents of the University of California.
  4.  * All rights reserved.
  5.  * 
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  * 1. Redistributions of source code must retain the above copyright
  10.  *    notice, this list of conditions and the following disclaimer.
  11.  * 2. Redistributions in binary form must reproduce the above copyright
  12.  *    notice, this list of conditions and the following disclaimer in the
  13.  *    documentation and/or other materials provided with the distribution.
  14.  * 3. All advertising materials mentioning features or use of this software
  15.  *    must display the following acknowledgement:
  16.  *  This product includes software developed by the Network Research
  17.  *  Group at Lawrence Berkeley National Laboratory.
  18.  * 4. Neither the name of the University nor of the Laboratory may be used
  19.  *    to endorse or promote products derived from this software without
  20.  *    specific prior written permission.
  21.  * 
  22.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  23.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  26.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32.  * SUCH DAMAGE.
  33.  *
  34.  * @(#) $Header: /cvsroot/nsnam/ns-2/config.h,v 1.58 2007/01/01 17:38:41 mweigle Exp $ (LBL)
  35.  */
  36. #ifndef ns_config_h
  37. #define ns_config_h
  38. #define MEMDEBUG_SIMULATIONS
  39. /* pick up standard types */
  40. #include <sys/types.h>
  41. #if STDC_HEADERS
  42. #include <stdlib.h>
  43. #include <stddef.h>
  44. #endif
  45. /* get autoconf magic */
  46. #ifdef WIN32
  47. #include "autoconf-win32.h"
  48. #else
  49. #include "autoconf.h"
  50. #endif
  51. /* after autoconf (and HAVE_INT64) we can pick up tclcl.h */
  52. #ifndef stand_alone
  53. #ifdef __cplusplus
  54. #include <tclcl.h>
  55. #endif /* __cplusplus */
  56. #endif
  57. /* handle stl and namespaces */
  58. /*
  59.  * add u_char and u_int
  60.  * Note: do NOT use these expecting them to be 8 and 32 bits long...
  61.  * use {,u_}int{8,16,32}_t if you care about size.
  62.  */
  63. /* Removed typedef and included checks in the configure.in 
  64.  typedef unsigned char u_char;
  65. typedef unsigned int u_int;
  66. */
  67. typedef int32_t nsaddr_t; 
  68. typedef int32_t nsmask_t; 
  69. /* 32-bit addressing support */
  70. struct ns_addr_t {
  71. int32_t addr_;
  72. int32_t port_;
  73. #ifdef __cplusplus
  74. bool isEqual (ns_addr_t const &o) {
  75. return ((addr_ == o.addr_) && (port_ == o.port_))?true:false;
  76. }
  77. #endif /* __cplusplus */
  78. };
  79. /* 64-bit integer support */
  80. #ifndef STRTOI64
  81. #if defined(SIZEOF_LONG) && SIZEOF_LONG >= 8
  82. #define STRTOI64 strtol
  83. #define STRTOI64_FMTSTR "%ld"
  84. /*#define STRTOI64(S) strtol((S), NULL, 0) */
  85. #elif defined(HAVE_STRTOQ)
  86. #define STRTOI64 strtoq
  87. #define STRTOI64_FMTSTR "%lld"
  88. /* #define STRTOI64(S) strtoq((S), NULL, 0) */
  89. #elif defined(HAVE_STRTOLL)
  90. #define STRTOI64 strtoll
  91. #define STRTOI64_FMTSTR "%lld"
  92. /* #define STRTOI64(S) strtoll((S), NULL, 0) */
  93. #endif
  94. #endif
  95. #define NS_ALIGN (8) /* byte alignment for structs (eg packet.cc) */
  96. /* some global definitions */
  97. #define TINY_LEN        8
  98. #define SMALL_LEN 32
  99. #define MID_LEN 256
  100. #define BIG_LEN 4096
  101. #define HUGE_LEN 65536
  102. #define TRUE 1
  103. #define FALSE 0
  104. /*
  105.  * get defintions of bcopy and/or memcpy
  106.  * Different systems put them in string.h or strings.h, so get both
  107.  * (with autoconf help).
  108.  */
  109. #ifdef HAVE_STRING_H
  110. #include <string.h>
  111. #endif /* HAVE_STRING_H */
  112. #ifdef HAVE_STRINGS_H
  113. #include <strings.h>
  114. #endif /* HAVE_STRINGS_H */
  115. #ifndef HAVE_BZERO
  116. #define bzero(dest,count) memset(dest,0,count)
  117. #endif
  118. #ifndef HAVE_BCOPY
  119. #define bcopy(src,dest,size) memcpy(dest,src,size)
  120. #endif
  121. #include <stdlib.h>
  122. #ifdef HAVE_UNISTD_H
  123. #include <unistd.h>
  124. #endif /* HAVE_UNISTD_H */
  125. #ifdef HAVE_TIME_H
  126. #include <time.h>
  127. #endif /* HAVE_TIME_H */
  128. #ifdef HAVE_ARPA_INET_H
  129. #include <arpa/inet.h>
  130. #endif /* HAVE_ARPA_INET_H */
  131. #if (defined(__hpux) || defined(_AIX)) && defined(__cplusplus)
  132. /* these definitions are perhaps vestigal */
  133. extern "C" {
  134. int strcasecmp(const char *, const char *);
  135. clock_t clock(void);
  136. #if !defined(__hpux)
  137. int gethostid(void);
  138. #endif
  139. time_t time(time_t *);
  140. char *ctime(const time_t *);
  141. }
  142. #endif
  143. #if defined(NEED_SUNOS_PROTOS) && defined(__cplusplus)
  144. extern "C" {
  145. struct timeval;
  146. struct timezone;
  147. int gettimeofday(struct timeval*, ...);
  148. int ioctl(int fd, int request, ...);
  149. int close(int);
  150. int strcasecmp(const char*, const char*);
  151. int srandom(int); /* (int) for sunos, (unsigned) for solaris */
  152. int random();
  153. int socket(int, int, int);
  154. int setsockopt(int s, int level, int optname, void* optval, int optlen);
  155. struct sockaddr;
  156. int connect(int s, sockaddr*, int);
  157. int bind(int s, sockaddr*, int);
  158. struct msghdr;
  159. int send(int s, void*, int len, int flags);
  160. int sendmsg(int, msghdr*, int);
  161. int recv(int, void*, int len, int flags);
  162. int recvfrom(int, void*, int len, int flags, sockaddr*, int);
  163. int gethostid();
  164. int getpid();
  165. int gethostname(char*, int);
  166. void abort();
  167. }
  168. #endif
  169. #if defined(SOLARIS_MIN_MAX)
  170. /* Macros for min/max. */
  171. #ifndef MIN
  172. #define MIN(a,b) (((a)<(b))?(a):(b))
  173. #endif /* MIN */
  174. #ifndef MAX
  175. #define MAX(a,b) (((a)>(b))?(a):(b))
  176. #endif  /* MAX */
  177. #endif
  178. #if defined(NEED_SUNOS_PROTOS) || defined(solaris)
  179. extern "C" {
  180. #if defined(NEED_SUNOS_PROTOS)
  181. caddr_t sbrk(int incr);
  182. #endif
  183. int getrusage(int who, struct rusage* rusage);
  184. }
  185. #endif
  186. #if defined(__SUNPRO_CC)
  187. #include <cmath>
  188. static double log(const int x)
  189. { return log((double)x); }
  190. static double log10(const int x)
  191. { return log10((double)x); }
  192. static double pow(const int x, const int y)
  193. { return std::pow((double)x,(double)y); }
  194. static double pow(const int x, const double y)
  195. { return std::pow((double)x,y); }
  196. #endif
  197. #ifdef WIN32
  198. #include <windows.h>
  199. #include <winsock.h>
  200. #include <time.h> /* For clock_t */
  201. #include <minmax.h>
  202. #define NOMINMAX
  203. #undef min
  204. #undef max
  205. #undef abs
  206. #define MAXHOSTNAMELEN 256
  207. #define _SYS_NMLN 9
  208. struct utsname {
  209. char sysname[_SYS_NMLN];
  210. char nodename[_SYS_NMLN];
  211. char release[_SYS_NMLN];
  212. char version[_SYS_NMLN];
  213. char machine[_SYS_NMLN];
  214. };
  215. typedef char *caddr_t;
  216. struct iovec {
  217. caddr_t iov_base;
  218. int iov_len;
  219. };
  220. #ifndef TIMEZONE_DEFINED_
  221. #define TIMEZONE_DEFINED_
  222. struct timezone {
  223. int tz_minuteswest;
  224. int tz_dsttime;
  225. };
  226. #endif
  227. typedef int pid_t;
  228. typedef int uid_t;
  229. typedef int gid_t;
  230. #if defined(__cplusplus)
  231. extern "C" {
  232. #endif
  233. int uname(struct utsname *); 
  234. int getopt(int, char * const *, const char *);
  235. int strcasecmp(const char *, const char *);
  236. /* these shouldn't be used/needed, even on windows */
  237. /* #define srandom srand */
  238. /* #define random rand */
  239. int gettimeofday(struct timeval *p, struct timezone *z);
  240. int gethostid(void);
  241. int getuid(void);
  242. int getgid(void);
  243. int getpid(void);
  244. int nice(int);
  245. int sendmsg(int, struct msghdr*, int);
  246. /* Why this is here, inside a #ifdef WIN32 ??
  247. #ifndef WIN32
  248. time_t time(time_t *);
  249. #endif
  250. */
  251. #define strncasecmp _strnicmp
  252. #if defined(__cplusplus)
  253. }
  254. #endif
  255. #ifdef WSAECONNREFUSED
  256. #define ECONNREFUSED WSAECONNREFUSED
  257. #define ENETUNREACH WSAENETUNREACH
  258. #define EHOSTUNREACH WSAEHOSTUNREACH
  259. #define EWOULDBLOCK WSAEWOULDBLOCK
  260. #endif /* WSAECONNREFUSED */
  261. #ifndef M_PI
  262. #define M_PI 3.14159265358979323846
  263. #endif /* M_PI */
  264. #endif /* WIN32 */
  265. #ifdef sgi
  266. #include <math.h>
  267. #endif
  268. /* Declare our implementation of snprintf() so that ns etc. can use it. */
  269. #ifndef HAVE_SNPRINTF
  270. #if defined(__cplusplus)
  271. extern "C" {
  272. #endif
  273. extern int snprintf(char *buf, int size, const char *fmt, ...);
  274. #if defined(__cplusplus)
  275. }
  276. #endif
  277. #endif
  278. /***** These values are no longer required to be hardcoded -- mask and shift values are 
  279. available from Class Address. *****/
  280. /* While changing these ensure that values are consistent with tcl/lib/ns-default.tcl */
  281. /* #define NODEMASK 0xffffff */
  282. /* #define NODESHIFT 8 */
  283. /* #define PORTMASK 0xff */
  284. #endif