#define TRUE -1 #define FALSE 0 typedef unsigned char BYTE; typedef unsigned int WORD; typedef unsigned long DWORD; struct packet_SPX { WORD Checksum; WORD Length; BYTE TransportControl; BYTE PacketType; BYTE DestinationNetwork[4]; BYTE DestinationNode[6]; WORD DestinationSocket; BYTE SourceNetwork[4]; BYTE SourceNode[6]; WORD SourceSocket; BYTE ConnectionControl; BYTE DatastreamType; WORD SourceConnectionID; WORD DestinationConntectionID; WORD SequenceNumber; WORD AckNumber; WORD AllocationNumber; BYTE Data[534]; }; struct packet_IPX { WORD Checksum; WORD Length; BYTE TransportControl; BYTE PacketType; BYTE DestinationNetwork[4]; BYTE DestinationNode[6]; WORD DestinationSocket; BYTE SourceNetwork[4]; BYTE SourceNode[6]; WORD SourceSocket; struct packet_SPX Data; }; struct frame_802_3 { BYTE preamble[7]; BYTE StartFrameDelimeter[1]; BYTE DestinationAddr[6]; BYTE SourceAddr[6]; WORD Length; struct packet_IPX Data; //contains pad and frame CRC check }; struct NCP_reply{ /*802.3 Header*/ BYTE DestinationAddr[6]; BYTE SourceAddr[6]; WORD Length_802; /*IPX Header*/ WORD Checksum; WORD Length_IPX; BYTE TransportControl; BYTE PacketType; BYTE DestinationNetwork[4]; BYTE DestinationNode[6]; WORD DestinationSocket; BYTE SourceNetwork[4]; BYTE SourceNode[6]; WORD SourceSocket; WORD ReplyType; BYTE SequenceNumber; BYTE ConnectionNumberLow; BYTE TaskNumber; BYTE ConnectionNumberHi; BYTE CompletionCode; BYTE ConnectionStatus; BYTE Data[1500]; }; struct NCP_request{ /*802.3 Header*/ BYTE DestinationAddr[6]; BYTE SourceAddr[6]; WORD Length_802; /*IPX Header*/ WORD Checksum; WORD Length_IPX; BYTE TransportControl; BYTE PacketType; BYTE DestinationNetwork[4]; BYTE DestinationNode[6]; WORD DestinationSocket; BYTE SourceNetwork[4]; BYTE SourceNode[6]; WORD SourceSocket; /*NCP Header*/ WORD RequestType; BYTE SequenceNumber; BYTE ConnectionNumberLow; BYTE TaskNumber; BYTE ConnectionNumberHi; BYTE Data[1500]; }; void Initialize(); void RegisterWithPKTDRV(); void EnterPromiscuousMode(); void WaitForStationRequestForLoginEXE(); void SendStationAlternateFile(); void ResynchSequenceNumbers(); void SendOpenReply(); void SendReadResponse(); void WaitForPacket(); int PacketIsStationsReadRequest(); void WaitForPacket();