summaryrefslogtreecommitdiffstats
path: root/private/inc/isnkrnl.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/inc/isnkrnl.h528
1 files changed, 528 insertions, 0 deletions
diff --git a/private/inc/isnkrnl.h b/private/inc/isnkrnl.h
new file mode 100644
index 000000000..13baef8e7
--- /dev/null
+++ b/private/inc/isnkrnl.h
@@ -0,0 +1,528 @@
+/*++
+
+Copyright (c) 1993 Microsoft Corporation
+
+Module Name:
+
+ isnkrnl.h
+
+Abstract:
+
+ This header file contains interface definitions for NT clients
+ of the ISN IPX/SPX/Netbios stack.
+
+Author:
+
+ Adam Barr (adamba) 10 November 1993
+
+Revision History:
+
+--*/
+
+
+
+#include <packon.h>
+
+//
+// Defines a local target. The NicId is assigned by IPX
+// for each adapter or WAN line it is bound to. The MacAddress
+// is generally the address of the remote machine or the
+// router that is used to get to the remote machine.
+//
+//
+
+//
+// [SanjayAn] Changed LocalTarget to include a NicHandle
+//
+
+#ifdef _PNP_POWER
+
+typedef struct _NIC_HANDLE {
+ USHORT NicId;
+
+#ifdef _PNP_LATER
+ ULONG Version;
+ CSHORT Signature;
+#endif _PNP_LATER
+
+} NIC_HANDLE, *PNIC_HANDLE;
+
+
+typedef struct _IPX_LOCAL_TARGET {
+ union {
+ USHORT NicId;
+ NIC_HANDLE NicHandle;
+ };
+ UCHAR MacAddress[6];
+} IPX_LOCAL_TARGET, *PIPX_LOCAL_TARGET;
+
+#else
+
+typedef USHORT NIC_HANDLE;
+typedef PUSHORT PNIC_HANDLE;
+
+typedef struct _IPX_LOCAL_TARGET {
+ USHORT NicId;
+ UCHAR MacAddress[6];
+} IPX_LOCAL_TARGET, *PIPX_LOCAL_TARGET;
+
+#endif _PNP_POWER
+
+//
+// Definition of the options on a TDI datagram. These
+// can be passed in as the Options field of a send
+// datagram. It is indicated as the Options on a receive
+// datagram, and will be copied into the Options field
+// of a posted receive datagram if there is room.
+//
+// The complete structure does not need to be passed.
+// Only the packet type can be passed, or nothing.
+//
+
+typedef struct _IPX_DATAGRAM_OPTIONS {
+ UCHAR PacketType;
+ UCHAR Reserved;
+ IPX_LOCAL_TARGET LocalTarget;
+} IPX_DATAGRAM_OPTIONS, *PIPX_DATAGRAM_OPTIONS;
+
+
+//
+// The extended address that some addresses want. If
+// the proper ioctl is set (MIPX_SENDADDROPT) then
+// this structure is passed as the remote address on
+// send datagrams...
+//
+
+typedef struct _IPX_ADDRESS_EXTENDED {
+ TA_IPX_ADDRESS IpxAddress;
+ UCHAR PacketType;
+} IPX_ADDRESS_EXTENDED, *PIPX_ADDRESS_EXTENDED;
+
+//
+// ...and this structure is passed on receive indications.
+// The values for Flags are defined right after it.
+// By using the MIPX_SETRCVFLAGS ioctl you can also
+// enable this format for receive addresses without
+// changing what is passed on sends.
+//
+
+typedef struct _IPX_ADDRESS_EXTENDED_FLAGS {
+ TA_IPX_ADDRESS IpxAddress;
+ UCHAR PacketType;
+ UCHAR Flags;
+} IPX_ADDRESS_EXTENDED_FLAGS, *PIPX_ADDRESS_EXTENDED_FLAGS;
+
+//
+// Just appends Nic to the above structure.
+//
+typedef struct _IPX_ADDRESS_EXTENDED_FLAGS2 {
+ TA_IPX_ADDRESS IpxAddress;
+ UCHAR PacketType;
+ UCHAR Flags;
+ ULONG Nic;
+} IPX_ADDRESS_EXTENDED_FLAGS2, *PIPX_ADDRESS_EXTENDED_FLAGS2;
+
+#define IPX_EXTENDED_FLAG_BROADCAST 0x01 // the frame was sent as a broadcast
+#define IPX_EXTENDED_FLAG_LOCAL 0x02 // the frame was sent from this machine
+
+
+
+//
+// The various states of the NICs (LAN/WAN)
+//
+#define NIC_CREATED 1
+#define NIC_DELETED 2
+#define NIC_CONNECTED 3
+#define NIC_DISCONNECTED 4
+#define NIC_LINE_DOWN 5
+#define NIC_LINE_UP 6
+#define NIC_CONFIGURED 7
+
+//
+// BUGBUG - Move the isnipx.h definitions over here
+//
+// Frame types. For now these mirror those in isnipx.h.
+//
+#define MISN_FRAME_TYPE_ETHERNET_II 0
+#define MISN_FRAME_TYPE_802_3 1
+#define MISN_FRAME_TYPE_802_2 2
+#define MISN_FRAME_TYPE_SNAP 3
+#define MISN_FRAME_TYPE_ARCNET 4 // we ignore this
+#define MISN_FRAME_TYPE_MAX 4 // of the four standard ones
+
+#define ISN_FRAME_TYPE_AUTO 0xff
+
+#include <packoff.h>
+
+//***NIC Info ***
+
+
+//
+// For now, we assume that there will not be more than 256 bindings.
+// This is a big enough number for most cases that we will encounter now
+// or the foreseeable future. We allocate an array of ULONGS of the above
+// dimension. This array stores in its first n elements pointers to the
+// bindings created for the various LAN and WAN adapters.
+//
+#define IPX_MAXIMUM_BINDINGS 256
+
+
+//
+// This is the interface that the Router process in address space uses
+// to open an address end point. Only one point can currently be opened.
+// The ea buffer should have the end point information in exactly the same
+// format as is used for TdiTransportAddress endpoint.
+//
+#define ROUTER_INTERFACE "RouterInterface"
+#define ROUTER_INTERFACE_LENGTH (sizeof("RouterInterface") - 1)
+
+//
+// Max. no. of ports that the Router can open
+//
+#define IPX_RT_MAX_ADDRESSES 16
+//
+// IPX_NIC_INFO. One or more such structures can be retrieved by a user
+// app through the MIPX_GETNEWNICS ioctl.
+//
+
+typedef struct _IPX_NIC_INFO {
+
+ ULONG InterfaceIndex; // relevant only for demand dial WAN interfaces
+ ULONG NetworkAddress; //network number
+ UCHAR LocalNodeAddress[6]; //nic address
+ UCHAR RemoteNodeAddress[6]; //remote nic address (only for WAN)
+ ULONG LinkSpeed; //speed of link
+ ULONG PacketType; //packet type 802.3 or whatever
+ ULONG MaxPacketSize; //Max. pkt size allowed on the link
+ ULONG NdisMediumType; //Medium type
+ ULONG NdisMediumSubtype; //
+ USHORT NicId; //Nic Id.
+ BOOLEAN Status;
+ ULONG ConnectionId; // used to match TimeSinceLastActivity IOCtls
+ ULONG IpxwanConfigRequired; // 1 - IPXWAN Required
+ } IPX_NIC_INFO, *PIPX_NIC_INFO;
+
+//
+// structure to be passed in the input buffer for the MIPX_GETNEWNICS IOCTL
+//
+typedef struct _IPX_NICS {
+ ULONG NoOfNics;
+ ULONG TotalNoOfNics;
+ ULONG fAllNicsDesired; //indicates that the client wants
+ //ipx to start afresh
+ UCHAR Data[1]; //memory holding an array of IPX_NIC_INFO
+ //structures starts here
+ } IPX_NICS, *PIPX_NICS;
+
+//
+// Enhanced OPTIONS structure for use with the MIPX_GETNEWNICS ioctl
+//
+typedef struct _IPX_DATAGRAM_OPTIONS2 {
+ IPX_DATAGRAM_OPTIONS DgrmOptions;
+ TDI_ADDRESS_IPX RemoteAddress;
+ ULONG LengthOfExtraOpInfo; //set it to the size of the extra
+ //option info.
+ char Data[1]; //for future extensibility
+} IPX_DATAGRAM_OPTIONS2, *PIPX_DATAGRAM_OPTIONS2;
+
+//
+// Invalid NicId passed down only once so IPX can map the ConnectionId
+// to a NicId, which is used later.
+//
+#define INVALID_NICID 0xffffffff
+
+//
+// Structure to be passed with the MIPX_QUERY_WAN_INACTIVITY IOCTL
+//
+typedef struct _IPX_QUERY_WAN_INACTIVITY {
+ ULONG ConnectionId;
+ USHORT NicId; // if equals INVALID_NICID, AdapterIndex is filled in
+ // adapter index; should change to NicHandle [ZZ]
+ ULONG WanInactivityCounter; // filled in on return
+} IPX_QUERY_WAN_INACTIVITY, *PIPX_QUERY_WAN_INACTIVITY;
+
+//
+// Structure to be passed with the MIPX_IPXWAN_CONFIG_DONE IOCTL
+//
+typedef struct _IPXWAN_CONFIG_DONE {
+ USHORT NicId; // adapter index; should change to NicHandle [ZZ]
+ ULONG Network;
+ UCHAR LocalNode[6];
+ UCHAR RemoteNode[6];
+} IPXWAN_CONFIG_DONE, *PIPXWAN_CONFIG_DONE;
+
+//
+// Definitions for TDI_ACTION calls supported by ISN.
+// In general the structure defined is passed in the
+// OutputBuffer (which becomes the MDL chain when
+// the transport receives it) and is used for input
+// and output as specified.
+//
+
+//
+// This is the TransportId to use in the action header
+// (it is the string "MISN").
+//
+
+#define ISN_ACTION_TRANSPORT_ID (('N' << 24) | ('S' << 16) | ('I' << 8) | ('M'))
+
+
+//
+// Get local target is used to force a re-RIP and also
+// obtain the local target information if desired. The
+// IpxAddress is passed on input and the LocalTarget
+// is returned on output. The structure defined here
+// goes in the Data section of an NWLINK_ACTION
+// structure with the Option set to MIPX_LOCALTARGET.
+//
+
+typedef struct _ISN_ACTION_GET_LOCAL_TARGET {
+ TDI_ADDRESS_IPX IpxAddress;
+ IPX_LOCAL_TARGET LocalTarget;
+} ISN_ACTION_GET_LOCAL_TARGET, *PISN_ACTION_GET_LOCAL_TARGET;
+
+
+//
+// Get network information is used to return information
+// about the path to a network. The information may not
+// be accurate since it only reflects what IPX knows
+// about the first hop to the remote. Network is an
+// input and LinkSpeed (in bytes per second) and
+// MaximumPacketSize (not including the IPX header)
+// are returned. The structure defined here goes
+// in the Data section of an NWLINK_ACTION structure
+// with the Options set to MIPX_NETWORKINFO.
+//
+
+typedef struct _ISN_ACTION_GET_NETWORK_INFO {
+ ULONG Network;
+ ULONG LinkSpeed;
+ ULONG MaximumPacketSize;
+} ISN_ACTION_GET_NETWORK_INFO, *PISN_ACTION_GET_NETWORK_INFO;
+
+
+
+//
+// This is the structure that the streams IPX transport used
+// for its action requests. Because of the way in which nwlink
+// was implemented, when passing this structure in a TDI_ACTION
+// it should be specified as the InputBuffer, not the output
+// buffer.
+//
+// In the action header, the TransportId is "MIPX" and the
+// ActionCode is 0. DatagramOption is TRUE for IPX ioctls
+// and FALSE for SPX. The BufferLength includes the length
+// of everything after it, which is sizeof(ULONG) for Option
+// plus whatever Data is present. Option is one of the
+// ioctl codes defined after the structure; in most cases
+// Data is not needed.
+//
+
+typedef struct _NWLINK_ACTION {
+ TDI_ACTION_HEADER Header;
+ UCHAR OptionType;
+ ULONG BufferLength;
+ ULONG Option;
+ CHAR Data[1];
+} NWLINK_ACTION, *PNWLINK_ACTION;
+
+//
+// Defines the values for OptionType (note that for
+// NWLINK this is a BOOLEAN DatagramOption, so we
+// define these to match, adding the control channel
+// one for ISN only).
+//
+
+#define NWLINK_OPTION_CONNECTION 0 // action is on a connection
+#define NWLINK_OPTION_ADDRESS 1 // action is on an address
+#define NWLINK_OPTION_CONTROL 2 // action is on the control channel,
+ // may also be submitted on an
+ // open connection or address object
+
+
+
+//
+// The following IOCTLs are taken from nwlink; the only
+// ones added for ISN are the ones in the 200 range.
+//
+
+
+/** Ioctls for IPX - (X) = User callable **/
+
+/**
+ ioctls will values 100 - 150 were added for the NT port.
+**/
+
+#define I_MIPX (('I' << 24) | ('D' << 16) | ('P' << 8))
+#define MIPX_SETNODEADDR (I_MIPX | 0) /* Set the node address */
+#define MIPX_SETNETNUM (I_MIPX | 1) /* Set the network number */
+#define MIPX_SETPTYPE (I_MIPX | 2) /* (X) Set the packet type */
+#define MIPX_SENTTYPE (I_MIPX | 3) /* (X) Set the xport type */
+#define MIPX_SETPKTSIZE (I_MIPX | 4) /* Set the packet size */
+#define MIPX_SETSAP (I_MIPX | 5) /* Set the sap/type field */
+#define MIPX_SENDOPTS (I_MIPX | 6) /* (X) Send options on recv */
+#define MIPX_NOSENDOPTS (I_MIPX | 7) /* (X) Don't send options on recv */
+#define MIPX_SENDSRC (I_MIPX | 8) /* (X) Send source address up */
+#define MIPX_NOSENDSRC (I_MIPX | 9) /* (X) Don't Send source address up */
+#define MIPX_CONVBCAST (I_MIPX | 10) /* Convert TKR bcast to func addr */
+#define MIPX_NOCONVBCAST (I_MIPX | 11) /* Don't cnvrt TKR bcast to funcaddr */
+#define MIPX_SETCARDTYPE (I_MIPX | 12) /* Set 802.3 or ETH type */
+#define MIPX_STARGROUP (I_MIPX | 13) /* This is stargroup */
+#define MIPX_SWAPLENGTH (I_MIPX | 14) /* Set flag for swapping 802.3 length */
+#define MIPX_SENDDEST (I_MIPX | 15) /* (X) Send dest. address up */
+#define MIPX_NOSENDDEST (I_MIPX | 16) /* (X) Don't send dest. address up */
+#define MIPX_SENDFDEST (I_MIPX | 17) /* (X) Send final dest. address up */
+#define MIPX_NOSENDFDEST (I_MIPX | 18) /* (X) Don't send final dest. up */
+
+/** Added for NT port **/
+
+#define MIPX_SETVERSION (I_MIPX | 100) /* Set card version */
+#define MIPX_GETSTATUS (I_MIPX | 101)
+#define MIPX_SENDADDROPT (I_MIPX | 102) /* (X) Send ptype w/addr on recv */
+#define MIPX_NOSENDADDROPT (I_MIPX | 103) /* (X) Stop sending ptype on recv */
+#define MIPX_CHECKSUM (I_MIPX | 104) /* Enable/Disable checksum */
+#define MIPX_GETPKTSIZE (I_MIPX | 105) /* Get max packet size */
+#define MIPX_SENDHEADER (I_MIPX | 106) /* Send header with data */
+#define MIPX_NOSENDHEADER (I_MIPX | 107) /* Don't send header with data */
+#define MIPX_SETCURCARD (I_MIPX | 108) /* Set current card for IOCTLs */
+#define MIPX_SETMACTYPE (I_MIPX | 109) /* Set the Cards MAC type */
+#define MIPX_DOSROUTE (I_MIPX | 110) /* Do source routing on this card*/
+#define MIPX_NOSROUTE (I_MIPX | 111) /* Don't source routine the card*/
+#define MIPX_SETRIPRETRY (I_MIPX | 112) /* Set RIP retry count */
+#define MIPX_SETRIPTO (I_MIPX | 113) /* Set RIP timeout */
+#define MIPX_SETTKRSAP (I_MIPX | 114) /* Set the token ring SAP */
+#define MIPX_SETUSELLC (I_MIPX | 115) /* Put LLC hdr on packets */
+#define MIPX_SETUSESNAP (I_MIPX | 116) /* Put SNAP hdr on packets */
+#define MIPX_8023LEN (I_MIPX | 117) /* 1=make even, 0=dont make even*/
+#define MIPX_SENDPTYPE (I_MIPX | 118) /* Send ptype in options on recv*/
+#define MIPX_NOSENDPTYPE (I_MIPX | 119) /* Don't send ptype in options */
+#define MIPX_FILTERPTYPE (I_MIPX | 120) /* Filter on recv ptype */
+#define MIPX_NOFILTERPTYPE (I_MIPX | 121) /* Don't Filter on recv ptype */
+#define MIPX_SETSENDPTYPE (I_MIPX | 122) /* Set pkt type to send with */
+#define MIPX_GETCARDINFO (I_MIPX | 123) /* Get info on a card */
+#define MIPX_SENDCARDNUM (I_MIPX | 124) /* Send card num up in options */
+#define MIPX_NOSENDCARDNUM (I_MIPX | 125) /* Dont send card num in options*/
+#define MIPX_SETROUTER (I_MIPX | 126) /* Set router enabled flag */
+#define MIPX_SETRIPAGE (I_MIPX | 127) /* Set RIP age timeout */
+#define MIPX_SETRIPUSAGE (I_MIPX | 128) /* Set RIP usage timeout */
+#define MIPX_SETSROUTEUSAGE (I_MIPX| 129) /* Set the SROUTE usage timeout */
+#define MIPX_SETINTNET (I_MIPX | 130) /* Set internal network number */
+#define MIPX_NOVIRTADDR (I_MIPX | 131) /* Turn off virtual net num */
+#define MIPX_VIRTADDR (I_MIPX | 132) /* Turn on virtual net num */
+#define MIPX_GETNETINFO (I_MIPX | 135) /* Get info on a network num */
+#define MIPX_SETDELAYTIME (I_MIPX | 136) /* Set cards delay time */
+#define MIPX_SETROUTEADV (I_MIPX | 137) /* Route advertise timeout */
+#define MIPX_SETSOCKETS (I_MIPX | 138) /* Set default sockets */
+#define MIPX_SETLINKSPEED (I_MIPX | 139) /* Set the link speed for a card*/
+#define MIPX_SETWANFLAG (I_MIPX | 140)
+#define MIPX_GETCARDCHANGES (I_MIPX | 141) /* Wait for card changes */
+#define MIPX_GETMAXADAPTERS (I_MIPX | 142)
+#define MIPX_REUSEADDRESS (I_MIPX | 143)
+#define MIPX_RERIPNETNUM (I_MIPX | 144) /* ReRip a network */
+#define MIPX_GETNETINFO_NR (I_MIPX | 145) /* Get info on a net num - NO RIP */
+
+#define MIPX_SETNIC (I_MIPX | 146)
+#define MIPX_NOSETNIC (I_MIPX | 147)
+
+/** For Source Routing Support **/
+
+#define MIPX_SRCLEAR (I_MIPX | 200) /* Clear the source routing table*/
+#define MIPX_SRDEF (I_MIPX | 201) /* 0=Single Rte, 1=All Routes */
+#define MIPX_SRBCAST (I_MIPX | 202) /* 0=Single Rte, 1=All Routes */
+#define MIPX_SRMULTI (I_MIPX | 203) /* 0=Single Rte, 1=All Routes */
+#define MIPX_SRREMOVE (I_MIPX | 204) /* Remove a node from the table */
+#define MIPX_SRLIST (I_MIPX | 205) /* Get the source routing table */
+#define MIPX_SRGETPARMS (I_MIPX | 206) /* Get source routing parms */
+
+#define MIPX_SETSHOULDPUT (I_MIPX | 210) /* Turn on should put call */
+#define MIPX_DELSHOULDPUT (I_MIPX | 211) /* Turn off should put call */
+#define MIPX_GETSHOULDPUT (I_MIPX | 212) /* Get ptr to mipx_shouldput */
+
+/** Added for ISN **/
+
+#define MIPX_RCVBCAST (I_MIPX | 300) /* (X) Enable broadcast reception */
+#define MIPX_NORCVBCAST (I_MIPX | 301) /* (X) Disable broadcast reception */
+#define MIPX_ADAPTERNUM (I_MIPX | 302) /* Get maximum adapter number */
+#define MIPX_NOTIFYCARDINFO (I_MIPX | 303) /* Pend until card info changes */
+#define MIPX_LOCALTARGET (I_MIPX | 304) /* Get local target for address */
+#define MIPX_NETWORKINFO (I_MIPX | 305) /* Return info about remote net */
+#define MIPX_ZEROSOCKET (I_MIPX | 306) /* Use 0 as source socket on sends */
+#define MIPX_SETRCVFLAGS (I_MIPX | 307) /* Turn on flags in receive addr */
+#define MIPX_NORCVFLAGS (I_MIPX | 308) /* Turn off flags in receive addr */
+#define MIPX_CONFIG (I_MIPX | 309) /* used by IPXROUTE for config info */
+#define MIPX_LINECHANGE (I_MIPX | 310) /* queued until WAN line goes up/down */
+#define MIPX_GETCARDINFO2 (I_MIPX | 311) /* Get info, return real send size for token-ring */
+#define MIPX_ADAPTERNUM2 (I_MIPX | 312) /* Max. number including duplicates */
+
+
+//
+// Used by a user mode process to get nic info defined by the IPX_NIC_INFO
+// structure.
+//
+// NOTE NOTE NOTE
+//
+// This is supposed to be used only by the FWRDR process and nobody else.
+// If some other app. uses it, the FWRDR will be affected
+//
+//
+#define MIPX_GETNEWNICINFO (I_MIPX | 313) /*Get any new NIC info that might
+ *be there*/
+
+//
+// IOCTL to be used if the interface is ROUTER_INTERFACE
+//
+#define MIPX_SEND_DATAGRAM _TDI_CONTROL_CODE((I_MIPX | 314), METHOD_IN_DIRECT) // send dgram
+#define MIPX_RCV_DATAGRAM _TDI_CONTROL_CODE((I_MIPX | 315), METHOD_OUT_DIRECT) // send dgram
+
+#define MIPX_RT_CREATE (I_MIPX | 316)
+#define MIPX_IPXWAN_CONFIG_DONE (I_MIPX | 317)
+#define MIPX_QUERY_WAN_INACTIVITY (I_MIPX | 318)
+
+/** Ioctls for SPX **/
+
+#define I_MSPX (('S' << 24) | ('P' << 16) | ('P' << 8))
+#define MSPX_SETADDR (I_MSPX | 0) /* Set the network address */
+#define MSPX_SETPKTSIZE (I_MSPX | 1) /* Set the packet size per card */
+#define MSPX_SETDATASTREAM (I_MSPX | 2) /* Set datastream type */
+
+/** Added for NT port **/
+
+#define MSPX_SETASLISTEN (I_MSPX | 100) /* Set as a listen socket */
+#define MSPX_GETSTATUS (I_MSPX | 101) /* Get running status */
+#define MSPX_GETQUEUEPTR (I_MSPX | 102) /* Get ptr to the streams queue */
+#define MSPX_SETDATAACK (I_MSPX | 103) /* Set DATA ACK option */
+#define MSPX_NODATAACK (I_MSPX | 104) /* Turn off DATA ACK option */
+#define MSPX_SETMAXPKTSOCK (I_MSPX | 105) /* Set the packet size per socket */
+#define MSPX_SETWINDOWCARD (I_MSPX | 106) /* Set window size for card */
+#define MSPX_SETWINDOWSOCK (I_MSPX | 107) /* Set window size for 1 socket */
+#define MSPX_SENDHEADER (I_MSPX | 108) /* Send header with data */
+#define MSPX_NOSENDHEADER (I_MSPX | 109) /* Don't send header with data */
+#define MSPX_GETPKTSIZE (I_MSPX | 110) /* Get the packet size per card */
+#define MSPX_SETCONNCNT (I_MSPX | 111) /* Set the conn req count */
+#define MSPX_SETCONNTO (I_MSPX | 112) /* Set the conn req timeout */
+#define MSPX_SETALIVECNT (I_MSPX | 113) /* Set the keepalive count */
+#define MSPX_SETALIVETO (I_MSPX | 114) /* Set the keepalive timeout */
+#define MSPX_SETALWAYSEOM (I_MSPX | 115) /* Turn on always EOM flag */
+#define MSPX_NOALWAYSEOM (I_MSPX | 116) /* Turn off always EOM flag */
+#define MSPX_GETSTATS (I_MSPX | 119) /* Get connection stats */
+#define MSPX_NOACKWAIT (I_MSPX | 120) /* Disable piggyback wait */
+#define MSPX_ACKWAIT (I_MSPX | 121) /* Enable pback wait (default) */
+
+//
+// Taken out of isn\inc\bind.h
+//
+typedef struct _IPXCP_CONFIGURATION {
+ USHORT Version;
+ USHORT Length;
+ UCHAR Network[4];
+ UCHAR LocalNode[6];
+ UCHAR RemoteNode[6];
+ ULONG ConnectionClient; // 0 - Server, 1 - Client
+ ULONG InterfaceIndex;
+ ULONG ConnectionId; // used to match TimeSinceLastActivity IOCtls
+ ULONG IpxwanConfigRequired; // 1 - IPXWAN Required
+} IPXCP_CONFIGURATION, *PIPXCP_CONFIGURATION;
+
+#define IPXWAN_SOCKET (USHORT)0x490
+
+