windows-nt/Source/XPSP1/NT/termsrv/drivers/td/tdipx/tdipx.h
2020-09-26 16:20:57 +08:00

72 lines
1.8 KiB
C

/***************************************************************************
*
* tdipx.h
*
* This module contains private Transport Driver defines and structures
*
* Copyright 1998, Microsoft
*
****************************************************************************/
#define htons(x) ((((x) >> 8) & 0x00FF) | (((x) << 8) & 0xFF00))
/*
* Well known Citrix IPX socket
*/
#define CITRIX_IPX_SOCKET 0xBB85
#define DD_IPX_DEVICE_NAME L"\\Device\\NwlnkIpx"
#define DD_SPX_DEVICE_NAME L"\\Device\\NwlnkSpx"
//
// IPX_PACKET - format of packet submitted to IPX for sending. The maximum
// size of an IPX packet is 576 bytes, 30 bytes header, 546 bytes data
//
typedef struct {
BYTE Net[4]; // hi-lo
BYTE Node[6]; // hi-lo
USHORT Socket; // hi-lo
} NETWARE_ADDRESS ;
typedef struct {
USHORT Checksum; // always set to 0xFFFF
USHORT Length; // set by IPX - header + data
BYTE TransportControl; // set by IPX to 0. Used by routers
//
// for IPX, PacketType is 0 (Unknown Packet Type) or 4 (Packet Exchange
// Packet)
//
BYTE PacketType;
NETWARE_ADDRESS Destination;
NETWARE_ADDRESS Source;
BYTE Data[]; // 546 bytes max.
} IPX_PACKET ;
typedef IPX_PACKET UNALIGNED *LPIPX_PACKET;
#define IPX_HEADER_LENGTH sizeof(IPX_PACKET)
#define MAXIMUM_IPX_PACKET_LENGTH 576
#define MAXIMUM_IPX_DATA_LENGTH (MAXIMUM_IPX_PACKET_LENGTH - IPX_HEADER_LENGTH)
/*
* IPX TD structure
*/
typedef struct _TDIPX {
LIST_ENTRY IgnoreList; // list of ipx addresses to ignore
ULONG AliveTime; // keep alive time (msec)
PVOID pAliveTimer; // watchdog timer handle
ULONG AlivePoll;
ULONG fClientAlive : 1;
} TDIPX, * PTDIPX;