Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
32/64-Bit UNDI Specification
Version 1.10 12/01/02 E-35
E.3.5.2 PXE_SW_UNDI
This section defines the C structures and #defines for the !PXE S/W UNDI interface.
#pragma pack(1)
typedef struct s_pxe_sw_undi {
PXE_UINT32 Signature; // PXE_ROMID_SIGNATURE
PXE_UINT8 Len; // sizeof(PXE_SW_UNDI)
PXE_UINT8 Fudge; // makes 8-bit cksum zero
PXE_UINT8 Rev; // PXE_ROMID_REV
PXE_UINT8 IFcnt; // physical connector count
PXE_UINT8 MajorVer; // PXE_ROMID_MAJORVER
PXE_UINT8 MinorVer; // PXE_ROMID_MINORVER
PXE_UINT16 reserved1; // zero, not used
PXE_UINT32 Implementation; // Implementation flags
PXE_UINT64 EntryPoint; // API entry point
PXE_UINT8 reserved2[3]; // zero, not used
PXE_UINT8 BusCnt; // number of bustypes supported
PXE_UINT32 BusType[1]; // list of supported bustypes
} PXE_SW_UNDI;
#pragma pack()
E.3.5.3 PXE_UNDI
PXE_UNDI combines both the H/W and S/W UNDI types into one typedef and has #defines for
common fields in both H/W and S/W UNDI types.
#pragma pack(1)
typedef union u_pxe_undi {
PXE_HW_UNDI hw;
PXE_SW_UNDI sw;
} PXE_UNDI;
#pragma pack()
// Signature of !PXE structure
#define PXE_ROMID_SIGNATURE PXE_BUSTYPE(’!’, ’P’, ’X’, ’E’)
// !PXE structure format revision
#define PXE_ROMID_REV 0x02
// UNDI command interface revision. These are the values that
// get sent in option 94 (Client Network Interface Identifier) in
// the DHCP Discover and PXE Boot Server Request packets.
#define PXE_ROMID_MAJORVER 0x03
#define PXE_ROMID_MINORVER 0x01