summaryrefslogtreecommitdiffstats
path: root/NetworkPkg/DnsDxe/DnsProtocol.c
diff options
context:
space:
mode:
authorJiaxin Wu <jiaxin.wu@intel.com>2017-11-16 14:28:33 +0800
committerJiaxin Wu <jiaxin.wu@intel.com>2017-12-12 19:08:48 +0800
commitcd2a6240714749be3cb788a915684533540913ca (patch)
treee1e1c0cb6495a15bd0d324c46b884d5fed757293 /NetworkPkg/DnsDxe/DnsProtocol.c
parent1b59de8444ac70ec1d4876ec8d6e7d957d5b6ed1 (diff)
downloadedk2-cd2a6240714749be3cb788a915684533540913ca.tar.gz
edk2-cd2a6240714749be3cb788a915684533540913ca.tar.bz2
edk2-cd2a6240714749be3cb788a915684533540913ca.zip
NetworkPkg/DnsDxe: Update RetryCount/RetryInterval to comply with UEFI spec.
According to UEFI spec: "Retry number if no response received after RetryInterval. If zero, use the parameter configured through Dns.Configure() interface." "Minimum interval of retry is 2 second. If the retry interval is less than 2 second, then use the 2 second. If zero, use the parameter configured through Dns.Configure() interface." For both DNS.HostNameToIp and DNS.GeneralLookUp, the value of RetryCount / RetryInterval need to be updated to comply with UEFI spec. Cc: Ye Ting <ting.ye@intel.com> Cc: Fu Siyuan <siyuan.fu@intel.com> Cc: Wang Fan <fan.wang@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Diffstat (limited to 'NetworkPkg/DnsDxe/DnsProtocol.c')
-rw-r--r--NetworkPkg/DnsDxe/DnsProtocol.c102
1 files changed, 61 insertions, 41 deletions
diff --git a/NetworkPkg/DnsDxe/DnsProtocol.c b/NetworkPkg/DnsDxe/DnsProtocol.c
index 7435607028..df737dcbeb 100644
--- a/NetworkPkg/DnsDxe/DnsProtocol.c
+++ b/NetworkPkg/DnsDxe/DnsProtocol.c
@@ -223,8 +223,6 @@ Dns4Configure (
Dns4InstanceCancelToken(Instance, NULL);
}
- Instance->MaxRetry = 0;
-
if (Instance->UdpIo != NULL){
UdpIoCleanIo (Instance->UdpIo);
}
@@ -377,24 +375,30 @@ Dns4HostNameToIp (
ConfigData = &(Instance->Dns4CfgData);
- Instance->MaxRetry = ConfigData->RetryCount;
-
- Token->Status = EFI_NOT_READY;
- Token->RetryCount = 0;
- Token->RetryInterval = ConfigData->RetryInterval;
-
if (Instance->State != DNS_STATE_CONFIGED) {
Status = EFI_NOT_STARTED;
goto ON_EXIT;
}
+ Token->Status = EFI_NOT_READY;
+
//
- // Check the MaxRetry and RetryInterval values.
+ // If zero, use the parameter configured through Dns.Configure() interface.
//
- if (Instance->MaxRetry == 0) {
- Instance->MaxRetry = DNS_DEFAULT_RETRY;
+ if (Token->RetryCount == 0) {
+ Token->RetryCount = ConfigData->RetryCount;
}
+ //
+ // If zero, use the parameter configured through Dns.Configure() interface.
+ //
+ if (Token->RetryInterval == 0) {
+ Token->RetryInterval = ConfigData->RetryInterval;
+ }
+
+ //
+ // Minimum interval of retry is 2 second. If the retry interval is less than 2 second, then use the 2 second.
+ //
if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {
Token->RetryInterval = DNS_DEFAULT_TIMEOUT;
}
@@ -620,25 +624,31 @@ Dns4GeneralLookUp (
Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL4 (This);
ConfigData = &(Instance->Dns4CfgData);
-
- Instance->MaxRetry = ConfigData->RetryCount;
-
- Token->Status = EFI_NOT_READY;
- Token->RetryCount = 0;
- Token->RetryInterval = ConfigData->RetryInterval;
if (Instance->State != DNS_STATE_CONFIGED) {
Status = EFI_NOT_STARTED;
goto ON_EXIT;
}
+ Token->Status = EFI_NOT_READY;
+
+ //
+ // If zero, use the parameter configured through Dns.Configure() interface.
//
- // Check the MaxRetry and RetryInterval values.
+ if (Token->RetryCount == 0) {
+ Token->RetryCount = ConfigData->RetryCount;
+ }
+
+ //
+ // If zero, use the parameter configured through Dns.Configure() interface.
//
- if (Instance->MaxRetry == 0) {
- Instance->MaxRetry = DNS_DEFAULT_RETRY;
+ if (Token->RetryInterval == 0) {
+ Token->RetryInterval = ConfigData->RetryInterval;
}
+ //
+ // Minimum interval of retry is 2 second. If the retry interval is less than 2 second, then use the 2 second.
+ //
if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {
Token->RetryInterval = DNS_DEFAULT_TIMEOUT;
}
@@ -1052,8 +1062,6 @@ Dns6Configure (
Dns6InstanceCancelToken(Instance, NULL);
}
- Instance->MaxRetry = 0;
-
if (Instance->UdpIo != NULL){
UdpIoCleanIo (Instance->UdpIo);
}
@@ -1203,28 +1211,34 @@ Dns6HostNameToIp (
Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This);
ConfigData = &(Instance->Dns6CfgData);
-
- Instance->MaxRetry = ConfigData->RetryCount;
-
- Token->Status = EFI_NOT_READY;
- Token->RetryCount = 0;
- Token->RetryInterval = ConfigData->RetryInterval;
if (Instance->State != DNS_STATE_CONFIGED) {
Status = EFI_NOT_STARTED;
goto ON_EXIT;
}
+ Token->Status = EFI_NOT_READY;
+
//
- // Check the MaxRetry and RetryInterval values.
+ // If zero, use the parameter configured through Dns.Configure() interface.
//
- if (Instance->MaxRetry == 0) {
- Instance->MaxRetry = DNS_DEFAULT_RETRY;
+ if (Token->RetryCount == 0) {
+ Token->RetryCount = ConfigData->RetryCount;
}
+ //
+ // If zero, use the parameter configured through Dns.Configure() interface.
+ //
+ if (Token->RetryInterval == 0) {
+ Token->RetryInterval = ConfigData->RetryInterval;
+ }
+
+ //
+ // Minimum interval of retry is 2 second. If the retry interval is less than 2 second, then use the 2 second.
+ //
if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {
Token->RetryInterval = DNS_DEFAULT_TIMEOUT;
- }
+ }
//
// Check cache
@@ -1451,25 +1465,31 @@ Dns6GeneralLookUp (
Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This);
ConfigData = &(Instance->Dns6CfgData);
-
- Instance->MaxRetry = ConfigData->RetryCount;
-
- Token->Status = EFI_NOT_READY;
- Token->RetryCount = 0;
- Token->RetryInterval = ConfigData->RetryInterval;
if (Instance->State != DNS_STATE_CONFIGED) {
Status = EFI_NOT_STARTED;
goto ON_EXIT;
}
+ Token->Status = EFI_NOT_READY;
+
//
- // Check the MaxRetry and RetryInterval values.
+ // If zero, use the parameter configured through Dns.Configure() interface.
//
- if (Instance->MaxRetry == 0) {
- Instance->MaxRetry = DNS_DEFAULT_RETRY;
+ if (Token->RetryCount == 0) {
+ Token->RetryCount = ConfigData->RetryCount;
+ }
+
+ //
+ // If zero, use the parameter configured through Dns.Configure() interface.
+ //
+ if (Token->RetryInterval == 0) {
+ Token->RetryInterval = ConfigData->RetryInterval;
}
+ //
+ // Minimum interval of retry is 2 second. If the retry interval is less than 2 second, then use the 2 second.
+ //
if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {
Token->RetryInterval = DNS_DEFAULT_TIMEOUT;
}