xDHCPMessage_t *pxDHCPMessage;\r
const size_t xRequiredBufferSize = sizeof( xDHCPMessage_t ) + xOptionsArraySize;\r
uint8_t *pucUDPPayloadBuffer;\r
+static uint8_t ucUseBroadcastFlag = pdFALSE;\r
\r
/* Get a buffer. This uses a maximum delay, but the delay will be capped\r
to ipconfigMAX_SEND_BLOCK_TIME_TICKS so the return value still needs to be\r
pxDHCPMessage->ucAddressLength = dhcpETHERNET_ADDRESS_LENGTH;\r
pxDHCPMessage->ulTransactionID = ulTransactionId;\r
pxDHCPMessage->ulDHCPCookie = dhcpCOOKIE;\r
- pxDHCPMessage->usFlags = dhcpBROADCAST;\r
+\r
+ /* For maximum possibility of success, alternate between broadcast and non\r
+ broadcast. */\r
+ ucUseBroadcastFlag = !ucUseBroadcastFlag;\r
+ if( ucUseBroadcastFlag == pdTRUE )\r
+ {\r
+ pxDHCPMessage->usFlags = dhcpBROADCAST;\r
+ }\r
+ else\r
+ {\r
+ pxDHCPMessage->usFlags = 0;\r
+ }\r
+\r
memcpy( ( void * ) &( pxDHCPMessage->ucClientHardwareAddress[ 0 ] ), ( void * ) pxMACAddress, sizeof( xMACAddress_t ) );\r
\r
/* Copy in the const part of the options options. */\r