/** Send an initial DISCOVER or REQUEST message according to the DHCP service's current state. @param[in] DhcpSb The DHCP service instance @retval EFI_SUCCESS The request has been sent @retval other Some error occurs when sending the request. **/ EFI_STATUS DhcpInitRequest ( IN DHCP_SERVICE *DhcpSb ) { EFI_STATUS Status; ASSERT ((DhcpSb->DhcpState == Dhcp4Init) || (DhcpSb->DhcpState == Dhcp4InitReboot)); // // Clear initial time to make sure that elapsed-time is set to 0 for first Discover or REQUEST message. // DhcpSb->ActiveChild->ElaspedTime= 0; if (DhcpSb->DhcpState == Dhcp4Init) { DhcpSetState (DhcpSb, Dhcp4Selecting, FALSE); Status = DhcpSendMessage (DhcpSb, NULL, NULL, DHCP_MSG_DISCOVER, NULL); if (EFI_ERROR (Status)) { DhcpSb->DhcpState = Dhcp4Init; return Status; } } else { DhcpSetState (DhcpSb, Dhcp4Rebooting, FALSE); Status = DhcpSendMessage (DhcpSb, NULL, NULL, DHCP_MSG_REQUEST, NULL); if (EFI_ERROR (Status)) { DhcpSb->DhcpState = Dhcp4InitReboot; return Status; } } return EFI_SUCCESS; }
EFI_STATUS DhcpInitRequest ( IN DHCP_SERVICE *DhcpSb ) /*++ Routine Description: Send an initial DISCOVER or REQUEST message according to the DHCP service's current state. Arguments: DhcpSb - The DHCP service instance Returns: EFI_SUCCESS - The request has been sent --*/ { EFI_STATUS Status; ASSERT ((DhcpSb->DhcpState == Dhcp4Init) || (DhcpSb->DhcpState == Dhcp4InitReboot)); if (DhcpSb->DhcpState == Dhcp4Init) { DhcpSetState (DhcpSb, Dhcp4Selecting, FALSE); Status = DhcpSendMessage (DhcpSb, NULL, NULL, DHCP_MSG_DISCOVER, NULL); if (EFI_ERROR (Status)) { DhcpSb->DhcpState = Dhcp4Init; return Status; } } else { DhcpSetState (DhcpSb, Dhcp4Rebooting, FALSE); Status = DhcpSendMessage (DhcpSb, NULL, NULL, DHCP_MSG_REQUEST, NULL); if (EFI_ERROR (Status)) { DhcpSb->DhcpState = Dhcp4InitReboot; return Status; } } return EFI_SUCCESS; }