Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

547 lines
20 KiB

  1. /*++
  2. Copyright (c) Microsoft Corporation. All rights reserved.
  3. Module Name:
  4. isnkrnl.h
  5. Abstract:
  6. This header file contains interface definitions for NT clients
  7. of the ISN IPX/SPX/Netbios stack.
  8. Author:
  9. Adam Barr (adamba) 10 November 1993
  10. Revision History:
  11. --*/
  12. #include <packon.h>
  13. //
  14. // Defines a local target. The NicId is assigned by IPX
  15. // for each adapter or WAN line it is bound to. The MacAddress
  16. // is generally the address of the remote machine or the
  17. // router that is used to get to the remote machine.
  18. //
  19. //
  20. //
  21. // [SanjayAn] Changed LocalTarget to include a NicHandle
  22. //
  23. #ifdef _PNP_POWER
  24. typedef struct _NIC_HANDLE {
  25. USHORT NicId;
  26. #ifdef _PNP_LATER
  27. ULONG Version;
  28. CSHORT Signature;
  29. #endif _PNP_LATER
  30. } NIC_HANDLE, *PNIC_HANDLE;
  31. typedef struct _IPX_LOCAL_TARGET {
  32. union {
  33. USHORT NicId;
  34. NIC_HANDLE NicHandle;
  35. };
  36. UCHAR MacAddress[6];
  37. } IPX_LOCAL_TARGET, *PIPX_LOCAL_TARGET;
  38. #else
  39. typedef USHORT NIC_HANDLE;
  40. typedef PUSHORT PNIC_HANDLE;
  41. typedef struct _IPX_LOCAL_TARGET {
  42. USHORT NicId;
  43. UCHAR MacAddress[6];
  44. } IPX_LOCAL_TARGET, *PIPX_LOCAL_TARGET;
  45. #endif _PNP_POWER
  46. //
  47. // Definition of the options on a TDI datagram. These
  48. // can be passed in as the Options field of a send
  49. // datagram. It is indicated as the Options on a receive
  50. // datagram, and will be copied into the Options field
  51. // of a posted receive datagram if there is room.
  52. //
  53. // The complete structure does not need to be passed.
  54. // Only the packet type can be passed, or nothing.
  55. //
  56. typedef struct _IPX_DATAGRAM_OPTIONS {
  57. UCHAR PacketType;
  58. UCHAR Reserved;
  59. IPX_LOCAL_TARGET LocalTarget;
  60. } IPX_DATAGRAM_OPTIONS, *PIPX_DATAGRAM_OPTIONS;
  61. //
  62. // The extended address that some addresses want. If
  63. // the proper ioctl is set (MIPX_SENDADDROPT) then
  64. // this structure is passed as the remote address on
  65. // send datagrams...
  66. //
  67. typedef struct _IPX_ADDRESS_EXTENDED {
  68. TA_IPX_ADDRESS IpxAddress;
  69. UCHAR PacketType;
  70. } IPX_ADDRESS_EXTENDED, *PIPX_ADDRESS_EXTENDED;
  71. //
  72. // ...and this structure is passed on receive indications.
  73. // The values for Flags are defined right after it.
  74. // By using the MIPX_SETRCVFLAGS ioctl you can also
  75. // enable this format for receive addresses without
  76. // changing what is passed on sends.
  77. //
  78. typedef struct _IPX_ADDRESS_EXTENDED_FLAGS {
  79. TA_IPX_ADDRESS IpxAddress;
  80. UCHAR PacketType;
  81. UCHAR Flags;
  82. } IPX_ADDRESS_EXTENDED_FLAGS, *PIPX_ADDRESS_EXTENDED_FLAGS;
  83. //
  84. // Just appends Nic to the above structure.
  85. //
  86. typedef struct _IPX_ADDRESS_EXTENDED_FLAGS2 {
  87. TA_IPX_ADDRESS IpxAddress;
  88. UCHAR PacketType;
  89. UCHAR Flags;
  90. ULONG Nic;
  91. } IPX_ADDRESS_EXTENDED_FLAGS2, *PIPX_ADDRESS_EXTENDED_FLAGS2;
  92. #define IPX_EXTENDED_FLAG_BROADCAST 0x01 // the frame was sent as a broadcast
  93. #define IPX_EXTENDED_FLAG_LOCAL 0x02 // the frame was sent from this machine
  94. //
  95. // The various states of the NICs (LAN/WAN)
  96. //
  97. #define NIC_CREATED 1
  98. #define NIC_DELETED 2
  99. #define NIC_CONNECTED 3
  100. #define NIC_DISCONNECTED 4
  101. #define NIC_LINE_DOWN 5
  102. #define NIC_LINE_UP 6
  103. #define NIC_CONFIGURED 7
  104. //
  105. // The mother of all hacks - tell the forwarder if it should shrink or
  106. // expand all the NICIds...
  107. //
  108. #define NIC_OPCODE_DECREMENT_NICIDS 0x10
  109. #define NIC_OPCODE_INCREMENT_NICIDS 0x20
  110. //
  111. // Move the isnipx.h definitions over here
  112. //
  113. // Frame types. For now these mirror those in isnipx.h.
  114. //
  115. #define MISN_FRAME_TYPE_ETHERNET_II 0
  116. #define MISN_FRAME_TYPE_802_3 1
  117. #define MISN_FRAME_TYPE_802_2 2
  118. #define MISN_FRAME_TYPE_SNAP 3
  119. #define MISN_FRAME_TYPE_ARCNET 4 // we ignore this
  120. #define MISN_FRAME_TYPE_MAX 4 // of the four standard ones
  121. #define ISN_FRAME_TYPE_AUTO 0xff
  122. #include <packoff.h>
  123. //***NIC Info ***
  124. //
  125. // For now, we assume that there will not be more than 256 bindings.
  126. // This is a big enough number for most cases that we will encounter now
  127. // or the foreseeable future. We allocate an array of ULONGS of the above
  128. // dimension. This array stores in its first n elements pointers to the
  129. // bindings created for the various LAN and WAN adapters.
  130. //
  131. #define IPX_MAXIMUM_BINDINGS 256
  132. //
  133. // This is the interface that the Router process in address space uses
  134. // to open an address end point. Only one point can currently be opened.
  135. // The ea buffer should have the end point information in exactly the same
  136. // format as is used for TdiTransportAddress endpoint.
  137. //
  138. #define ROUTER_INTERFACE "RouterInterface"
  139. #define ROUTER_INTERFACE_LENGTH (sizeof("RouterInterface") - 1)
  140. //
  141. // Max. no. of ports that the Router can open
  142. //
  143. #define IPX_RT_MAX_ADDRESSES 16
  144. // Structure for MIPX_CONFIG Ioctl parameters
  145. typedef struct _ISN_ACTION_GET_DETAILS {
  146. USHORT NicId; // passed by caller
  147. BOOLEAN BindingSet; // returns TRUE if in set
  148. UCHAR Type; // 1 = lan, 2 = up wan, 3 = down wan
  149. ULONG FrameType; // returns 0 through 3
  150. ULONG NetworkNumber; // returns virtual net if NicId is 0
  151. UCHAR Node[6]; // adapter's MAC address.
  152. WCHAR AdapterName[64]; // terminated with Unicode NULL
  153. } ISN_ACTION_GET_DETAILS, *PISN_ACTION_GET_DETAILS;
  154. //
  155. // IPX_NIC_INFO. One or more such structures can be retrieved by a user
  156. // app through the MIPX_GETNEWNICS ioctl.
  157. //
  158. typedef struct _IPX_NIC_INFO {
  159. ULONG InterfaceIndex; // relevant only for demand dial WAN interfaces
  160. UCHAR RemoteNodeAddress[6]; //remote nic address (only for WAN)
  161. ULONG LinkSpeed; //speed of link
  162. ULONG PacketType; //packet type 802.3 or whatever
  163. ULONG MaxPacketSize; //Max. pkt size allowed on the link
  164. ULONG NdisMediumType; //Medium type
  165. ULONG NdisMediumSubtype; //
  166. BOOLEAN Status;
  167. ULONG ConnectionId; // used to match TimeSinceLastActivity IOCtls
  168. ULONG IpxwanConfigRequired; // 1 - IPXWAN Required
  169. ISN_ACTION_GET_DETAILS Details;
  170. } IPX_NIC_INFO, *PIPX_NIC_INFO;
  171. //
  172. // structure to be passed in the input buffer for the MIPX_GETNEWNICS IOCTL
  173. //
  174. typedef struct _IPX_NICS {
  175. ULONG NoOfNics;
  176. ULONG TotalNoOfNics;
  177. ULONG fAllNicsDesired; //indicates that the client wants
  178. //ipx to start afresh
  179. UCHAR Data[1]; //memory holding an array of IPX_NIC_INFO
  180. //structures starts here
  181. } IPX_NICS, *PIPX_NICS;
  182. //
  183. // Enhanced OPTIONS structure for use with the MIPX_GETNEWNICS ioctl
  184. //
  185. typedef struct _IPX_DATAGRAM_OPTIONS2 {
  186. IPX_DATAGRAM_OPTIONS DgrmOptions;
  187. TDI_ADDRESS_IPX RemoteAddress;
  188. ULONG LengthOfExtraOpInfo; //set it to the size of the extra
  189. //option info.
  190. char Data[1]; //for future extensibility
  191. } IPX_DATAGRAM_OPTIONS2, *PIPX_DATAGRAM_OPTIONS2;
  192. //
  193. // Invalid NicId passed down only once so IPX can map the ConnectionId
  194. // to a NicId, which is used later.
  195. //
  196. #define INVALID_NICID 0xffffffff
  197. //
  198. // Structure to be passed with the MIPX_QUERY_WAN_INACTIVITY IOCTL
  199. //
  200. typedef struct _IPX_QUERY_WAN_INACTIVITY {
  201. ULONG ConnectionId;
  202. USHORT NicId; // if equals INVALID_NICID, AdapterIndex is filled in
  203. // adapter index; should change to NicHandle [ZZ]
  204. ULONG WanInactivityCounter; // filled in on return
  205. } IPX_QUERY_WAN_INACTIVITY, *PIPX_QUERY_WAN_INACTIVITY;
  206. //
  207. // Structure to be passed with the MIPX_IPXWAN_CONFIG_DONE IOCTL
  208. //
  209. typedef struct _IPXWAN_CONFIG_DONE {
  210. USHORT NicId; // adapter index; should change to NicHandle [ZZ]
  211. ULONG Network;
  212. UCHAR LocalNode[6];
  213. UCHAR RemoteNode[6];
  214. } IPXWAN_CONFIG_DONE, *PIPXWAN_CONFIG_DONE;
  215. //
  216. // Definitions for TDI_ACTION calls supported by ISN.
  217. // In general the structure defined is passed in the
  218. // OutputBuffer (which becomes the MDL chain when
  219. // the transport receives it) and is used for input
  220. // and output as specified.
  221. //
  222. //
  223. // This is the TransportId to use in the action header
  224. // (it is the string "MISN").
  225. //
  226. #define ISN_ACTION_TRANSPORT_ID (('N' << 24) | ('S' << 16) | ('I' << 8) | ('M'))
  227. //
  228. // Get local target is used to force a re-RIP and also
  229. // obtain the local target information if desired. The
  230. // IpxAddress is passed on input and the LocalTarget
  231. // is returned on output. The structure defined here
  232. // goes in the Data section of an NWLINK_ACTION
  233. // structure with the Option set to MIPX_LOCALTARGET.
  234. //
  235. typedef struct _ISN_ACTION_GET_LOCAL_TARGET {
  236. TDI_ADDRESS_IPX IpxAddress;
  237. IPX_LOCAL_TARGET LocalTarget;
  238. } ISN_ACTION_GET_LOCAL_TARGET, *PISN_ACTION_GET_LOCAL_TARGET;
  239. //
  240. // Get network information is used to return information
  241. // about the path to a network. The information may not
  242. // be accurate since it only reflects what IPX knows
  243. // about the first hop to the remote. Network is an
  244. // input and LinkSpeed (in bytes per second) and
  245. // MaximumPacketSize (not including the IPX header)
  246. // are returned. The structure defined here goes
  247. // in the Data section of an NWLINK_ACTION structure
  248. // with the Options set to MIPX_NETWORKINFO.
  249. //
  250. typedef struct _ISN_ACTION_GET_NETWORK_INFO {
  251. ULONG Network;
  252. ULONG LinkSpeed;
  253. ULONG MaximumPacketSize;
  254. } ISN_ACTION_GET_NETWORK_INFO, *PISN_ACTION_GET_NETWORK_INFO;
  255. //
  256. // This is the structure that the streams IPX transport used
  257. // for its action requests. Because of the way in which nwlink
  258. // was implemented, when passing this structure in a TDI_ACTION
  259. // it should be specified as the InputBuffer, not the output
  260. // buffer.
  261. //
  262. // In the action header, the TransportId is "MIPX" and the
  263. // ActionCode is 0. DatagramOption is TRUE for IPX ioctls
  264. // and FALSE for SPX. The BufferLength includes the length
  265. // of everything after it, which is sizeof(ULONG) for Option
  266. // plus whatever Data is present. Option is one of the
  267. // ioctl codes defined after the structure; in most cases
  268. // Data is not needed.
  269. //
  270. typedef struct _NWLINK_ACTION {
  271. TDI_ACTION_HEADER Header;
  272. UCHAR OptionType;
  273. ULONG BufferLength;
  274. ULONG Option;
  275. CHAR Data[1];
  276. } NWLINK_ACTION, *PNWLINK_ACTION;
  277. //
  278. // Defines the values for OptionType (note that for
  279. // NWLINK this is a BOOLEAN DatagramOption, so we
  280. // define these to match, adding the control channel
  281. // one for ISN only).
  282. //
  283. #define NWLINK_OPTION_CONNECTION 0 // action is on a connection
  284. #define NWLINK_OPTION_ADDRESS 1 // action is on an address
  285. #define NWLINK_OPTION_CONTROL 2 // action is on the control channel,
  286. // may also be submitted on an
  287. // open connection or address object
  288. //
  289. // The following IOCTLs are taken from nwlink; the only
  290. // ones added for ISN are the ones in the 200 range.
  291. //
  292. /** Ioctls for IPX - (X) = User callable **/
  293. /**
  294. ioctls will values 100 - 150 were added for the NT port.
  295. **/
  296. #define I_MIPX (('I' << 24) | ('D' << 16) | ('P' << 8))
  297. #define MIPX_SETNODEADDR (I_MIPX | 0) /* Set the node address */
  298. #define MIPX_SETNETNUM (I_MIPX | 1) /* Set the network number */
  299. #define MIPX_SETPTYPE (I_MIPX | 2) /* (X) Set the packet type */
  300. #define MIPX_SENTTYPE (I_MIPX | 3) /* (X) Set the xport type */
  301. #define MIPX_SETPKTSIZE (I_MIPX | 4) /* Set the packet size */
  302. #define MIPX_SETSAP (I_MIPX | 5) /* Set the sap/type field */
  303. #define MIPX_SENDOPTS (I_MIPX | 6) /* (X) Send options on recv */
  304. #define MIPX_NOSENDOPTS (I_MIPX | 7) /* (X) Don't send options on recv */
  305. #define MIPX_SENDSRC (I_MIPX | 8) /* (X) Send source address up */
  306. #define MIPX_NOSENDSRC (I_MIPX | 9) /* (X) Don't Send source address up */
  307. #define MIPX_CONVBCAST (I_MIPX | 10) /* Convert TKR bcast to func addr */
  308. #define MIPX_NOCONVBCAST (I_MIPX | 11) /* Don't cnvrt TKR bcast to funcaddr */
  309. #define MIPX_SETCARDTYPE (I_MIPX | 12) /* Set 802.3 or ETH type */
  310. #define MIPX_STARGROUP (I_MIPX | 13) /* This is stargroup */
  311. #define MIPX_SWAPLENGTH (I_MIPX | 14) /* Set flag for swapping 802.3 length */
  312. #define MIPX_SENDDEST (I_MIPX | 15) /* (X) Send dest. address up */
  313. #define MIPX_NOSENDDEST (I_MIPX | 16) /* (X) Don't send dest. address up */
  314. #define MIPX_SENDFDEST (I_MIPX | 17) /* (X) Send final dest. address up */
  315. #define MIPX_NOSENDFDEST (I_MIPX | 18) /* (X) Don't send final dest. up */
  316. /** Added for NT port **/
  317. #define MIPX_SETVERSION (I_MIPX | 100) /* Set card version */
  318. #define MIPX_GETSTATUS (I_MIPX | 101)
  319. #define MIPX_SENDADDROPT (I_MIPX | 102) /* (X) Send ptype w/addr on recv */
  320. #define MIPX_NOSENDADDROPT (I_MIPX | 103) /* (X) Stop sending ptype on recv */
  321. #define MIPX_CHECKSUM (I_MIPX | 104) /* Enable/Disable checksum */
  322. #define MIPX_GETPKTSIZE (I_MIPX | 105) /* Get max packet size */
  323. #define MIPX_SENDHEADER (I_MIPX | 106) /* Send header with data */
  324. #define MIPX_NOSENDHEADER (I_MIPX | 107) /* Don't send header with data */
  325. #define MIPX_SETCURCARD (I_MIPX | 108) /* Set current card for IOCTLs */
  326. #define MIPX_SETMACTYPE (I_MIPX | 109) /* Set the Cards MAC type */
  327. #define MIPX_DOSROUTE (I_MIPX | 110) /* Do source routing on this card*/
  328. #define MIPX_NOSROUTE (I_MIPX | 111) /* Don't source routine the card*/
  329. #define MIPX_SETRIPRETRY (I_MIPX | 112) /* Set RIP retry count */
  330. #define MIPX_SETRIPTO (I_MIPX | 113) /* Set RIP timeout */
  331. #define MIPX_SETTKRSAP (I_MIPX | 114) /* Set the token ring SAP */
  332. #define MIPX_SETUSELLC (I_MIPX | 115) /* Put LLC hdr on packets */
  333. #define MIPX_SETUSESNAP (I_MIPX | 116) /* Put SNAP hdr on packets */
  334. #define MIPX_8023LEN (I_MIPX | 117) /* 1=make even, 0=dont make even*/
  335. #define MIPX_SENDPTYPE (I_MIPX | 118) /* Send ptype in options on recv*/
  336. #define MIPX_NOSENDPTYPE (I_MIPX | 119) /* Don't send ptype in options */
  337. #define MIPX_FILTERPTYPE (I_MIPX | 120) /* Filter on recv ptype */
  338. #define MIPX_NOFILTERPTYPE (I_MIPX | 121) /* Don't Filter on recv ptype */
  339. #define MIPX_SETSENDPTYPE (I_MIPX | 122) /* Set pkt type to send with */
  340. #define MIPX_GETCARDINFO (I_MIPX | 123) /* Get info on a card */
  341. #define MIPX_SENDCARDNUM (I_MIPX | 124) /* Send card num up in options */
  342. #define MIPX_NOSENDCARDNUM (I_MIPX | 125) /* Dont send card num in options*/
  343. #define MIPX_SETROUTER (I_MIPX | 126) /* Set router enabled flag */
  344. #define MIPX_SETRIPAGE (I_MIPX | 127) /* Set RIP age timeout */
  345. #define MIPX_SETRIPUSAGE (I_MIPX | 128) /* Set RIP usage timeout */
  346. #define MIPX_SETSROUTEUSAGE (I_MIPX| 129) /* Set the SROUTE usage timeout */
  347. #define MIPX_SETINTNET (I_MIPX | 130) /* Set internal network number */
  348. #define MIPX_NOVIRTADDR (I_MIPX | 131) /* Turn off virtual net num */
  349. #define MIPX_VIRTADDR (I_MIPX | 132) /* Turn on virtual net num */
  350. #define MIPX_GETNETINFO (I_MIPX | 135) /* Get info on a network num */
  351. #define MIPX_SETDELAYTIME (I_MIPX | 136) /* Set cards delay time */
  352. #define MIPX_SETROUTEADV (I_MIPX | 137) /* Route advertise timeout */
  353. #define MIPX_SETSOCKETS (I_MIPX | 138) /* Set default sockets */
  354. #define MIPX_SETLINKSPEED (I_MIPX | 139) /* Set the link speed for a card*/
  355. #define MIPX_SETWANFLAG (I_MIPX | 140)
  356. #define MIPX_GETCARDCHANGES (I_MIPX | 141) /* Wait for card changes */
  357. #define MIPX_GETMAXADAPTERS (I_MIPX | 142)
  358. #define MIPX_REUSEADDRESS (I_MIPX | 143)
  359. #define MIPX_RERIPNETNUM (I_MIPX | 144) /* ReRip a network */
  360. #define MIPX_GETNETINFO_NR (I_MIPX | 145) /* Get info on a net num - NO RIP */
  361. #define MIPX_SETNIC (I_MIPX | 146)
  362. #define MIPX_NOSETNIC (I_MIPX | 147)
  363. /** For Source Routing Support **/
  364. #define MIPX_SRCLEAR (I_MIPX | 200) /* Clear the source routing table*/
  365. #define MIPX_SRDEF (I_MIPX | 201) /* 0=Single Rte, 1=All Routes */
  366. #define MIPX_SRBCAST (I_MIPX | 202) /* 0=Single Rte, 1=All Routes */
  367. #define MIPX_SRMULTI (I_MIPX | 203) /* 0=Single Rte, 1=All Routes */
  368. #define MIPX_SRREMOVE (I_MIPX | 204) /* Remove a node from the table */
  369. #define MIPX_SRLIST (I_MIPX | 205) /* Get the source routing table */
  370. #define MIPX_SRGETPARMS (I_MIPX | 206) /* Get source routing parms */
  371. #define MIPX_SETSHOULDPUT (I_MIPX | 210) /* Turn on should put call */
  372. #define MIPX_DELSHOULDPUT (I_MIPX | 211) /* Turn off should put call */
  373. #define MIPX_GETSHOULDPUT (I_MIPX | 212) /* Get ptr to mipx_shouldput */
  374. /** Added for ISN **/
  375. #define MIPX_RCVBCAST (I_MIPX | 300) /* (X) Enable broadcast reception */
  376. #define MIPX_NORCVBCAST (I_MIPX | 301) /* (X) Disable broadcast reception */
  377. #define MIPX_ADAPTERNUM (I_MIPX | 302) /* Get maximum adapter number */
  378. #define MIPX_NOTIFYCARDINFO (I_MIPX | 303) /* Pend until card info changes */
  379. #define MIPX_LOCALTARGET (I_MIPX | 304) /* Get local target for address */
  380. #define MIPX_NETWORKINFO (I_MIPX | 305) /* Return info about remote net */
  381. #define MIPX_ZEROSOCKET (I_MIPX | 306) /* Use 0 as source socket on sends */
  382. #define MIPX_SETRCVFLAGS (I_MIPX | 307) /* Turn on flags in receive addr */
  383. #define MIPX_NORCVFLAGS (I_MIPX | 308) /* Turn off flags in receive addr */
  384. #define MIPX_CONFIG (I_MIPX | 309) /* used by IPXROUTE for config info */
  385. #define MIPX_LINECHANGE (I_MIPX | 310) /* queued until WAN line goes up/down */
  386. #define MIPX_GETCARDINFO2 (I_MIPX | 311) /* Get info, return real send size for token-ring */
  387. #define MIPX_ADAPTERNUM2 (I_MIPX | 312) /* Max. number including duplicates */
  388. //
  389. // Used by a user mode process to get nic info defined by the IPX_NIC_INFO
  390. // structure.
  391. //
  392. // NOTE NOTE NOTE
  393. //
  394. // This is supposed to be used only by the FWRDR process and nobody else.
  395. // If some other app. uses it, the FWRDR will be affected
  396. //
  397. //
  398. #define MIPX_GETNEWNICINFO (I_MIPX | 313) /*Get any new NIC info that might
  399. *be there*/
  400. //
  401. // IOCTL to be used if the interface is ROUTER_INTERFACE
  402. //
  403. #define MIPX_SEND_DATAGRAM _TDI_CONTROL_CODE((I_MIPX | 314), METHOD_IN_DIRECT) // send dgram
  404. #define MIPX_RCV_DATAGRAM _TDI_CONTROL_CODE((I_MIPX | 315), METHOD_OUT_DIRECT) // send dgram
  405. #define MIPX_RT_CREATE (I_MIPX | 316)
  406. #define MIPX_IPXWAN_CONFIG_DONE (I_MIPX | 317)
  407. #define MIPX_QUERY_WAN_INACTIVITY (I_MIPX | 318)
  408. /** Ioctls for SPX **/
  409. #define I_MSPX (('S' << 24) | ('P' << 16) | ('P' << 8))
  410. #define MSPX_SETADDR (I_MSPX | 0) /* Set the network address */
  411. #define MSPX_SETPKTSIZE (I_MSPX | 1) /* Set the packet size per card */
  412. #define MSPX_SETDATASTREAM (I_MSPX | 2) /* Set datastream type */
  413. /** Added for NT port **/
  414. #define MSPX_SETASLISTEN (I_MSPX | 100) /* Set as a listen socket */
  415. #define MSPX_GETSTATUS (I_MSPX | 101) /* Get running status */
  416. #define MSPX_GETQUEUEPTR (I_MSPX | 102) /* Get ptr to the streams queue */
  417. #define MSPX_SETDATAACK (I_MSPX | 103) /* Set DATA ACK option */
  418. #define MSPX_NODATAACK (I_MSPX | 104) /* Turn off DATA ACK option */
  419. #define MSPX_SETMAXPKTSOCK (I_MSPX | 105) /* Set the packet size per socket */
  420. #define MSPX_SETWINDOWCARD (I_MSPX | 106) /* Set window size for card */
  421. #define MSPX_SETWINDOWSOCK (I_MSPX | 107) /* Set window size for 1 socket */
  422. #define MSPX_SENDHEADER (I_MSPX | 108) /* Send header with data */
  423. #define MSPX_NOSENDHEADER (I_MSPX | 109) /* Don't send header with data */
  424. #define MSPX_GETPKTSIZE (I_MSPX | 110) /* Get the packet size per card */
  425. #define MSPX_SETCONNCNT (I_MSPX | 111) /* Set the conn req count */
  426. #define MSPX_SETCONNTO (I_MSPX | 112) /* Set the conn req timeout */
  427. #define MSPX_SETALIVECNT (I_MSPX | 113) /* Set the keepalive count */
  428. #define MSPX_SETALIVETO (I_MSPX | 114) /* Set the keepalive timeout */
  429. #define MSPX_SETALWAYSEOM (I_MSPX | 115) /* Turn on always EOM flag */
  430. #define MSPX_NOALWAYSEOM (I_MSPX | 116) /* Turn off always EOM flag */
  431. #define MSPX_GETSTATS (I_MSPX | 119) /* Get connection stats */
  432. #define MSPX_NOACKWAIT (I_MSPX | 120) /* Disable piggyback wait */
  433. #define MSPX_ACKWAIT (I_MSPX | 121) /* Enable pback wait (default) */
  434. //
  435. // Taken out of isn\inc\bind.h
  436. //
  437. typedef struct _IPXCP_CONFIGURATION {
  438. USHORT Version;
  439. USHORT Length;
  440. UCHAR Network[4];
  441. UCHAR LocalNode[6];
  442. UCHAR RemoteNode[6];
  443. ULONG ConnectionClient; // 0 - Server, 1 - Client
  444. ULONG InterfaceIndex;
  445. ULONG ConnectionId; // used to match TimeSinceLastActivity IOCtls
  446. ULONG IpxwanConfigRequired; // 1 - IPXWAN Required
  447. } IPXCP_CONFIGURATION, *PIPXCP_CONFIGURATION;
  448. #define IPXWAN_SOCKET (USHORT)0x490
  449.