Lan Life

IPX (Internetwork Packet Exchange) and SPX (Sequenced Packet Exchange) are networking protocols used by Novell NetWare. IPX is similar to IP and SPX is similar to TCP. IPX/SPX is mostly used for LAN.

Network Address

The complete address to a target is made up of the Node address, the network number and the socket number. The node address is the MAC address of the target node. The human-friendly form is six groups of hexadecimal digits, separated by hyphens. Ex 11-22-33-44-55-66.

Immediate Address

IPX Header

The IPX header is 30 bytes long and the packet can then contain 546 bytes of data. To send a packet some fields need to be filled in and some fields will be filled in by IPX. In comments application set field start with App and Ipx/Spx set fields start with IPX.

int16_t CheckSum // Ipx. Set to 0xFFFF.

int16_t Length // Ipx. Total packet length (inc header).

int8_t TransportControl // Ipx.

int8_t PacketType // App. 4 for Ipx, 5 for Spx.

int8_t DestinationNetwork[4] // App. Set field to network nr of target. 0 = Same network as source.

int8_t DesitnationNode[6] // App. Set to node address of target

int16_t DestinationSocket // App. Set to socket id of target socket.

int8_t SourceNetwork[4] // Ipx

int8_t SourceNode[6] // Ipx

int16_t SourceSocket // Ipx

SPX Header

The SPX header has a total size of 42 bytes and the first 30 is the IPX header.

int8_t IPXHeader[30];

int8_t ConnectionControl // App. Bit field

int8_t DataStreamType // Ipx

int16_t SourceConnectionId // Ipx

int16_t DestinationConnectionId // Ipx

int16_t SequenceNumber // Ipx

int16_t AcknowledgeNumber // Ipx.

int16_t AllocationNumber // Ipx.

Event Control Block


void* Ptr // Ptr to memory for packet fragment.

int16_t Length // Length of packet fragment. First must be able to hold IPX or SPX header.


void* LinkAddress // Ipx

void* EventServiceRoutine // Ipx

int8_t InUseFlag // Ipx

int8_t CompletionCode // Ipx

int16_t SocketNumber // App

int16_t ConnectionID // Ipx

int8_t Unused[2] // Ipx

int8_t DriverWorkspace[12] // Ipx.

int8_t ImmediateAddress[6] // Set by Ipx for received packets, app for transmitted packets.

int16_t FragmentCount // App.

FragDescr Fragments[2] // App.







IPX_SPX_OpenSocket : 0x00

IPX_SPX_CloseSocket : 0x01

IPX_GetLocalTarget : 0x02

IPX_SendPacket : 0x03

IPX_ListenForPacket : 0x04

IPX_Schedule_IPX_Event : 0x05

IPX_CancelEvent : 0x06

IPX_GetIntervalMarker : 0x08

IPX_GetInternetworkAddress : 0x09

IPX_RelingquishControl : 0x0A

IPX_DisconnectFromTarget : 0x0B


SPX_Initilize : 0x10

SPX_EstablishConnection : 0x11

SPX_LIstenForConnection : 0x12

SPX_TerminateConnection : 0x13

SPX_AbortConnection : 0x14

SPX_GetConnectionStatus : x015

SPX_SendSequncePacket : 0x16

SPX_ListenForSequencePacket : 0x17