diff -urN gpxe-0.9.7/src/arch/i386/include/pxe_api.h gpxe-0.9.7-undiserviceflags/src/arch/i386/include/pxe_api.h --- gpxe-0.9.7/src/arch/i386/include/pxe_api.h 2009-03-01 21:23:42.000000000 -0500 +++ gpxe-0.9.7-undiserviceflags/src/arch/i386/include/pxe_api.h 2009-08-21 20:49:41.000000000 -0400 @@ -1415,6 +1415,25 @@ /** PXE API function code for pxenv_undi_get_iface_info() */ #define PXENV_UNDI_GET_IFACE_INFO 0x0013 +/** Broadcast supported */ +#define SUPPORTED_BROADCAST 0x0001 +/** Multicast supported */ +#define SUPPORTED_MULTICAST 0x0002 +/** Functional/group addressing supported */ +#define SUPPORTED_GROUP 0x0004 +/** Promiscuous mode supported */ +#define SUPPORTED_PROMISCUOUS 0x0008 +/** Software settable station address */ +#define SUPPORTED_SET_STATION_ADDRESS 0x0010 +/** InitiateDiagnostics supported */ +#define SUPPORTED_DIAGNOSTICS 0x0040 +/** Reset MAC supported */ +#define SUPPORTED_RESET 0x0400 +/** Open / Close Adapter supported */ +#define SUPPORTED_OPEN_CLOSE 0x0800 +/** Interrupt Request supported */ +#define SUPPORTED_IRQ 0x1000 + /** Parameter block for pxenv_undi_get_iface_info() */ struct s_PXENV_UNDI_GET_IFACE_INFO { PXENV_STATUS_t Status; /**< PXE status code */ diff -urN gpxe-0.9.7/src/arch/i386/interface/pxe/pxe_undi.c gpxe-0.9.7-undiserviceflags/src/arch/i386/interface/pxe/pxe_undi.c --- gpxe-0.9.7/src/arch/i386/interface/pxe/pxe_undi.c 2009-03-01 21:23:42.000000000 -0500 +++ gpxe-0.9.7-undiserviceflags/src/arch/i386/interface/pxe/pxe_undi.c 2009-08-21 20:49:41.000000000 -0400 @@ -519,7 +519,10 @@ snprintf ( ( char * ) undi_get_iface_info->IfaceType, sizeof ( undi_get_iface_info->IfaceType ), "gPXE" ); undi_get_iface_info->LinkSpeed = 10000000; /* 10 Mbps */ - undi_get_iface_info->ServiceFlags = 0; + undi_get_iface_info->ServiceFlags = + ( SUPPORTED_BROADCAST | SUPPORTED_MULTICAST | + SUPPORTED_SET_STATION_ADDRESS | SUPPORTED_RESET | + SUPPORTED_OPEN_CLOSE | SUPPORTED_IRQ ); memset ( undi_get_iface_info->Reserved, 0, sizeof(undi_get_iface_info->Reserved) );