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

VxWorks

开发平台:

C/C++

  1. /* muxLib.h - definitions for the MUX library */
  2. /* Copyright 1984 - 2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 02b,10oct01,rae  merge from truestack ver 02g, base 01z (SPRs 32626, 64406)
  7. 02a,16oct00,spm  merged version 02b from tor3_0_x branch (adds support for
  8.                  link-level broadcasts and fixes reboot mechanism)
  9. 01z,29apr99,pul  Upgraded NPT phase3 code to tor2.0.0
  10. 01y,02mar99,pul  added muxShow() declaration, removed muxDevNameGet: SPR# 24242
  11. 01x,13nov98.n_s  add muxDevStopAll. spr #23229
  12. 01w,19mar99,sj   removed nptHook structure
  13. 01v,27oct98,pul  changed nptHookRtn to return STATUS 
  14. 01u,12oct98,sj   added TK hooks and errors
  15. 01t,08dec97,gnn  END code review fixes.
  16. 01s,17oct97,vin  changed prototypes.
  17. 01r,09sep98,ham  corrected the comment for MUX_MAX_IFTYPE.
  18. 01q,09sep98,ham  associate MUX_MAX_TYPE with IFT_MAX_TYPE,SPR#22298.
  19. 01p,08sep98,ham  moved MUX_MAX_TYPE from muxLib.c,SPR#22298.
  20. 01o,06oct97,gnn  added include of end.h which we need for prototypes
  21. 01n,03oct97,gnn  fixed SPR 8986, added function prototypes
  22. 01m,25sep97,gnn  SENS beta feedback fixes
  23. 01l,22aug97,gnn  update of polled mode.
  24. 01k,19aug97,gnn  changes due to new buffering scheme.
  25. 01j,12aug97,gnn  changes necessitated by MUX/END update.
  26. 01i,15may97,gnn  added new protocol type MUX_PROTO_OUTPUT
  27. 01h,17apr97,gnn  added muxDevNameGet
  28.                  changed muxDevLoad to return void* to device
  29. 01g,07apr97,gnn  added new error defines.
  30.                  modified muxDevLoad to follow new paradigm.
  31. 01f,12mar97,gnn  fixed a bug in muxReceive's calling API.
  32. 01e,03feb97,gnn  Modified muxBuf code to be more generic and support other,
  33.                  non-TMD systems.
  34. 01d,21jan97,gnn  Changed interfaces for muxSend.
  35.                  Removed TxBuf stuff.
  36.                  Added buffer management stuff.
  37. 01c,23oct96,gnn  name changes to follow coding standards.
  38. 01b,22oct96,gnn  added MUX_PROTO_PROMISC define to hold definition
  39.                  of a pomiscuous protocol
  40.                  replaced netVectors with netBuffers
  41. 01a,05May96,gnn  written.
  42. */
  43.  
  44. /*
  45. DESCRIPTION
  46. This file includes function prototypes for the MUX.
  47. INCLUDE FILES:
  48. */
  49. #ifndef __INCmuxLibh
  50. #define __INCmuxLibh
  51. #ifdef __cplusplus
  52. extern "C" {
  53. #endif
  54. /* includes */
  55. #include "net/if_types.h"
  56. #include "end.h"
  57. /* defints */
  58. /* MUX_MAX_IFTYPE associates with IFT_MAX_TYPE as default. If the user wants
  59.  * to add a resource function, verify it's smaller than MUX_MAX_IFTYPE.
  60.  */
  61. #define MUX_MAX_IFTYPE IFT_MAX_TYPE
  62. /* Error defines. */
  63. #define S_muxLib_LOAD_FAILED                  (M_muxLib | 1)
  64. #define S_muxLib_NO_DEVICE                    (M_muxLib | 2)
  65. #define S_muxLib_INVALID_ARGS                 (M_muxLib | 3)
  66. #define S_muxLib_ALLOC_FAILED                 (M_muxLib | 4)
  67. #define S_muxLib_ALREADY_BOUND                (M_muxLib | 5)
  68. #define S_muxLib_UNLOAD_FAILED                (M_muxLib | 6)
  69. #define S_muxLib_NOT_A_TK_DEVICE              (M_muxLib | 7)
  70. #define S_muxLib_NO_TK_DEVICE                 (M_muxLib | 8)
  71. #define S_muxLib_END_BIND_FAILED              (M_muxLib | 9)
  72. /* These are above all SAPs but still in the ethernet size range */
  73. /* so won't interfere with RFC 1700 */
  74. #define MUX_PROTO_PROMISC 0x100
  75. #define MUX_PROTO_SNARF         0x101
  76. #define MUX_PROTO_OUTPUT        0x102
  77. /* The modes in which the MUX can operate.  Part of WRS 1152. */
  78. enum MUX_MODE {MUX_MODE_NORM, MUX_MODE_POLL};
  79. #define MUX_POLL_TASK_PRIORITY 255
  80. #define MUX_POLL_TASK_DELAY 0
  81. /* Defines for the MUX in polled mode. */
  82. /* typedefs */
  83. /* Module Object Definition */
  84. typedef struct _muxLib
  85.     {
  86.     int debug;
  87.     SEM_ID lock;                  /* To lock on muxDevLoads. */
  88.     int mode;
  89.     int priority;
  90.     int taskDelay;
  91.     int taskID;
  92.     } muxLib;
  93. /*
  94.  * These data structures define the 2D list of address resolution
  95.  * functions.  This list is ordered by ifType and the protocol.
  96.  */
  97. typedef struct mux_addr_rec
  98.     {
  99.     NODE node;
  100.     long protocol;
  101.     FUNCPTR addrResFunc;
  102.     } MUX_ADDR_REC;
  103. /* globals */
  104. /* locals */
  105. /* forward declarations */
  106. STATUS muxLibInit ();
  107. IMPORT void * muxDevLoad(int unit, END_OBJ* (*endLoad) (char *, void*),
  108.                            char *initString,
  109.                            BOOL loaning, void*pBSP);
  110. STATUS muxDevStart(void* pCookie);
  111. STATUS muxDevStop(void* pCookie);
  112. void muxShow(char* pDevName, int unit);
  113. IMPORT STATUS muxDevStopAll (int timeout);
  114. IMPORT STATUS muxDevUnload(char* pName, int unit);
  115. void * muxBind (char * pName, int unit,
  116.                   BOOL (*stackRcvRtn) (void*, long,M_BLK_ID, LL_HDR_INFO *,
  117.                                        void*),
  118.                   STATUS (*stackShutdownRtn) (void*, void*),
  119.                   STATUS (*stackTxRestartRtn) (void*, void*),
  120.                   void (*stackErrorRtn) (END_OBJ*, END_ERR*, void*),
  121.                   long type, char* pProtoName, void* pSpare);
  122. IMPORT STATUS muxUnbind(void* pCookie, long type, FUNCPTR stackShutdownRtn);
  123. IMPORT STATUS muxSend(void* pCookie, M_BLK_ID pNBuff);
  124. IMPORT STATUS muxReceive(void* pCookie, M_BLK_ID pNBuff);
  125. IMPORT STATUS muxPollSend(void* pCookie, M_BLK_ID pNBuff);
  126. IMPORT STATUS muxPollReceive(void* pCookie, M_BLK_ID pNBuff);
  127. IMPORT STATUS muxIoctl(void* pCookie, int cmd, caddr_t data);
  128. IMPORT STATUS muxMCastAddrAdd(void* pCookie, char* pAddress);
  129. IMPORT STATUS muxMCastAddrDel(void* pCookie, char* pAddress);
  130. IMPORT STATUS muxMCastAddrGet(void* pCookie, MULTI_TABLE* pTable);
  131. IMPORT char* muxLoanGet(void* pCookie);
  132. IMPORT UINT8* muxRefCntGet(void* pCookie);
  133. IMPORT void muxLoanRet(void* pCookie, char* pData, UINT8* pRef);
  134. IMPORT M_BLK_ID muxLinkHeaderCreate(void* pCookie, M_BLK_ID pPacket,
  135.                                M_BLK_ID pSrcAddr, M_BLK_ID pDstAddr,
  136.                                BOOL bcastFlag);
  137. IMPORT M_BLK_ID muxAddressForm(void* pCookie, M_BLK_ID pMblk,
  138.                                M_BLK_ID pSrcAddr, M_BLK_ID pDstAddr);
  139. IMPORT STATUS muxPacketDataGet(void* pCookie, M_BLK_ID pMblk, LL_HDR_INFO *);
  140. IMPORT STATUS muxPacketAddrGet (void* pCookie, M_BLK_ID pMblk,
  141.                                 M_BLK_ID pSrc,
  142.                                 M_BLK_ID pDst,
  143.                                 M_BLK_ID pESrc,
  144.                                 M_BLK_ID pEDst);
  145. IMPORT void muxTxRestart(void* pCookie);
  146. IMPORT void muxError ( void* pCookie, END_ERR* pError );
  147. IMPORT END_OBJ* endFindByName(char* pName, int unit);
  148. IMPORT STATUS muxAddrResFuncDel ( long ifType, long protocol );
  149. IMPORT FUNCPTR muxAddrResFuncGet ( long ifType, long protocol );
  150. IMPORT STATUS muxAddrResFuncAdd ( long ifType, long protocol,
  151.                                   FUNCPTR addrResFunc);
  152. IMPORT BOOL muxDevExists (char* pName, int unit);
  153. IMPORT STATUS muxTaskDelaySet ( int delay );
  154. IMPORT STATUS muxTaskDelayGet ( int* pDelay );
  155. IMPORT STATUS muxTaskPrioritySet ( int priority );
  156. IMPORT STATUS muxTaskPriorityGet ( int* pPriority );
  157. #ifdef ROUTER_STACK
  158. IMPORT void * muxProtoPrivDataGet (END_OBJ * pEnd, int proto);
  159. #endif /* ROUTER_STACK */
  160. IMPORT STATUS muxPollDevAdd (int, char *);
  161. IMPORT STATUS muxPollDevDel (int, char *);
  162. IMPORT BOOL   muxPollDevStat (int, char *);
  163. IMPORT void   muxPollTask (void);
  164. IMPORT STATUS muxPollStart (int, int, int);
  165. IMPORT STATUS muxPollEnd (void);
  166. #ifdef __cplusplus
  167. }
  168. #endif
  169. #endif /* __INCmuxLibh */