summaryrefslogtreecommitdiff
path: root/NetworkPkg/Dhcp6Dxe
diff options
context:
space:
mode:
authorhhuan13 <hhuan13@6f19259b-4bc3-4df7-8a09-765794883524>2011-08-12 06:18:29 +0000
committerhhuan13 <hhuan13@6f19259b-4bc3-4df7-8a09-765794883524>2011-08-12 06:18:29 +0000
commit129b8b096fa2f87a4b24f31c004dea7bfe7872dd (patch)
treedb3b97d0a70da363f257b59889a075f2ee7577d2 /NetworkPkg/Dhcp6Dxe
parent1c2ae02e764e7d8b2b2ed00fb01e093aa33f6331 (diff)
downloadedk2-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.h1
-rw-r--r--NetworkPkg/Dhcp6Dxe/Dhcp6Io.c6
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;
+ }
}
}