pingLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* pingLib.h - Packet InterNet Groper (PING) library header */
  2. /* Copyright 1994 - 2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01d,12mar02,rae  Print stats when task killed (SPR #73570)
  7. 01c,10oct01,rae  merge from truestack ver 01e, base 01a (SPR 67440)
  8. 01b,30oct00,gnn  Added PING_OPT_NOHOST flag to deal with SPR 22766
  9. 01a,25oct94,dzb  written.
  10. */
  11. #ifndef __INCpingLibh
  12. #define __INCpingLibh
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /* includes */
  17. #include "vwModNum.h"
  18. #include "hostLib.h"
  19. #include "inetLib.h"
  20. #include "semLib.h"
  21. #include "wdLib.h"
  22. /* defines */
  23. #define PING_MAXPACKET 4096 /* max packet size */
  24. #define PING_MINPACKET          12      /* min packet size */
  25. #define PING_INTERVAL 1 /* default packet interval in seconds */
  26. #define PING_TMO 5 /* default packet timeout in seconds */
  27. #define ICMP_PROTO 1 /* icmp socket proto id */
  28. #define ICMP_TYPENUM 20 /* icmp proto type identifier */
  29. #define PING_TASK_NAME_LEN 20 /* max ping Tx task name length */
  30. /* status codes */
  31. #define S_pingLib_NOT_INITIALIZED (M_pingLib | 1)
  32. #define S_pingLib_TIMEOUT (M_pingLib | 2)
  33.  
  34. /* flags */
  35. #define PING_OPT_SILENT 0x1 /* work silently */
  36. #define PING_OPT_DONTROUTE 0x2 /* dont route option */
  37. #define PING_OPT_DEBUG 0x4 /* print debugging messages */
  38. #define PING_OPT_NOHOST         0x8     /* dont do host lookup */
  39. /* typedefs */
  40. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  41. #pragma align 1                 /* tell gcc960 not to optimize alignments */
  42. #endif  /* CPU_FAMILY==I960 */
  43. typedef struct pingStat /* PING_STAT */
  44.     {
  45.     struct pingStat * statNext; /* next struct in list */
  46.     int pingFd;                 /* socket file descriptor */
  47.     char toHostName [MAXHOSTNAMELEN + 2];/* name to ping - PAD */
  48.     char toInetName [INET_ADDR_LEN];/* IP addr to ping */
  49.     u_char bufTx [PING_MAXPACKET]; /* transmit buffer */
  50.     u_char bufRx [PING_MAXPACKET]; /* receive buffer */
  51.     struct icmp * pBufIcmp; /* ptr to icmp */
  52.     ulong_t * pBufTime; /* ptr to time */
  53.     int dataLen; /* size of data portion */
  54.     int numPacket; /* total # of packets to send */
  55.     int numTx; /* number of packets sent */
  56.     int numRx; /* number of packets received */
  57.     int idRx; /* id of Rx task */
  58.     int clkTick; /* sys clock ticks per second */
  59.     int tMin; /* min RT time (ms) */
  60.     int tMax; /* max RT time (ms) */
  61.     int tSum; /* sum of all times */
  62.     int flags; /* option flags */
  63.     int                 vsid;                   /* virtual stack being used */
  64.     } PING_STAT;
  65. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  66. #pragma align 0                 /* turn off alignment requirement */
  67. #endif  /* CPU_FAMILY==I960 */
  68. /* forward declarations */
  69.  
  70. #if defined(__STDC__) || defined(__cplusplus)
  71.  
  72. extern STATUS  pingLibInit (void);
  73. extern STATUS  ping (char *host, int numPackets, ulong_t options);
  74. #else   /* __STDC__ */
  75. extern STATUS pingLibInit ();
  76. extern STATUS ping ();
  77.  
  78. #endif  /* __STDC__ */
  79.  
  80. #ifdef __cplusplus
  81. }
  82. #endif
  83.  
  84. #endif /* __INCpingLibh */