char vci[9]; /* "PXEClient" */
int vci_len;
int has_pxeclient;
+ int pxeopts_len;
+ int has_pxeopts;
int8_t priority = 0;
uint8_t no_pxedhcp = 0;
unsigned long elapsed;
vci, sizeof ( vci ) );
has_pxeclient = ( ( vci_len >= ( int ) sizeof ( vci ) ) &&
( strncmp ( "PXEClient", vci, sizeof (vci) ) == 0 ));
+ pxeopts_len = dhcppkt_fetch ( dhcppkt, DHCP_VENDOR_ENCAP, NULL, 0 );
+ has_pxeopts = ( pxeopts_len >= 0 );
if ( has_pxeclient )
- DBGC ( dhcp, " pxe" );
+ DBGC ( dhcp, "%s", ( has_pxeopts ? " pxe" : " proxy" ) );
/* Identify priority */
dhcppkt_fetch ( dhcppkt, DHCP_EB_PRIORITY, &priority,
}
/* Select as ProxyDHCP offer, if applicable */
- if ( has_pxeclient && ( msgtype == DHCPOFFER ) &&
+ if ( has_pxeclient && ( ! has_pxeopts ) && ( msgtype == DHCPOFFER ) &&
( priority >= dhcp->proxy_priority ) ) {
dhcp->proxy_server = server_id;
dhcp->proxy_priority = priority;