diff options
author | Jiaxin Wu <jiaxin.wu@intel.com> | 2017-11-16 14:28:33 +0800 |
---|---|---|
committer | Jiaxin Wu <jiaxin.wu@intel.com> | 2017-12-12 19:08:48 +0800 |
commit | cd2a6240714749be3cb788a915684533540913ca (patch) | |
tree | e1e1c0cb6495a15bd0d324c46b884d5fed757293 /NetworkPkg/DnsDxe/DnsProtocol.c | |
parent | 1b59de8444ac70ec1d4876ec8d6e7d957d5b6ed1 (diff) | |
download | edk2-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.c | 102 |
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;
}
|