diff options
author | hhuan13 <hhuan13@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-08-12 06:18:29 +0000 |
---|---|---|
committer | hhuan13 <hhuan13@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-08-12 06:18:29 +0000 |
commit | 129b8b096fa2f87a4b24f31c004dea7bfe7872dd (patch) | |
tree | db3b97d0a70da363f257b59889a075f2ee7577d2 /NetworkPkg/Dhcp6Dxe | |
parent | 1c2ae02e764e7d8b2b2ed00fb01e093aa33f6331 (diff) | |
download | edk2-platforms-129b8b096fa2f87a4b24f31c004dea7bfe7872dd.tar.xz |
1. Fix bugs for PXE-IPv6 to accommodate the situation:
1.1 Proxy DHCP6 service and DHCP6 service on different servers.
1.2 Proxy DHCP6 server with Response Delay setting.
2. Update to support percent-encoding in NBP file name in netboot6 BootFileURL.
Signed-off-by: hhuan13
Reviewed-by: xdu2, tye
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12122 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'NetworkPkg/Dhcp6Dxe')
-rw-r--r-- | NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h | 1 | ||||
-rw-r--r-- | NetworkPkg/Dhcp6Dxe/Dhcp6Io.c | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h b/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h index 84d50ad244..dda0cf37d5 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h @@ -212,6 +212,7 @@ struct _DHCP6_TX_CB { UINT32 RetryLos;
UINT32 TickTime;
UINT16 *Elapsed;
+ BOOLEAN SolicitRetry;
};
//
diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c b/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c index cca1468683..7320642edd 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c @@ -2817,7 +2817,7 @@ Dhcp6OnTimerTick ( //
// Handle the first rt in the transmission of solicit specially.
//
- if (TxCb->RetryCnt == 0 && TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgSolicit) {
+ if ((TxCb->RetryCnt == 0 || TxCb->SolicitRetry) && TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgSolicit) {
if (Instance->AdSelect == NULL) {
//
// Set adpref as 0xff here to indicate select any advertisement
@@ -2893,6 +2893,10 @@ Dhcp6OnTimerTick ( // Retransmit the last sent packet again.
//
Dhcp6TransmitPacket (Instance, TxCb->TxPacket, TxCb->Elapsed);
+ TxCb->SolicitRetry = FALSE;
+ if (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgSolicit) {
+ TxCb->SolicitRetry = TRUE;
+ }
}
}
|