32/64-Bit UNDI Specification
Version 1.10 12/01/02 E-67
Preparing the CPB
The receive filter CPB is used to change the contents multicast MAC address filter list. To leave
the multicast MAC address filter list unchanged, set the CDB.CPBsize field to
PXE_CPBSIZE_NOT_USED and CDB.CPBaddr to PXE_CPBADDR_NOT_USED.
To change the multicast MAC address filter list, set CDB.CPBsize to the size, in bytes, of the
multicast MAC address filter list and set CDB.CPBaddr to the address of the first entry in the
multicast MAC address filter list.
typedef struct s_pxe_cpb_receive_filters {
// List of multicast MAC addresses. This list, if present,
// will replace the existing multicast MAC address filter list.
PXE_MAC_ADDR MCastList[n];
} PXE_CPB_RECEIVE_FILTERS;
E.4.11.2 Waiting for the Command to Execute
Monitor the upper two bits (14 & 15) in the CDB.StatFlags field. Until these bits change to
report PXE_STATFLAGS_COMMAND_COMPLETE or PXE_STATFLAGS_COMMAND_FAILED,
the command has not been executed by the UNDI.
StatFlags Reason
COMMAND_COMPLETE Command completed successfully. Check StatFlags. DB is written.
COMMAND_FAILED Command failed. StatCode field contains error code.
COMMAND_QUEUED Command has been queued.
INITIALIZE Command has been not executed or queued.
E.4.11.3 Checking Command Execution Results
After command execution completes, either successfully or not, the CDB.StatCode field
contains the result of the command execution.
StatCode Reason
SUCCESS Command completed successfully. Check StatFlags. DB is written.
INVALID_CDB One of the CDB fields was not set correctly.
INVALID_CPB One of the CPB fields was not set correctly.
BUSY UNDI is already processing commands. Try again later.
QUEUE_FULL Command queue is full. Try again later.
NOT_STARTED The UNDI is not started.
NOT_INITIALIZED The UNDI is not initialized.