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

VxWorks

开发平台:

C/C++

  1. /* proxyArpLib.h - proxy ARP server include file */
  2. /* Copyright 1984 - 2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01g,10oct01,rae  merge from truestack
  7. 01f,07feb01,spm  added merge record for 30jan01 update from version 01e of
  8.                  tor2_0_x branch (base 01d) and fixed modification history
  9. 01e,30jan01,ijm  merged SPR# 28602 fixes: proxy ARP services are obsolete
  10. 01d,22sep92,rrr  added support for c++
  11. 01c,04jul92,jcf  cleaned up.
  12. 01b,26may92,rrr  the tree shuffle
  13.   -changed includes to have absolute path from h/
  14. 01a,20sep91,elh   written.
  15. */
  16. #ifndef __INCproxyArpLibh
  17. #define __INCproxyArpLibh
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21. /* includes */
  22. #include "vwModNum.h"
  23. #include "lstLib.h"
  24. #include "semLib.h"
  25. #include "net/if.h"
  26. #include "netinet/if_ether.h"
  27. #include "netinet/in.h"
  28. #include "hashLib.h"
  29. /* defines */
  30. /* errors */
  31. #define S_proxyArpLib_INVALID_PARAMETER (M_proxyArpLib | 1)
  32. #define S_proxyArpLib_INVALID_INTERFACE (M_proxyArpLib | 2)
  33. #define S_proxyArpLib_INVALID_PROXY_NET (M_proxyArpLib | 3)
  34. #define S_proxyArpLib_INVALID_CLIENT (M_proxyArpLib | 4)
  35. #define S_proxyArpLib_INVALID_ADDRESS (M_proxyArpLib | 5)
  36. #define S_proxyArpLib_TIMEOUT (M_proxyArpLib | 6)
  37. /* proxy message types  */
  38. #define PROXY_PROBE 0  /* probe  */
  39. #define PROXY_REG 1 /* register  */
  40. #define PROXY_UNREG 2 /* unregister */
  41. #define PROXY_ACK 50 /* ack */
  42. #define PROXY_TYPE 0x3000  /* doesn't leave backplane */
  43. #define XMIT_MAX 5
  44. #define XMIT_DELAY 5
  45. /* typedefs */
  46. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  47. #pragma align 1                 /* tell gcc960 not to optimize alignments */
  48. #endif  /* CPU_FAMILY==I960 */
  49. typedef struct proxy_net /* proxy network structure  */
  50.     {
  51.     NODE netNode; /* node for net list */
  52.     struct in_addr  proxyAddr; /* proxy interface address  */
  53.     struct in_addr mainAddr; /* main interface address  */
  54.     LIST   clientList;  /* list of clients  */
  55.     } PROXY_NET;
  56. typedef struct proxy_clnt /* proxy client structure */
  57.     {
  58.     HASH_NODE hashNode; /* hash node  */
  59.     struct in_addr ipaddr; /* client ip address (key) */
  60.     u_char  hwaddr [6];  /* client hw address  */
  61.     PROXY_NET * pNet; /* proxy network information  */
  62.     NODE clientNode; /* client node on network list  */
  63.     } PROXY_CLNT;
  64. typedef struct port_node
  65.     {
  66.     HASH_NODE hashNode; /* hash  node */
  67.     int port; /* port number enabled */
  68.     } PORT_NODE;
  69. typedef struct proxy_msg /* proxy message  */
  70.     {
  71.     int op; /* operation */
  72.     struct in_addr clientAddr; /* client address */
  73.     struct in_addr serverAddr; /* server ip address */
  74.     u_char  clientHwAddr [6]; /* client hw address */
  75.     u_char  serverHwAddr [6]; /* server hw address */
  76.     } PROXY_MSG;
  77. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  78. #pragma align 0                 /* turn off alignment requirement */
  79. #endif  /* CPU_FAMILY==I960 */
  80. #if defined(__STDC__) || defined(__cplusplus)
  81. extern STATUS  proxyArpLibInit (int clientSizeLog2, int portSizeLog2);
  82. extern void  proxyPortShow (void);
  83. extern STATUS  proxyPortFwdOn (int port);
  84. extern STATUS  proxyPortFwdOff (int port);
  85. extern STATUS  proxyNetCreate (char * proxyAddr, char * mainAddr);
  86. extern STATUS  proxyNetDelete (char * proxyAddr);
  87. #else   /* __STDC__ */
  88. extern STATUS  proxyArpLibInit ();
  89. extern void  proxyPortShow ();
  90. extern STATUS  proxyPortFwdOn ();
  91. extern STATUS  proxyPortFwdOff ();
  92. extern STATUS  proxyNetCreate ();
  93. extern STATUS  proxyNetDelete ();
  94. #endif  /* __STDC__ */
  95. #ifdef __cplusplus
  96. }
  97. #endif
  98. #endif /* __INCproxyArpLibh */