ndiswan.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. /*
  2. * ndiswan.h
  3. *
  4. * Definitions for NDIS WAN miniport drivers
  5. *
  6. * This file is part of the w32api package.
  7. *
  8. * Contributors:
  9. * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10. *
  11. * THIS SOFTWARE IS NOT COPYRIGHTED
  12. *
  13. * This source code is offered for use in the public domain. You may
  14. * use, modify or distribute it freely.
  15. *
  16. * This code is distributed in the hope that it will be useful but
  17. * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18. * DISCLAIMED. This includes but is not limited to warranties of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20. *
  21. */
  22. #pragma once
  23. #ifndef _NDIS_WAN_
  24. #define _NDIS_WAN_
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28. #define NDIS_USE_WAN_WRAPPER 0x00000001
  29. #define NDIS_STATUS_TAPI_INDICATION ((NDIS_STATUS)0x40010080L)
  30. /* NDIS_WAN_INFO.FramingBits constants */
  31. #define RAS_FRAMING 0x00000001
  32. #define RAS_COMPRESSION 0x00000002
  33. #define ARAP_V1_FRAMING 0x00000004
  34. #define ARAP_V2_FRAMING 0x00000008
  35. #define ARAP_FRAMING (ARAP_V1_FRAMING | ARAP_V2_FRAMING)
  36. #define PPP_MULTILINK_FRAMING 0x00000010
  37. #define PPP_SHORT_SEQUENCE_HDR_FORMAT 0x00000020
  38. #define PPP_MC_MULTILINK_FRAMING 0x00000040
  39. #define PPP_FRAMING 0x00000100
  40. #define PPP_COMPRESS_ADDRESS_CONTROL 0x00000200
  41. #define PPP_COMPRESS_PROTOCOL_FIELD 0x00000400
  42. #define PPP_ACCM_SUPPORTED 0x00000800
  43. #define SLIP_FRAMING 0x00001000
  44. #define SLIP_VJ_COMPRESSION 0x00002000
  45. #define SLIP_VJ_AUTODETECT 0x00004000
  46. #define MEDIA_NRZ_ENCODING 0x00010000
  47. #define MEDIA_NRZI_ENCODING 0x00020000
  48. #define MEDIA_NLPID 0x00040000
  49. #define RFC_1356_FRAMING 0x00100000
  50. #define RFC_1483_FRAMING 0x00200000
  51. #define RFC_1490_FRAMING 0x00400000
  52. #define LLC_ENCAPSULATION 0x00800000
  53. #define SHIVA_FRAMING 0x01000000
  54. #define NBF_PRESERVE_MAC_ADDRESS 0x01000000
  55. #define PASS_THROUGH_MODE 0x10000000
  56. #define RAW_PASS_THROUGH_MODE 0x20000000
  57. #define TAPI_PROVIDER 0x80000000
  58. #define BRIDGING_FLAG_LANFCS 0x00000001
  59. #define BRIDGING_FLAG_LANID 0x00000002
  60. #define BRIDGING_FLAG_PADDING 0x00000004
  61. #define BRIDGING_TINYGRAM 0x00000001
  62. #define BRIDGING_LANID 0x00000002
  63. #define BRIDGING_NO_SPANNING_TREE 0x00000004
  64. #define BRIDGING_8021D_SPANNING_TREE 0x00000008
  65. #define BRIDGING_8021G_SPANNING_TREE 0x00000010
  66. #define BRIDGING_SOURCE_ROUTING 0x00000020
  67. #define BRIDGING_DEC_LANBRIDGE 0x00000040
  68. #define BRIDGING_TYPE_RESERVED 0x00000001
  69. #define BRIDGING_TYPE_8023_CANON 0x00000002
  70. #define BRIDGING_TYPE_8024_NO_CANON 0x00000004
  71. #define BRIDGING_TYPE_8025_NO_CANON 0x00000008
  72. #define BRIDGING_TYPE_FDDI_NO_CANON 0x00000010
  73. #define BRIDGING_TYPE_8024_CANON 0x00000400
  74. #define BRIDGING_TYPE_8025_CANON 0x00000800
  75. #define BRIDGING_TYPE_FDDI_CANON 0x00001000
  76. /* NDIS_WAN_COMPRESS_INFO.MSCompType constants */
  77. #define NDISWAN_COMPRESSION 0x00000001
  78. #define NDISWAN_ENCRYPTION 0x00000010
  79. #define NDISWAN_40_ENCRYPTION 0x00000020
  80. #define NDISWAN_128_ENCRYPTION 0x00000040
  81. #define NDISWAN_56_ENCRYPTION 0x00000080
  82. #define NDISWAN_HISTORY_LESS 0x01000000
  83. /* NDIS_WAN_COMPRESS_INFO.CompType constants */
  84. #define COMPTYPE_OUI 0
  85. #define COMPTYPE_NT31RAS 254
  86. #define COMPTYPE_NONE 255
  87. #define WAN_ERROR_CRC ((ULONG)0x00000001)
  88. #define WAN_ERROR_FRAMING ((ULONG)0x00000002)
  89. #define WAN_ERROR_HARDWAREOVERRUN ((ULONG)0x00000004)
  90. #define WAN_ERROR_BUFFEROVERRUN ((ULONG)0x00000008)
  91. #define WAN_ERROR_TIMEOUT ((ULONG)0x00000010)
  92. #define WAN_ERROR_ALIGNMENT ((ULONG)0x00000020)
  93. #define NdisMWanInitializeWrapper(NdisWrapperHandle, \
  94. SystemSpecific1, \
  95. SystemSpecific2, \
  96. SystemSpecific3) \
  97. { \
  98. NdisMInitializeWrapper(NdisWrapperHandle, \
  99. SystemSpecific1, \
  100. SystemSpecific2, \
  101. SystemSpecific3); \
  102. }
  103. typedef struct _NDIS_WAN_INFO {
  104. OUT ULONG MaxFrameSize;
  105. OUT ULONG MaxTransmit;
  106. OUT ULONG HeaderPadding;
  107. OUT ULONG TailPadding;
  108. OUT ULONG Endpoints;
  109. OUT UINT MemoryFlags;
  110. OUT NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress;
  111. OUT ULONG FramingBits;
  112. OUT ULONG DesiredACCM;
  113. } NDIS_WAN_INFO, *PNDIS_WAN_INFO;
  114. typedef struct _NDIS_WAN_GET_LINK_INFO {
  115. IN NDIS_HANDLE NdisLinkHandle;
  116. IN ULONG MaxSendFrameSize;
  117. OUT ULONG MaxRecvFrameSize;
  118. OUT ULONG HeaderPadding;
  119. OUT ULONG TailPadding;
  120. OUT ULONG SendFramingBits;
  121. OUT ULONG RecvFramingBits;
  122. OUT ULONG SendCompressionBits;
  123. OUT ULONG RecvCompressionBits;
  124. OUT ULONG SendACCM;
  125. OUT ULONG RecvACCM;
  126. } NDIS_WAN_GET_LINK_INFO, *PNDIS_WAN_GET_LINK_INFO;
  127. typedef struct _NDIS_WAN_SET_LINK_INFO {
  128. IN NDIS_HANDLE NdisLinkHandle;
  129. IN ULONG MaxSendFrameSize;
  130. IN ULONG MaxRecvFrameSize;
  131. IN ULONG HeaderPadding;
  132. IN ULONG TailPadding;
  133. IN ULONG SendFramingBits;
  134. IN ULONG RecvFramingBits;
  135. IN ULONG SendCompressionBits;
  136. IN ULONG RecvCompressionBits;
  137. IN ULONG SendACCM;
  138. IN ULONG RecvACCM;
  139. } NDIS_WAN_SET_LINK_INFO, *PNDIS_WAN_SET_LINK_INFO;
  140. typedef struct _NDIS_WAN_GET_BRIDGE_INFO {
  141. IN NDIS_HANDLE NdisLinkHandle;
  142. OUT USHORT LanSegmentNumber;
  143. OUT UCHAR BridgeNumber;
  144. OUT UCHAR BridgingOptions;
  145. OUT ULONG BridgingCapabilities;
  146. OUT UCHAR BridgingType;
  147. OUT UCHAR MacBytes[6];
  148. } NDIS_WAN_GET_BRIDGE_INFO, *PNDIS_WAN_GET_BRIDGE_INFO;
  149. typedef struct _NDIS_WAN_SET_BRIDGE_INFO {
  150. IN NDIS_HANDLE NdisLinkHandle;
  151. IN USHORT LanSegmentNumber;
  152. IN UCHAR BridgeNumber;
  153. IN UCHAR BridgingOptions;
  154. IN ULONG BridgingCapabilities;
  155. IN UCHAR BridgingType;
  156. IN UCHAR MacBytes[6];
  157. } NDIS_WAN_SET_BRIDGE_INFO, *PNDIS_WAN_SET_BRIDGE_INFO;
  158. typedef struct _NDIS_WAN_COMPRESS_INFO {
  159. UCHAR SessionKey[8];
  160. ULONG MSCompType;
  161. UCHAR CompType;
  162. USHORT CompLength;
  163. _ANONYMOUS_UNION union {
  164. struct {
  165. UCHAR CompOUI[3];
  166. UCHAR CompSubType;
  167. UCHAR CompValues[32];
  168. } Proprietary;
  169. struct {
  170. UCHAR CompValues[32];
  171. } Public;
  172. } DUMMYUNIONNAME;
  173. } NDIS_WAN_COMPRESS_INFO, *PNDIS_WAN_COMPRESS_INFO;
  174. typedef struct _NDIS_WAN_GET_COMP_INFO {
  175. IN NDIS_HANDLE NdisLinkHandle;
  176. OUT NDIS_WAN_COMPRESS_INFO SendCapabilities;
  177. OUT NDIS_WAN_COMPRESS_INFO RecvCapabilities;
  178. } NDIS_WAN_GET_COMP_INFO, *PNDIS_WAN_GET_COMP_INFO;
  179. typedef struct _NDIS_WAN_SET_COMP_INFO {
  180. IN NDIS_HANDLE NdisLinkHandle;
  181. IN NDIS_WAN_COMPRESS_INFO SendCapabilities;
  182. IN NDIS_WAN_COMPRESS_INFO RecvCapabilities;
  183. } NDIS_WAN_SET_COMP_INFO, *PNDIS_WAN_SET_COMP_INFO;
  184. typedef struct _NDIS_WAN_GET_STATS_INFO {
  185. IN NDIS_HANDLE NdisLinkHandle;
  186. OUT ULONG BytesSent;
  187. OUT ULONG BytesRcvd;
  188. OUT ULONG FramesSent;
  189. OUT ULONG FramesRcvd;
  190. OUT ULONG CRCErrors;
  191. OUT ULONG TimeoutErrors;
  192. OUT ULONG AlignmentErrors;
  193. OUT ULONG SerialOverrunErrors;
  194. OUT ULONG FramingErrors;
  195. OUT ULONG BufferOverrunErrors;
  196. OUT ULONG BytesTransmittedUncompressed;
  197. OUT ULONG BytesReceivedUncompressed;
  198. OUT ULONG BytesTransmittedCompressed;
  199. OUT ULONG BytesReceivedCompressed;
  200. OUT ULONG TunnelPacketsRecieved;
  201. OUT ULONG TunnelRecievePacketsPending;
  202. OUT ULONG TunnelPacketsIndicatedUp;
  203. OUT ULONG TunnelRecievePacketsRejected;
  204. OUT ULONG TunnelPacketsSent;
  205. OUT ULONG TunnelPacketsSentComplete;
  206. OUT ULONG TunnelTransmitPacketsPending;
  207. OUT ULONG TunnelPacketsTransmitError;
  208. OUT ULONG TunnelPacketsSentError;
  209. OUT ULONG TunnelTransmitPacketsRejected;
  210. OUT ULONG TunnelAcksSent;
  211. OUT ULONG TunnelAcksSentComplete;
  212. OUT ULONG TunnelGeneric1;
  213. OUT ULONG TunnelGeneric2;
  214. OUT ULONG TunnelGeneric3;
  215. } NDIS_WAN_GET_STATS_INFO, *PNDIS_WAN_GET_STATS_INFO;
  216. typedef struct _NDIS_MAC_LINE_UP {
  217. IN ULONG LinkSpeed;
  218. IN NDIS_WAN_QUALITY Quality;
  219. IN USHORT SendWindow;
  220. IN NDIS_HANDLE ConnectionWrapperID;
  221. IN NDIS_HANDLE NdisLinkHandle;
  222. OUT NDIS_HANDLE NdisLinkContext;
  223. } NDIS_MAC_LINE_UP, *PNDIS_MAC_LINE_UP;
  224. typedef struct _NDIS_MAC_LINE_DOWN {
  225. IN NDIS_HANDLE NdisLinkContext;
  226. } NDIS_MAC_LINE_DOWN, *PNDIS_MAC_LINE_DOWN;
  227. typedef struct _NDIS_MAC_FRAGMENT {
  228. IN NDIS_HANDLE NdisLinkContext;
  229. IN ULONG Errors;
  230. } NDIS_MAC_FRAGMENT, *PNDIS_MAC_FRAGMENT;
  231. typedef struct _NDIS_WAN_CO_INFO {
  232. OUT ULONG MaxFrameSize;
  233. OUT ULONG MaxSendWindow;
  234. OUT ULONG FramingBits;
  235. OUT ULONG DesiredACCM;
  236. } NDIS_WAN_CO_INFO, *PNDIS_WAN_CO_INFO;
  237. typedef struct _NDIS_WAN_CO_GET_LINK_INFO {
  238. OUT ULONG MaxSendFrameSize;
  239. OUT ULONG MaxRecvFrameSize;
  240. OUT ULONG SendFramingBits;
  241. OUT ULONG RecvFramingBits;
  242. OUT ULONG SendCompressionBits;
  243. OUT ULONG RecvCompressionBits;
  244. OUT ULONG SendACCM;
  245. OUT ULONG RecvACCM;
  246. } NDIS_WAN_CO_GET_LINK_INFO, *PNDIS_WAN_CO_GET_LINK_INFO;
  247. typedef struct _NDIS_WAN_CO_SET_LINK_INFO {
  248. IN ULONG MaxSendFrameSize;
  249. IN ULONG MaxRecvFrameSize;
  250. IN ULONG SendFramingBits;
  251. IN ULONG RecvFramingBits;
  252. IN ULONG SendCompressionBits;
  253. IN ULONG RecvCompressionBits;
  254. IN ULONG SendACCM;
  255. IN ULONG RecvACCM;
  256. } NDIS_WAN_CO_SET_LINK_INFO, *PNDIS_WAN_CO_SET_LINK_INFO;
  257. typedef struct _NDIS_WAN_CO_GET_COMP_INFO {
  258. OUT NDIS_WAN_COMPRESS_INFO SendCapabilities;
  259. OUT NDIS_WAN_COMPRESS_INFO RecvCapabilities;
  260. } NDIS_WAN_CO_GET_COMP_INFO, *PNDIS_WAN_CO_GET_COMP_INFO;
  261. typedef struct _NDIS_WAN_CO_SET_COMP_INFO {
  262. IN NDIS_WAN_COMPRESS_INFO SendCapabilities;
  263. IN NDIS_WAN_COMPRESS_INFO RecvCapabilities;
  264. } NDIS_WAN_CO_SET_COMP_INFO, *PNDIS_WAN_CO_SET_COMP_INFO;
  265. typedef struct _NDIS_WAN_CO_GET_STATS_INFO {
  266. OUT ULONG BytesSent;
  267. OUT ULONG BytesRcvd;
  268. OUT ULONG FramesSent;
  269. OUT ULONG FramesRcvd;
  270. OUT ULONG CRCErrors;
  271. OUT ULONG TimeoutErrors;
  272. OUT ULONG AlignmentErrors;
  273. OUT ULONG SerialOverrunErrors;
  274. OUT ULONG FramingErrors;
  275. OUT ULONG BufferOverrunErrors;
  276. OUT ULONG BytesTransmittedUncompressed;
  277. OUT ULONG BytesReceivedUncompressed;
  278. OUT ULONG BytesTransmittedCompressed;
  279. OUT ULONG BytesReceivedCompressed;
  280. OUT ULONG TunnelPacketsRecieved;
  281. OUT ULONG TunnelRecievePacketsPending;
  282. OUT ULONG TunnelPacketsIndicatedUp;
  283. OUT ULONG TunnelRecievePacketsRejected;
  284. OUT ULONG TunnelPacketsSent;
  285. OUT ULONG TunnelPacketsSentComplete;
  286. OUT ULONG TunnelTransmitPacketsPending;
  287. OUT ULONG TunnelPacketsTransmitError;
  288. OUT ULONG TunnelPacketsSentError;
  289. OUT ULONG TunnelTransmitPacketsRejected;
  290. OUT ULONG TunnelAcksSent;
  291. OUT ULONG TunnelAcksSentComplete;
  292. OUT ULONG TunnelGeneric1;
  293. OUT ULONG TunnelGeneric2;
  294. OUT ULONG TunnelGeneric3;
  295. } NDIS_WAN_CO_GET_STATS_INFO, *PNDIS_WAN_CO_GET_STATS_INFO;
  296. typedef struct _NDIS_WAN_CO_FRAGMENT {
  297. IN ULONG Errors;
  298. } NDIS_WAN_CO_FRAGMENT, *PNDIS_WAN_CO_FRAGMENT;
  299. typedef struct _WAN_CO_LINKPARAMS {
  300. ULONG TransmitSpeed;
  301. ULONG ReceiveSpeed;
  302. ULONG SendWindow;
  303. } WAN_CO_LINKPARAMS, *PWAN_CO_LINKPARAMS;
  304. typedef struct _WAN_CO_MTULINKPARAMS {
  305. ULONG Version;
  306. ULONG TransmitSpeed;
  307. ULONG ReceiveSpeed;
  308. ULONG SendWindow;
  309. ULONG MTU;
  310. } WAN_CO_MTULINKPARAMS, *PWAN_CO_MTULINKPARAMS;
  311. #ifdef __cplusplus
  312. }
  313. #endif
  314. #endif /* _NDIS_WAN_ */