@param[in] TokenMap All DNSv4 Token entrys.\r
@param[in] TokenEntry TokenEntry need to be removed.\r
\r
- @retval EFI_SUCCESS Remove TokenEntry from TokenMap sucessfully.\r
+ @retval EFI_SUCCESS Remove TokenEntry from TokenMap successfully.\r
@retval EFI_NOT_FOUND TokenEntry is not found in TokenMap.\r
\r
**/\r
EFI_STATUS\r
Dns4RemoveTokenEntry (\r
- IN NET_MAP *TokenMap,\r
- IN DNS4_TOKEN_ENTRY *TokenEntry\r
+ IN NET_MAP *TokenMap,\r
+ IN DNS4_TOKEN_ENTRY *TokenEntry\r
)\r
{\r
NET_MAP_ITEM *Item;\r
//\r
// Find the TokenEntry first.\r
//\r
- Item = NetMapFindKey (TokenMap, (VOID *) TokenEntry);\r
+ Item = NetMapFindKey (TokenMap, (VOID *)TokenEntry);\r
\r
if (Item != NULL) {\r
//\r
@param[in] TokenMap All DNSv6 Token entrys.\r
@param[in] TokenEntry TokenEntry need to be removed.\r
\r
- @retval EFI_SUCCESS Remove TokenEntry from TokenMap sucessfully.\r
+ @retval EFI_SUCCESS Remove TokenEntry from TokenMap successfully.\r
@retval EFI_NOT_FOUND TokenEntry is not found in TokenMap.\r
\r
**/\r
EFI_STATUS\r
Dns6RemoveTokenEntry (\r
- IN NET_MAP *TokenMap,\r
- IN DNS6_TOKEN_ENTRY *TokenEntry\r
+ IN NET_MAP *TokenMap,\r
+ IN DNS6_TOKEN_ENTRY *TokenEntry\r
)\r
{\r
NET_MAP_ITEM *Item;\r
//\r
// Find the TokenEntry first.\r
//\r
- Item = NetMapFindKey (TokenMap, (VOID *) TokenEntry);\r
+ Item = NetMapFindKey (TokenMap, (VOID *)TokenEntry);\r
\r
if (Item != NULL) {\r
//\r
}\r
\r
/**\r
- This function cancle the token specified by Arg in the Map.\r
+ This function cancel the token specified by Arg in the Map.\r
\r
@param[in] Map Pointer to the NET_MAP.\r
@param[in] Item Pointer to the NET_MAP_ITEM.\r
IN VOID *Arg OPTIONAL\r
)\r
{\r
- DNS4_TOKEN_ENTRY *TokenEntry;\r
- NET_BUF *Packet;\r
- UDP_IO *UdpIo;\r
+ DNS4_TOKEN_ENTRY *TokenEntry;\r
+ NET_BUF *Packet;\r
+ UDP_IO *UdpIo;\r
\r
if ((Arg != NULL) && (Item->Key != Arg)) {\r
return EFI_SUCCESS;\r
// If the TokenEntry is a transmit TokenEntry, the corresponding Packet is recorded in\r
// Item->Value.\r
//\r
- Packet = (NET_BUF *) (Item->Value);\r
- UdpIo = (UDP_IO *) (*((UINTN *) &Packet->ProtoData[0]));\r
+ Packet = (NET_BUF *)(Item->Value);\r
+ UdpIo = (UDP_IO *)(*((UINTN *)&Packet->ProtoData[0]));\r
\r
UdpIoCancelSentDatagram (UdpIo, Packet);\r
}\r
//\r
// Remove TokenEntry from Dns4TxTokens.\r
//\r
- TokenEntry = (DNS4_TOKEN_ENTRY *) Item->Key;\r
+ TokenEntry = (DNS4_TOKEN_ENTRY *)Item->Key;\r
if (Dns4RemoveTokenEntry (Map, TokenEntry) == EFI_SUCCESS) {\r
TokenEntry->Token->Status = EFI_ABORTED;\r
gBS->SignalEvent (TokenEntry->Token->Event);\r
}\r
\r
/**\r
- This function cancle the token specified by Arg in the Map.\r
+ This function cancel the token specified by Arg in the Map.\r
\r
@param[in] Map Pointer to the NET_MAP.\r
@param[in] Item Pointer to the NET_MAP_ITEM.\r
IN VOID *Arg OPTIONAL\r
)\r
{\r
- DNS6_TOKEN_ENTRY *TokenEntry;\r
- NET_BUF *Packet;\r
- UDP_IO *UdpIo;\r
+ DNS6_TOKEN_ENTRY *TokenEntry;\r
+ NET_BUF *Packet;\r
+ UDP_IO *UdpIo;\r
\r
if ((Arg != NULL) && (Item->Key != Arg)) {\r
return EFI_SUCCESS;\r
// If the TokenEntry is a transmit TokenEntry, the corresponding Packet is recorded in\r
// Item->Value.\r
//\r
- Packet = (NET_BUF *) (Item->Value);\r
- UdpIo = (UDP_IO *) (*((UINTN *) &Packet->ProtoData[0]));\r
+ Packet = (NET_BUF *)(Item->Value);\r
+ UdpIo = (UDP_IO *)(*((UINTN *)&Packet->ProtoData[0]));\r
\r
UdpIoCancelSentDatagram (UdpIo, Packet);\r
}\r
//\r
// Remove TokenEntry from Dns6TxTokens.\r
//\r
- TokenEntry = (DNS6_TOKEN_ENTRY *) Item->Key;\r
+ TokenEntry = (DNS6_TOKEN_ENTRY *)Item->Key;\r
if (Dns6RemoveTokenEntry (Map, TokenEntry) == EFI_SUCCESS) {\r
TokenEntry->Token->Status = EFI_ABORTED;\r
gBS->SignalEvent (TokenEntry->Token->Event);\r
@param[in] Token Pointer to the token to be get.\r
@param[out] TokenEntry Pointer to TokenEntry corresponding Token.\r
\r
- @retval EFI_SUCCESS Get the TokenEntry from the TokensMap sucessfully.\r
+ @retval EFI_SUCCESS Get the TokenEntry from the TokensMap successfully.\r
@retval EFI_NOT_FOUND TokenEntry is not found in TokenMap.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
GetDns4TokenEntry (\r
- IN NET_MAP *TokensMap,\r
- IN EFI_DNS4_COMPLETION_TOKEN *Token,\r
- OUT DNS4_TOKEN_ENTRY **TokenEntry\r
+ IN NET_MAP *TokensMap,\r
+ IN EFI_DNS4_COMPLETION_TOKEN *Token,\r
+ OUT DNS4_TOKEN_ENTRY **TokenEntry\r
)\r
{\r
- LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Entry;\r
\r
- NET_MAP_ITEM *Item;\r
+ NET_MAP_ITEM *Item;\r
\r
NET_LIST_FOR_EACH (Entry, &TokensMap->Used) {\r
- Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link);\r
- *TokenEntry = (DNS4_TOKEN_ENTRY *) (Item->Key);\r
+ Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link);\r
+ *TokenEntry = (DNS4_TOKEN_ENTRY *)(Item->Key);\r
if ((*TokenEntry)->Token == Token) {\r
return EFI_SUCCESS;\r
}\r
@param[in] Token Pointer to the token to be get.\r
@param[out] TokenEntry Pointer to TokenEntry corresponding Token.\r
\r
- @retval EFI_SUCCESS Get the TokenEntry from the TokensMap sucessfully.\r
+ @retval EFI_SUCCESS Get the TokenEntry from the TokensMap successfully.\r
@retval EFI_NOT_FOUND TokenEntry is not found in TokenMap.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
GetDns6TokenEntry (\r
- IN NET_MAP *TokensMap,\r
- IN EFI_DNS6_COMPLETION_TOKEN *Token,\r
- OUT DNS6_TOKEN_ENTRY **TokenEntry\r
+ IN NET_MAP *TokensMap,\r
+ IN EFI_DNS6_COMPLETION_TOKEN *Token,\r
+ OUT DNS6_TOKEN_ENTRY **TokenEntry\r
)\r
{\r
- LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Entry;\r
\r
- NET_MAP_ITEM *Item;\r
+ NET_MAP_ITEM *Item;\r
\r
NET_LIST_FOR_EACH (Entry, &TokensMap->Used) {\r
- Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link);\r
- *TokenEntry = (DNS6_TOKEN_ENTRY *) (Item->Key);\r
+ Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link);\r
+ *TokenEntry = (DNS6_TOKEN_ENTRY *)(Item->Key);\r
if ((*TokenEntry)->Token == Token) {\r
return EFI_SUCCESS;\r
}\r
}\r
\r
- *TokenEntry =NULL;\r
+ *TokenEntry = NULL;\r
\r
return EFI_NOT_FOUND;\r
}\r
\r
TokenEntry = NULL;\r
\r
- if(Token != NULL ) {\r
+ if (Token != NULL ) {\r
Status = GetDns4TokenEntry (&Instance->Dns4TxTokens, Token, &TokenEntry);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
// the Dns4TxTokens and returns success.\r
//\r
if (NetMapIsEmpty (&Instance->Dns4TxTokens)) {\r
- Instance->UdpIo->Protocol.Udp4->Cancel (Instance->UdpIo->Protocol.Udp4, &Instance->UdpIo->RecvRequest->Token.Udp4);\r
+ Instance->UdpIo->Protocol.Udp4->Cancel (Instance->UdpIo->Protocol.Udp4, &Instance->UdpIo->RecvRequest->Token.Udp4);\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
\r
TokenEntry = NULL;\r
\r
- if(Token != NULL ) {\r
+ if (Token != NULL ) {\r
Status = GetDns6TokenEntry (&Instance->Dns6TxTokens, Token, &TokenEntry);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
// the Dns6TxTokens and returns success.\r
//\r
if (NetMapIsEmpty (&Instance->Dns6TxTokens)) {\r
- Instance->UdpIo->Protocol.Udp6->Cancel (Instance->UdpIo->Protocol.Udp6, &Instance->UdpIo->RecvRequest->Token.Udp6);\r
+ Instance->UdpIo->Protocol.Udp6->Cancel (Instance->UdpIo->Protocol.Udp6, &Instance->UdpIo->RecvRequest->Token.Udp6);\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
IN EFI_DNS4_CONFIG_DATA *Src\r
)\r
{\r
- UINTN Len;\r
- UINT32 Index;\r
+ UINTN Len;\r
+ UINT32 Index;\r
\r
CopyMem (Dst, Src, sizeof (*Dst));\r
Dst->DnsServerList = NULL;\r
IN EFI_DNS6_CONFIG_DATA *Src\r
)\r
{\r
- UINTN Len;\r
- UINT32 Index;\r
+ UINTN Len;\r
+ UINT32 Index;\r
\r
CopyMem (Dst, Src, sizeof (*Dst));\r
Dst->DnsServerList = NULL;\r
VOID\r
EFIAPI\r
DnsDummyExtFree (\r
- IN VOID *Arg\r
+ IN VOID *Arg\r
)\r
{\r
}\r
@param UdpCfgData The UDP configure data to reconfigure the UDP_IO\r
\r
@retval TRUE The default address is retrieved and UDP is reconfigured.\r
- @retval FALSE Some error occured.\r
+ @retval FALSE Some error occurred.\r
\r
**/\r
BOOLEAN\r
Dns4GetMapping (\r
- IN DNS_INSTANCE *Instance,\r
- IN UDP_IO *UdpIo,\r
- IN EFI_UDP4_CONFIG_DATA *UdpCfgData\r
+ IN DNS_INSTANCE *Instance,\r
+ IN UDP_IO *UdpIo,\r
+ IN EFI_UDP4_CONFIG_DATA *UdpCfgData\r
)\r
{\r
- DNS_SERVICE *Service;\r
- EFI_IP4_MODE_DATA Ip4Mode;\r
- EFI_UDP4_PROTOCOL *Udp;\r
- EFI_STATUS Status;\r
+ DNS_SERVICE *Service;\r
+ EFI_IP4_MODE_DATA Ip4Mode;\r
+ EFI_UDP4_PROTOCOL *Udp;\r
+ EFI_STATUS Status;\r
\r
ASSERT (Instance->Dns4CfgData.UseDefaultSetting);\r
\r
Udp->Poll (Udp);\r
\r
if (!EFI_ERROR (Udp->GetModeData (Udp, NULL, &Ip4Mode, NULL, NULL)) &&\r
- Ip4Mode.IsConfigured) {\r
-\r
+ Ip4Mode.IsConfigured)\r
+ {\r
Udp->Configure (Udp, NULL);\r
- return (BOOLEAN) (Udp->Configure (Udp, UdpCfgData) == EFI_SUCCESS);\r
+ return (BOOLEAN)(Udp->Configure (Udp, UdpCfgData) == EFI_SUCCESS);\r
}\r
}\r
\r
@param UdpCfgData The UDP configure data to reconfigure the UDP_IO\r
\r
@retval TRUE Configure the Udp6 instance successfully.\r
- @retval FALSE Some error occured.\r
+ @retval FALSE Some error occurred.\r
\r
**/\r
BOOLEAN\r
Dns6GetMapping (\r
- IN DNS_INSTANCE *Instance,\r
- IN UDP_IO *UdpIo,\r
- IN EFI_UDP6_CONFIG_DATA *UdpCfgData\r
+ IN DNS_INSTANCE *Instance,\r
+ IN UDP_IO *UdpIo,\r
+ IN EFI_UDP6_CONFIG_DATA *UdpCfgData\r
)\r
{\r
- DNS_SERVICE *Service;\r
- EFI_IP6_MODE_DATA Ip6Mode;\r
- EFI_UDP6_PROTOCOL *Udp;\r
- EFI_STATUS Status;\r
+ DNS_SERVICE *Service;\r
+ EFI_IP6_MODE_DATA Ip6Mode;\r
+ EFI_UDP6_PROTOCOL *Udp;\r
+ EFI_STATUS Status;\r
\r
Service = Instance->Service;\r
Udp = UdpIo->Protocol.Udp6;\r
**/\r
EFI_STATUS\r
Dns4ConfigUdp (\r
- IN DNS_INSTANCE *Instance,\r
- IN UDP_IO *UdpIo\r
+ IN DNS_INSTANCE *Instance,\r
+ IN UDP_IO *UdpIo\r
)\r
{\r
- EFI_DNS4_CONFIG_DATA *Config;\r
- EFI_UDP4_CONFIG_DATA UdpConfig;\r
- EFI_STATUS Status;\r
+ EFI_DNS4_CONFIG_DATA *Config;\r
+ EFI_UDP4_CONFIG_DATA UdpConfig;\r
+ EFI_STATUS Status;\r
\r
Config = &Instance->Dns4CfgData;\r
\r
**/\r
EFI_STATUS\r
Dns6ConfigUdp (\r
- IN DNS_INSTANCE *Instance,\r
- IN UDP_IO *UdpIo\r
+ IN DNS_INSTANCE *Instance,\r
+ IN UDP_IO *UdpIo\r
)\r
{\r
- EFI_DNS6_CONFIG_DATA *Config;\r
- EFI_UDP6_CONFIG_DATA UdpConfig;\r
- EFI_STATUS Status;\r
+ EFI_DNS6_CONFIG_DATA *Config;\r
+ EFI_UDP6_CONFIG_DATA UdpConfig;\r
+ EFI_STATUS Status;\r
\r
Config = &Instance->Dns6CfgData;\r
\r
EFI_STATUS\r
EFIAPI\r
UpdateDns4Cache (\r
- IN LIST_ENTRY *Dns4CacheList,\r
- IN BOOLEAN DeleteFlag,\r
- IN BOOLEAN Override,\r
- IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry\r
+ IN LIST_ENTRY *Dns4CacheList,\r
+ IN BOOLEAN DeleteFlag,\r
+ IN BOOLEAN Override,\r
+ IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry\r
)\r
{\r
- DNS4_CACHE *NewDnsCache;\r
- DNS4_CACHE *Item;\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
+ DNS4_CACHE *NewDnsCache;\r
+ DNS4_CACHE *Item;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
\r
NewDnsCache = NULL;\r
Item = NULL;\r
//\r
NET_LIST_FOR_EACH_SAFE (Entry, Next, Dns4CacheList) {\r
Item = NET_LIST_USER_STRUCT (Entry, DNS4_CACHE, AllCacheLink);\r
- if (StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0 && \\r
- CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv4_ADDRESS)) == 0) {\r
+ if ((StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0) && \\r
+ (CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv4_ADDRESS)) == 0))\r
+ {\r
//\r
// This is the Dns cache entry\r
//\r
Item->DnsCache.Timeout = DnsCacheEntry.Timeout;\r
\r
return EFI_SUCCESS;\r
- }else {\r
+ } else {\r
return EFI_ACCESS_DENIED;\r
}\r
}\r
EFI_STATUS\r
EFIAPI\r
UpdateDns6Cache (\r
- IN LIST_ENTRY *Dns6CacheList,\r
- IN BOOLEAN DeleteFlag,\r
- IN BOOLEAN Override,\r
- IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry\r
+ IN LIST_ENTRY *Dns6CacheList,\r
+ IN BOOLEAN DeleteFlag,\r
+ IN BOOLEAN Override,\r
+ IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry\r
)\r
{\r
- DNS6_CACHE *NewDnsCache;\r
- DNS6_CACHE *Item;\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
+ DNS6_CACHE *NewDnsCache;\r
+ DNS6_CACHE *Item;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
\r
NewDnsCache = NULL;\r
Item = NULL;\r
//\r
NET_LIST_FOR_EACH_SAFE (Entry, Next, Dns6CacheList) {\r
Item = NET_LIST_USER_STRUCT (Entry, DNS6_CACHE, AllCacheLink);\r
- if (StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0 && \\r
- CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv6_ADDRESS)) == 0) {\r
+ if ((StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0) && \\r
+ (CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv6_ADDRESS)) == 0))\r
+ {\r
//\r
// This is the Dns cache entry\r
//\r
Item->DnsCache.Timeout = DnsCacheEntry.Timeout;\r
\r
return EFI_SUCCESS;\r
- }else {\r
+ } else {\r
return EFI_ACCESS_DENIED;\r
}\r
}\r
EFI_STATUS\r
EFIAPI\r
AddDns4ServerIp (\r
- IN LIST_ENTRY *Dns4ServerList,\r
- IN EFI_IPv4_ADDRESS ServerIp\r
+ IN LIST_ENTRY *Dns4ServerList,\r
+ IN EFI_IPv4_ADDRESS ServerIp\r
)\r
{\r
- DNS4_SERVER_IP *NewServerIp;\r
- DNS4_SERVER_IP *Item;\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
+ DNS4_SERVER_IP *NewServerIp;\r
+ DNS4_SERVER_IP *Item;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
\r
NewServerIp = NULL;\r
Item = NULL;\r
EFI_STATUS\r
EFIAPI\r
AddDns6ServerIp (\r
- IN LIST_ENTRY *Dns6ServerList,\r
- IN EFI_IPv6_ADDRESS ServerIp\r
+ IN LIST_ENTRY *Dns6ServerList,\r
+ IN EFI_IPv6_ADDRESS ServerIp\r
)\r
{\r
- DNS6_SERVER_IP *NewServerIp;\r
- DNS6_SERVER_IP *Item;\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
+ DNS6_SERVER_IP *NewServerIp;\r
+ DNS6_SERVER_IP *Item;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
\r
NewServerIp = NULL;\r
Item = NULL;\r
**/\r
BOOLEAN\r
IsValidDnsResponse (\r
- IN NET_MAP *TokensMap,\r
- IN UINT16 Identification,\r
- IN UINT16 Type,\r
- IN UINT16 Class,\r
- OUT NET_MAP_ITEM **Item\r
+ IN NET_MAP *TokensMap,\r
+ IN UINT16 Identification,\r
+ IN UINT16 Type,\r
+ IN UINT16 Class,\r
+ OUT NET_MAP_ITEM **Item\r
)\r
{\r
- LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Entry;\r
\r
- NET_BUF *Packet;\r
- UINT8 *TxString;\r
- DNS_HEADER *DnsHeader;\r
- CHAR8 *QueryName;\r
- DNS_QUERY_SECTION *QuerySection;\r
+ NET_BUF *Packet;\r
+ UINT8 *TxString;\r
+ DNS_HEADER *DnsHeader;\r
+ CHAR8 *QueryName;\r
+ DNS_QUERY_SECTION *QuerySection;\r
\r
NET_LIST_FOR_EACH (Entry, &TokensMap->Used) {\r
- *Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link);\r
- Packet = (NET_BUF *) ((*Item)->Value);\r
- if (Packet == NULL){\r
-\r
+ *Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link);\r
+ Packet = (NET_BUF *)((*Item)->Value);\r
+ if (Packet == NULL) {\r
continue;\r
} else {\r
TxString = NetbufGetByte (Packet, 0, NULL);\r
ASSERT (TxString != NULL);\r
- DnsHeader = (DNS_HEADER *) TxString;\r
- QueryName = (CHAR8 *) (TxString + sizeof (*DnsHeader));\r
- QuerySection = (DNS_QUERY_SECTION *) (QueryName + AsciiStrLen (QueryName) + 1);\r
-\r
- if (NTOHS (DnsHeader->Identification) == Identification &&\r
- NTOHS (QuerySection->Type) == Type &&\r
- NTOHS (QuerySection->Class) == Class) {\r
+ DnsHeader = (DNS_HEADER *)TxString;\r
+ QueryName = (CHAR8 *)(TxString + sizeof (*DnsHeader));\r
+ QuerySection = (DNS_QUERY_SECTION *)(QueryName + AsciiStrLen (QueryName) + 1);\r
+\r
+ if ((NTOHS (DnsHeader->Identification) == Identification) &&\r
+ (NTOHS (QuerySection->Type) == Type) &&\r
+ (NTOHS (QuerySection->Class) == Class))\r
+ {\r
return TRUE;\r
}\r
}\r
**/\r
EFI_STATUS\r
ParseDnsResponse (\r
- IN OUT DNS_INSTANCE *Instance,\r
- IN UINT8 *RxString,\r
- IN UINT32 Length,\r
- OUT BOOLEAN *Completed\r
+ IN OUT DNS_INSTANCE *Instance,\r
+ IN UINT8 *RxString,\r
+ IN UINT32 Length,\r
+ OUT BOOLEAN *Completed\r
)\r
{\r
- DNS_HEADER *DnsHeader;\r
+ DNS_HEADER *DnsHeader;\r
\r
- CHAR8 *QueryName;\r
- UINT32 QueryNameLen;\r
- DNS_QUERY_SECTION *QuerySection;\r
+ CHAR8 *QueryName;\r
+ UINT32 QueryNameLen;\r
+ DNS_QUERY_SECTION *QuerySection;\r
\r
- CHAR8 *AnswerName;\r
- DNS_ANSWER_SECTION *AnswerSection;\r
- UINT8 *AnswerData;\r
+ CHAR8 *AnswerName;\r
+ DNS_ANSWER_SECTION *AnswerSection;\r
+ UINT8 *AnswerData;\r
\r
- NET_MAP_ITEM *Item;\r
- DNS4_TOKEN_ENTRY *Dns4TokenEntry;\r
- DNS6_TOKEN_ENTRY *Dns6TokenEntry;\r
+ NET_MAP_ITEM *Item;\r
+ DNS4_TOKEN_ENTRY *Dns4TokenEntry;\r
+ DNS6_TOKEN_ENTRY *Dns6TokenEntry;\r
\r
- UINT32 IpCount;\r
- UINT32 RRCount;\r
- UINT32 AnswerSectionNum;\r
- UINT32 CNameTtl;\r
+ UINT32 IpCount;\r
+ UINT32 RRCount;\r
+ UINT32 AnswerSectionNum;\r
+ UINT32 CNameTtl;\r
\r
- EFI_IPv4_ADDRESS *HostAddr4;\r
- EFI_IPv6_ADDRESS *HostAddr6;\r
+ EFI_IPv4_ADDRESS *HostAddr4;\r
+ EFI_IPv6_ADDRESS *HostAddr6;\r
\r
EFI_DNS4_CACHE_ENTRY *Dns4CacheEntry;\r
EFI_DNS6_CACHE_ENTRY *Dns6CacheEntry;\r
DNS_RESOURCE_RECORD *Dns4RR;\r
DNS6_RESOURCE_RECORD *Dns6RR;\r
\r
- EFI_STATUS Status;\r
- UINT32 RemainingLength;\r
+ EFI_STATUS Status;\r
+ UINT32 RemainingLength;\r
\r
- EFI_TPL OldTpl;\r
+ EFI_TPL OldTpl;\r
\r
- Item = NULL;\r
- Dns4TokenEntry = NULL;\r
- Dns6TokenEntry = NULL;\r
+ Item = NULL;\r
+ Dns4TokenEntry = NULL;\r
+ Dns6TokenEntry = NULL;\r
\r
IpCount = 0;\r
RRCount = 0;\r
AnswerSectionNum = 0;\r
CNameTtl = 0;\r
\r
- HostAddr4 = NULL;\r
- HostAddr6 = NULL;\r
+ HostAddr4 = NULL;\r
+ HostAddr6 = NULL;\r
\r
- Dns4CacheEntry = NULL;\r
- Dns6CacheEntry = NULL;\r
+ Dns4CacheEntry = NULL;\r
+ Dns6CacheEntry = NULL;\r
\r
- Dns4RR = NULL;\r
- Dns6RR = NULL;\r
+ Dns4RR = NULL;\r
+ Dns6RR = NULL;\r
\r
- *Completed = TRUE;\r
- Status = EFI_SUCCESS;\r
- RemainingLength = Length;\r
+ *Completed = TRUE;\r
+ Status = EFI_SUCCESS;\r
+ RemainingLength = Length;\r
\r
//\r
- // Check whether the remaining packet length is avaiable or not.\r
+ // Check whether the remaining packet length is available or not.\r
//\r
if (RemainingLength <= sizeof (DNS_HEADER)) {\r
*Completed = FALSE;\r
//\r
// Get header\r
//\r
- DnsHeader = (DNS_HEADER *) RxString;\r
+ DnsHeader = (DNS_HEADER *)RxString;\r
\r
DnsHeader->Identification = NTOHS (DnsHeader->Identification);\r
- DnsHeader->Flags.Uint16 = NTOHS (DnsHeader->Flags.Uint16);\r
- DnsHeader->QuestionsNum = NTOHS (DnsHeader->QuestionsNum);\r
- DnsHeader->AnswersNum = NTOHS (DnsHeader->AnswersNum);\r
- DnsHeader->AuthorityNum = NTOHS (DnsHeader->AuthorityNum);\r
- DnsHeader->AditionalNum = NTOHS (DnsHeader->AditionalNum);\r
+ DnsHeader->Flags.Uint16 = NTOHS (DnsHeader->Flags.Uint16);\r
+ DnsHeader->QuestionsNum = NTOHS (DnsHeader->QuestionsNum);\r
+ DnsHeader->AnswersNum = NTOHS (DnsHeader->AnswersNum);\r
+ DnsHeader->AuthorityNum = NTOHS (DnsHeader->AuthorityNum);\r
+ DnsHeader->AditionalNum = NTOHS (DnsHeader->AditionalNum);\r
\r
//\r
// There is always one QuestionsNum in DNS message. The capability to handle more\r
//\r
// Get Query name\r
//\r
- QueryName = (CHAR8 *) (RxString + sizeof (*DnsHeader));\r
+ QueryName = (CHAR8 *)(RxString + sizeof (*DnsHeader));\r
\r
- QueryNameLen = (UINT32) AsciiStrLen (QueryName) + 1;\r
+ QueryNameLen = (UINT32)AsciiStrLen (QueryName) + 1;\r
\r
//\r
- // Check whether the remaining packet length is avaiable or not.\r
+ // Check whether the remaining packet length is available or not.\r
//\r
if (RemainingLength <= QueryNameLen + sizeof (DNS_QUERY_SECTION)) {\r
*Completed = FALSE;\r
//\r
// Get query section\r
//\r
- QuerySection = (DNS_QUERY_SECTION *) (QueryName + QueryNameLen);\r
- QuerySection->Type = NTOHS (QuerySection->Type);\r
+ QuerySection = (DNS_QUERY_SECTION *)(QueryName + QueryNameLen);\r
+ QuerySection->Type = NTOHS (QuerySection->Type);\r
QuerySection->Class = NTOHS (QuerySection->Class);\r
\r
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
QuerySection->Type,\r
QuerySection->Class,\r
&Item\r
- )) {\r
+ ))\r
+ {\r
*Completed = FALSE;\r
- Status = EFI_ABORTED;\r
+ Status = EFI_ABORTED;\r
goto ON_EXIT;\r
}\r
+\r
ASSERT (Item != NULL);\r
- Dns4TokenEntry = (DNS4_TOKEN_ENTRY *) (Item->Key);\r
+ Dns4TokenEntry = (DNS4_TOKEN_ENTRY *)(Item->Key);\r
} else {\r
if (!IsValidDnsResponse (\r
&Instance->Dns6TxTokens,\r
QuerySection->Type,\r
QuerySection->Class,\r
&Item\r
- )) {\r
+ ))\r
+ {\r
*Completed = FALSE;\r
- Status = EFI_ABORTED;\r
+ Status = EFI_ABORTED;\r
goto ON_EXIT;\r
}\r
+\r
ASSERT (Item != NULL);\r
- Dns6TokenEntry = (DNS6_TOKEN_ENTRY *) (Item->Key);\r
+ Dns6TokenEntry = (DNS6_TOKEN_ENTRY *)(Item->Key);\r
}\r
\r
//\r
// Continue Check Some Errors.\r
//\r
- if (DnsHeader->Flags.Bits.RCode != DNS_FLAGS_RCODE_NO_ERROR || DnsHeader->AnswersNum < 1 || \\r
- DnsHeader->Flags.Bits.QR != DNS_FLAGS_QR_RESPONSE) {\r
+ if ((DnsHeader->Flags.Bits.RCode != DNS_FLAGS_RCODE_NO_ERROR) || (DnsHeader->AnswersNum < 1) || \\r
+ (DnsHeader->Flags.Bits.QR != DNS_FLAGS_QR_RESPONSE))\r
+ {\r
//\r
// The domain name referenced in the query does not exist.\r
//\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_EXIT;\r
}\r
+\r
Dns4TokenEntry->Token->RspData.GLookupData->RRList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (DNS_RESOURCE_RECORD));\r
if (Dns4TokenEntry->Token->RspData.GLookupData->RRList == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_EXIT;\r
}\r
+\r
Dns4TokenEntry->Token->RspData.H2AData->IpList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (EFI_IPv4_ADDRESS));\r
if (Dns4TokenEntry->Token->RspData.H2AData->IpList == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_EXIT;\r
}\r
+\r
Dns6TokenEntry->Token->RspData.GLookupData->RRList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (DNS_RESOURCE_RECORD));\r
if (Dns6TokenEntry->Token->RspData.GLookupData->RRList == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_EXIT;\r
}\r
+\r
Dns6TokenEntry->Token->RspData.H2AData->IpList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (EFI_IPv6_ADDRESS));\r
if (Dns6TokenEntry->Token->RspData.H2AData->IpList == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
//\r
// Get Answer name\r
//\r
- AnswerName = (CHAR8 *) QuerySection + sizeof (*QuerySection);\r
+ AnswerName = (CHAR8 *)QuerySection + sizeof (*QuerySection);\r
\r
//\r
// Processing AnswerSection.\r
//\r
while (AnswerSectionNum < DnsHeader->AnswersNum) {\r
//\r
- // Check whether the remaining packet length is avaiable or not.\r
+ // Check whether the remaining packet length is available or not.\r
//\r
if (RemainingLength <= sizeof (UINT16) + sizeof (DNS_ANSWER_SECTION)) {\r
*Completed = FALSE;\r
- Status = EFI_ABORTED;\r
+ Status = EFI_ABORTED;\r
goto ON_EXIT;\r
} else {\r
RemainingLength -= (sizeof (UINT16) + sizeof (DNS_ANSWER_SECTION));\r
//\r
// Answer name should be PTR, else EFI_UNSUPPORTED returned.\r
//\r
- if ((*(UINT8 *) AnswerName & 0xC0) != 0xC0) {\r
+ if ((*(UINT8 *)AnswerName & 0xC0) != 0xC0) {\r
Status = EFI_UNSUPPORTED;\r
goto ON_EXIT;\r
}\r
//\r
// Get Answer section.\r
//\r
- AnswerSection = (DNS_ANSWER_SECTION *) (AnswerName + sizeof (UINT16));\r
- AnswerSection->Type = NTOHS (AnswerSection->Type);\r
- AnswerSection->Class = NTOHS (AnswerSection->Class);\r
- AnswerSection->Ttl = NTOHL (AnswerSection->Ttl);\r
+ AnswerSection = (DNS_ANSWER_SECTION *)(AnswerName + sizeof (UINT16));\r
+ AnswerSection->Type = NTOHS (AnswerSection->Type);\r
+ AnswerSection->Class = NTOHS (AnswerSection->Class);\r
+ AnswerSection->Ttl = NTOHL (AnswerSection->Ttl);\r
AnswerSection->DataLength = NTOHS (AnswerSection->DataLength);\r
\r
//\r
- // Check whether the remaining packet length is avaiable or not.\r
+ // Check whether the remaining packet length is available or not.\r
//\r
if (RemainingLength < AnswerSection->DataLength) {\r
*Completed = FALSE;\r
- Status = EFI_ABORTED;\r
+ Status = EFI_ABORTED;\r
goto ON_EXIT;\r
} else {\r
RemainingLength -= AnswerSection->DataLength;\r
//\r
// Check whether it's the GeneralLookUp querying.\r
//\r
- if (Instance->Service->IpVersion == IP_VERSION_4 && Dns4TokenEntry->GeneralLookUp) {\r
- Dns4RR = Dns4TokenEntry->Token->RspData.GLookupData->RRList;\r
- AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection);\r
+ if ((Instance->Service->IpVersion == IP_VERSION_4) && Dns4TokenEntry->GeneralLookUp) {\r
+ Dns4RR = Dns4TokenEntry->Token->RspData.GLookupData->RRList;\r
+ AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection);\r
\r
//\r
// Fill the ResourceRecord.\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_EXIT;\r
}\r
+\r
CopyMem (Dns4RR[RRCount].QName, QueryName, AsciiStrLen (QueryName));\r
- Dns4RR[RRCount].QType = AnswerSection->Type;\r
- Dns4RR[RRCount].QClass = AnswerSection->Class;\r
- Dns4RR[RRCount].TTL = AnswerSection->Ttl;\r
+ Dns4RR[RRCount].QType = AnswerSection->Type;\r
+ Dns4RR[RRCount].QClass = AnswerSection->Class;\r
+ Dns4RR[RRCount].TTL = AnswerSection->Ttl;\r
Dns4RR[RRCount].DataLength = AnswerSection->DataLength;\r
- Dns4RR[RRCount].RData = AllocateZeroPool (Dns4RR[RRCount].DataLength);\r
+ Dns4RR[RRCount].RData = AllocateZeroPool (Dns4RR[RRCount].DataLength);\r
if (Dns4RR[RRCount].RData == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_EXIT;\r
}\r
+\r
CopyMem (Dns4RR[RRCount].RData, AnswerData, Dns4RR[RRCount].DataLength);\r
\r
- RRCount ++;\r
+ RRCount++;\r
Status = EFI_SUCCESS;\r
- } else if (Instance->Service->IpVersion == IP_VERSION_6 && Dns6TokenEntry->GeneralLookUp) {\r
- Dns6RR = Dns6TokenEntry->Token->RspData.GLookupData->RRList;\r
- AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection);\r
+ } else if ((Instance->Service->IpVersion == IP_VERSION_6) && Dns6TokenEntry->GeneralLookUp) {\r
+ Dns6RR = Dns6TokenEntry->Token->RspData.GLookupData->RRList;\r
+ AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection);\r
\r
//\r
// Fill the ResourceRecord.\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_EXIT;\r
}\r
+\r
CopyMem (Dns6RR[RRCount].QName, QueryName, AsciiStrLen (QueryName));\r
- Dns6RR[RRCount].QType = AnswerSection->Type;\r
- Dns6RR[RRCount].QClass = AnswerSection->Class;\r
- Dns6RR[RRCount].TTL = AnswerSection->Ttl;\r
+ Dns6RR[RRCount].QType = AnswerSection->Type;\r
+ Dns6RR[RRCount].QClass = AnswerSection->Class;\r
+ Dns6RR[RRCount].TTL = AnswerSection->Ttl;\r
Dns6RR[RRCount].DataLength = AnswerSection->DataLength;\r
- Dns6RR[RRCount].RData = AllocateZeroPool (Dns6RR[RRCount].DataLength);\r
+ Dns6RR[RRCount].RData = AllocateZeroPool (Dns6RR[RRCount].DataLength);\r
if (Dns6RR[RRCount].RData == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_EXIT;\r
}\r
+\r
CopyMem (Dns6RR[RRCount].RData, AnswerData, Dns6RR[RRCount].DataLength);\r
\r
- RRCount ++;\r
+ RRCount++;\r
Status = EFI_SUCCESS;\r
} else {\r
//\r
// Check the Query type, parse the response packet.\r
//\r
switch (AnswerSection->Type) {\r
- case DNS_TYPE_A:\r
- //\r
- // This is address entry, get Data.\r
- //\r
- ASSERT (Dns4TokenEntry != NULL);\r
+ case DNS_TYPE_A:\r
+ //\r
+ // This is address entry, get Data.\r
+ //\r
+ ASSERT (Dns4TokenEntry != NULL);\r
\r
- if (AnswerSection->DataLength != 4) {\r
- Status = EFI_ABORTED;\r
- goto ON_EXIT;\r
- }\r
+ if (AnswerSection->DataLength != 4) {\r
+ Status = EFI_ABORTED;\r
+ goto ON_EXIT;\r
+ }\r
\r
- HostAddr4 = Dns4TokenEntry->Token->RspData.H2AData->IpList;\r
- AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection);\r
- CopyMem (&HostAddr4[IpCount], AnswerData, sizeof (EFI_IPv4_ADDRESS));\r
+ HostAddr4 = Dns4TokenEntry->Token->RspData.H2AData->IpList;\r
+ AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection);\r
+ CopyMem (&HostAddr4[IpCount], AnswerData, sizeof (EFI_IPv4_ADDRESS));\r
\r
- //\r
- // Allocate new CacheEntry pool to update DNS cache dynamically.\r
- //\r
- Dns4CacheEntry = AllocateZeroPool (sizeof (EFI_DNS4_CACHE_ENTRY));\r
- if (Dns4CacheEntry == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto ON_EXIT;\r
- }\r
- Dns4CacheEntry->HostName = AllocateZeroPool (2 * (StrLen(Dns4TokenEntry->QueryHostName) + 1));\r
- if (Dns4CacheEntry->HostName == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto ON_EXIT;\r
- }\r
- CopyMem (Dns4CacheEntry->HostName, Dns4TokenEntry->QueryHostName, 2 * (StrLen(Dns4TokenEntry->QueryHostName) + 1));\r
- Dns4CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv4_ADDRESS));\r
- if (Dns4CacheEntry->IpAddress == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto ON_EXIT;\r
- }\r
- CopyMem (Dns4CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv4_ADDRESS));\r
+ //\r
+ // Allocate new CacheEntry pool to update DNS cache dynamically.\r
+ //\r
+ Dns4CacheEntry = AllocateZeroPool (sizeof (EFI_DNS4_CACHE_ENTRY));\r
+ if (Dns4CacheEntry == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ON_EXIT;\r
+ }\r
\r
- if (CNameTtl != 0 && AnswerSection->Ttl != 0) {\r
- Dns4CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl);\r
- } else {\r
- Dns4CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl);\r
- }\r
+ Dns4CacheEntry->HostName = AllocateZeroPool (2 * (StrLen (Dns4TokenEntry->QueryHostName) + 1));\r
+ if (Dns4CacheEntry->HostName == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ON_EXIT;\r
+ }\r
\r
- UpdateDns4Cache (&mDriverData->Dns4CacheList, FALSE, TRUE, *Dns4CacheEntry);\r
+ CopyMem (Dns4CacheEntry->HostName, Dns4TokenEntry->QueryHostName, 2 * (StrLen (Dns4TokenEntry->QueryHostName) + 1));\r
+ Dns4CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv4_ADDRESS));\r
+ if (Dns4CacheEntry->IpAddress == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ON_EXIT;\r
+ }\r
\r
- //\r
- // Free allocated CacheEntry pool.\r
- //\r
- FreePool (Dns4CacheEntry->HostName);\r
- Dns4CacheEntry->HostName = NULL;\r
+ CopyMem (Dns4CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv4_ADDRESS));\r
\r
- FreePool (Dns4CacheEntry->IpAddress);\r
- Dns4CacheEntry->IpAddress = NULL;\r
+ if ((CNameTtl != 0) && (AnswerSection->Ttl != 0)) {\r
+ Dns4CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl);\r
+ } else {\r
+ Dns4CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl);\r
+ }\r
\r
- FreePool (Dns4CacheEntry);\r
- Dns4CacheEntry = NULL;\r
+ UpdateDns4Cache (&mDriverData->Dns4CacheList, FALSE, TRUE, *Dns4CacheEntry);\r
\r
- IpCount ++;\r
- Status = EFI_SUCCESS;\r
- break;\r
- case DNS_TYPE_AAAA:\r
- //\r
- // This is address entry, get Data.\r
- //\r
- ASSERT (Dns6TokenEntry != NULL);\r
+ //\r
+ // Free allocated CacheEntry pool.\r
+ //\r
+ FreePool (Dns4CacheEntry->HostName);\r
+ Dns4CacheEntry->HostName = NULL;\r
\r
- if (AnswerSection->DataLength != 16) {\r
- Status = EFI_ABORTED;\r
- goto ON_EXIT;\r
- }\r
+ FreePool (Dns4CacheEntry->IpAddress);\r
+ Dns4CacheEntry->IpAddress = NULL;\r
\r
- HostAddr6 = Dns6TokenEntry->Token->RspData.H2AData->IpList;\r
- AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection);\r
- CopyMem (&HostAddr6[IpCount], AnswerData, sizeof (EFI_IPv6_ADDRESS));\r
+ FreePool (Dns4CacheEntry);\r
+ Dns4CacheEntry = NULL;\r
\r
- //\r
- // Allocate new CacheEntry pool to update DNS cache dynamically.\r
- //\r
- Dns6CacheEntry = AllocateZeroPool (sizeof (EFI_DNS6_CACHE_ENTRY));\r
- if (Dns6CacheEntry == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto ON_EXIT;\r
- }\r
- Dns6CacheEntry->HostName = AllocateZeroPool (2 * (StrLen(Dns6TokenEntry->QueryHostName) + 1));\r
- if (Dns6CacheEntry->HostName == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto ON_EXIT;\r
- }\r
- CopyMem (Dns6CacheEntry->HostName, Dns6TokenEntry->QueryHostName, 2 * (StrLen(Dns6TokenEntry->QueryHostName) + 1));\r
- Dns6CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv6_ADDRESS));\r
- if (Dns6CacheEntry->IpAddress == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto ON_EXIT;\r
- }\r
- CopyMem (Dns6CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv6_ADDRESS));\r
+ IpCount++;\r
+ Status = EFI_SUCCESS;\r
+ break;\r
+ case DNS_TYPE_AAAA:\r
+ //\r
+ // This is address entry, get Data.\r
+ //\r
+ ASSERT (Dns6TokenEntry != NULL);\r
\r
- if (CNameTtl != 0 && AnswerSection->Ttl != 0) {\r
- Dns6CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl);\r
- } else {\r
- Dns6CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl);\r
- }\r
+ if (AnswerSection->DataLength != 16) {\r
+ Status = EFI_ABORTED;\r
+ goto ON_EXIT;\r
+ }\r
\r
- UpdateDns6Cache (&mDriverData->Dns6CacheList, FALSE, TRUE, *Dns6CacheEntry);\r
+ HostAddr6 = Dns6TokenEntry->Token->RspData.H2AData->IpList;\r
+ AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection);\r
+ CopyMem (&HostAddr6[IpCount], AnswerData, sizeof (EFI_IPv6_ADDRESS));\r
\r
- //\r
- // Free allocated CacheEntry pool.\r
- //\r
- FreePool (Dns6CacheEntry->HostName);\r
- Dns6CacheEntry->HostName = NULL;\r
+ //\r
+ // Allocate new CacheEntry pool to update DNS cache dynamically.\r
+ //\r
+ Dns6CacheEntry = AllocateZeroPool (sizeof (EFI_DNS6_CACHE_ENTRY));\r
+ if (Dns6CacheEntry == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ON_EXIT;\r
+ }\r
\r
- FreePool (Dns6CacheEntry->IpAddress);\r
- Dns6CacheEntry->IpAddress = NULL;\r
+ Dns6CacheEntry->HostName = AllocateZeroPool (2 * (StrLen (Dns6TokenEntry->QueryHostName) + 1));\r
+ if (Dns6CacheEntry->HostName == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ON_EXIT;\r
+ }\r
\r
- FreePool (Dns6CacheEntry);\r
- Dns6CacheEntry = NULL;\r
+ CopyMem (Dns6CacheEntry->HostName, Dns6TokenEntry->QueryHostName, 2 * (StrLen (Dns6TokenEntry->QueryHostName) + 1));\r
+ Dns6CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv6_ADDRESS));\r
+ if (Dns6CacheEntry->IpAddress == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ON_EXIT;\r
+ }\r
\r
- IpCount ++;\r
- Status = EFI_SUCCESS;\r
- break;\r
- case DNS_TYPE_CNAME:\r
- //\r
- // According RFC 1034 - 3.6.2, if the query name is an alias, the name server will include the CNAME\r
- // record in the response and restart the query at the domain name specified in the data field of the\r
- // CNAME record. So, just record the TTL value of the CNAME, then skip to parse the next record.\r
- //\r
- CNameTtl = AnswerSection->Ttl;\r
- break;\r
- default:\r
- Status = EFI_UNSUPPORTED;\r
- goto ON_EXIT;\r
+ CopyMem (Dns6CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv6_ADDRESS));\r
+\r
+ if ((CNameTtl != 0) && (AnswerSection->Ttl != 0)) {\r
+ Dns6CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl);\r
+ } else {\r
+ Dns6CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl);\r
+ }\r
+\r
+ UpdateDns6Cache (&mDriverData->Dns6CacheList, FALSE, TRUE, *Dns6CacheEntry);\r
+\r
+ //\r
+ // Free allocated CacheEntry pool.\r
+ //\r
+ FreePool (Dns6CacheEntry->HostName);\r
+ Dns6CacheEntry->HostName = NULL;\r
+\r
+ FreePool (Dns6CacheEntry->IpAddress);\r
+ Dns6CacheEntry->IpAddress = NULL;\r
+\r
+ FreePool (Dns6CacheEntry);\r
+ Dns6CacheEntry = NULL;\r
+\r
+ IpCount++;\r
+ Status = EFI_SUCCESS;\r
+ break;\r
+ case DNS_TYPE_CNAME:\r
+ //\r
+ // According RFC 1034 - 3.6.2, if the query name is an alias, the name server will include the CNAME\r
+ // record in the response and restart the query at the domain name specified in the data field of the\r
+ // CNAME record. So, just record the TTL value of the CNAME, then skip to parse the next record.\r
+ //\r
+ CNameTtl = AnswerSection->Ttl;\r
+ break;\r
+ default:\r
+ Status = EFI_UNSUPPORTED;\r
+ goto ON_EXIT;\r
}\r
}\r
\r
//\r
// Find next one\r
//\r
- AnswerName = (CHAR8 *) AnswerSection + sizeof (*AnswerSection) + AnswerSection->DataLength;\r
- AnswerSectionNum ++;\r
+ AnswerName = (CHAR8 *)AnswerSection + sizeof (*AnswerSection) + AnswerSection->DataLength;\r
+ AnswerSectionNum++;\r
}\r
\r
if (Instance->Service->IpVersion == IP_VERSION_4) {\r
//\r
// Parsing is complete, free the sending packet and signal Event here.\r
//\r
- if (Item != NULL && Item->Value != NULL) {\r
- NetbufFree ((NET_BUF *) (Item->Value));\r
+ if ((Item != NULL) && (Item->Value != NULL)) {\r
+ NetbufFree ((NET_BUF *)(Item->Value));\r
}\r
\r
if (Instance->Service->IpVersion == IP_VERSION_4) {\r
if (Dns4TokenEntry->Token->RspData.GLookupData != NULL) {\r
if (Dns4TokenEntry->Token->RspData.GLookupData->RRList != NULL) {\r
while (RRCount != 0) {\r
- RRCount --;\r
+ RRCount--;\r
if (Dns4TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName != NULL) {\r
FreePool (Dns4TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName);\r
}\r
FreePool (Dns4TokenEntry->Token->RspData.GLookupData);\r
}\r
} else {\r
- if (QuerySection->Type == DNS_TYPE_A && Dns4TokenEntry->Token->RspData.H2AData != NULL) {\r
+ if ((QuerySection->Type == DNS_TYPE_A) && (Dns4TokenEntry->Token->RspData.H2AData != NULL)) {\r
if (Dns4TokenEntry->Token->RspData.H2AData->IpList != NULL) {\r
FreePool (Dns4TokenEntry->Token->RspData.H2AData->IpList);\r
}\r
\r
FreePool (Dns4TokenEntry->Token->RspData.H2AData);\r
+ Dns4TokenEntry->Token->RspData.H2AData = NULL;\r
}\r
}\r
}\r
if (Dns6TokenEntry->Token->RspData.GLookupData != NULL) {\r
if (Dns6TokenEntry->Token->RspData.GLookupData->RRList != NULL) {\r
while (RRCount != 0) {\r
- RRCount --;\r
+ RRCount--;\r
if (Dns6TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName != NULL) {\r
FreePool (Dns6TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName);\r
}\r
FreePool (Dns6TokenEntry->Token->RspData.GLookupData);\r
}\r
} else {\r
- if (QuerySection->Type == DNS_TYPE_AAAA && Dns6TokenEntry->Token->RspData.H2AData != NULL) {\r
+ if ((QuerySection->Type == DNS_TYPE_AAAA) && (Dns6TokenEntry->Token->RspData.H2AData != NULL)) {\r
if (Dns6TokenEntry->Token->RspData.H2AData->IpList != NULL) {\r
FreePool (Dns6TokenEntry->Token->RspData.H2AData->IpList);\r
}\r
\r
FreePool (Dns6TokenEntry->Token->RspData.H2AData);\r
+ Dns6TokenEntry->Token->RspData.H2AData = NULL;\r
}\r
}\r
}\r
VOID\r
EFIAPI\r
DnsOnPacketReceived (\r
- NET_BUF *Packet,\r
- UDP_END_POINT *EndPoint,\r
- EFI_STATUS IoStatus,\r
- VOID *Context\r
+ NET_BUF *Packet,\r
+ UDP_END_POINT *EndPoint,\r
+ EFI_STATUS IoStatus,\r
+ VOID *Context\r
)\r
{\r
- DNS_INSTANCE *Instance;\r
+ DNS_INSTANCE *Instance;\r
\r
- UINT8 *RcvString;\r
- UINT32 Len;\r
+ UINT8 *RcvString;\r
+ UINT32 Len;\r
\r
- BOOLEAN Completed;\r
+ BOOLEAN Completed;\r
\r
- Instance = (DNS_INSTANCE *) Context;\r
+ Instance = (DNS_INSTANCE *)Context;\r
NET_CHECK_SIGNATURE (Instance, DNS_INSTANCE_SIGNATURE);\r
\r
RcvString = NULL;\r
VOID\r
EFIAPI\r
DnsOnPacketSent (\r
- NET_BUF *Packet,\r
- UDP_END_POINT *EndPoint,\r
- EFI_STATUS IoStatus,\r
- VOID *Context\r
+ NET_BUF *Packet,\r
+ UDP_END_POINT *EndPoint,\r
+ EFI_STATUS IoStatus,\r
+ VOID *Context\r
)\r
{\r
- DNS_INSTANCE *Instance;\r
- LIST_ENTRY *Entry;\r
- NET_MAP_ITEM *Item;\r
- DNS4_TOKEN_ENTRY *Dns4TokenEntry;\r
- DNS6_TOKEN_ENTRY *Dns6TokenEntry;\r
+ DNS_INSTANCE *Instance;\r
+ LIST_ENTRY *Entry;\r
+ NET_MAP_ITEM *Item;\r
+ DNS4_TOKEN_ENTRY *Dns4TokenEntry;\r
+ DNS6_TOKEN_ENTRY *Dns6TokenEntry;\r
\r
Dns4TokenEntry = NULL;\r
Dns6TokenEntry = NULL;\r
\r
- Instance = (DNS_INSTANCE *) Context;\r
+ Instance = (DNS_INSTANCE *)Context;\r
NET_CHECK_SIGNATURE (Instance, DNS_INSTANCE_SIGNATURE);\r
\r
if (Instance->Service->IpVersion == IP_VERSION_4) {\r
NET_LIST_FOR_EACH (Entry, &Instance->Dns4TxTokens.Used) {\r
Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link);\r
if (Packet == (NET_BUF *)(Item->Value)) {\r
- Dns4TokenEntry = ((DNS4_TOKEN_ENTRY *)Item->Key);\r
+ Dns4TokenEntry = ((DNS4_TOKEN_ENTRY *)Item->Key);\r
Dns4TokenEntry->PacketToLive = Dns4TokenEntry->Token->RetryInterval;\r
break;\r
}\r
NET_LIST_FOR_EACH (Entry, &Instance->Dns6TxTokens.Used) {\r
Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link);\r
if (Packet == (NET_BUF *)(Item->Value)) {\r
- Dns6TokenEntry = ((DNS6_TOKEN_ENTRY *)Item->Key);\r
+ Dns6TokenEntry = ((DNS6_TOKEN_ENTRY *)Item->Key);\r
Dns6TokenEntry->PacketToLive = Dns6TokenEntry->Token->RetryInterval;\r
break;\r
}\r
**/\r
EFI_STATUS\r
DoDnsQuery (\r
- IN DNS_INSTANCE *Instance,\r
- IN NET_BUF *Packet\r
+ IN DNS_INSTANCE *Instance,\r
+ IN NET_BUF *Packet\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// Ready to receive the DNS response.\r
**/\r
EFI_STATUS\r
ConstructDNSQuery (\r
- IN DNS_INSTANCE *Instance,\r
- IN CHAR8 *QueryName,\r
- IN UINT16 Type,\r
- IN UINT16 Class,\r
- OUT NET_BUF **Packet\r
+ IN DNS_INSTANCE *Instance,\r
+ IN CHAR8 *QueryName,\r
+ IN UINT16 Type,\r
+ IN UINT16 Class,\r
+ OUT NET_BUF **Packet\r
)\r
{\r
- NET_FRAGMENT Frag;\r
- DNS_HEADER *DnsHeader;\r
- DNS_QUERY_SECTION *DnsQuery;\r
+ NET_FRAGMENT Frag;\r
+ DNS_HEADER *DnsHeader;\r
+ DNS_QUERY_SECTION *DnsQuery;\r
\r
//\r
// Messages carried by UDP are restricted to 512 bytes (not counting the IP\r
//\r
// Fill header\r
//\r
- DnsHeader = (DNS_HEADER *) Frag.Bulk;\r
- DnsHeader->Identification = (UINT16)NET_RANDOM (NetRandomInitSeed());\r
- DnsHeader->Flags.Uint16 = 0x0000;\r
- DnsHeader->Flags.Bits.RD = 1;\r
+ DnsHeader = (DNS_HEADER *)Frag.Bulk;\r
+ DnsHeader->Identification = (UINT16)NET_RANDOM (NetRandomInitSeed ());\r
+ DnsHeader->Flags.Uint16 = 0x0000;\r
+ DnsHeader->Flags.Bits.RD = 1;\r
DnsHeader->Flags.Bits.OpCode = DNS_FLAGS_OPCODE_STANDARD;\r
- DnsHeader->Flags.Bits.QR = DNS_FLAGS_QR_QUERY;\r
- DnsHeader->QuestionsNum = 1;\r
- DnsHeader->AnswersNum = 0;\r
- DnsHeader->AuthorityNum = 0;\r
- DnsHeader->AditionalNum = 0;\r
+ DnsHeader->Flags.Bits.QR = DNS_FLAGS_QR_QUERY;\r
+ DnsHeader->QuestionsNum = 1;\r
+ DnsHeader->AnswersNum = 0;\r
+ DnsHeader->AuthorityNum = 0;\r
+ DnsHeader->AditionalNum = 0;\r
\r
DnsHeader->Identification = HTONS (DnsHeader->Identification);\r
- DnsHeader->Flags.Uint16 = HTONS (DnsHeader->Flags.Uint16);\r
- DnsHeader->QuestionsNum = HTONS (DnsHeader->QuestionsNum);\r
- DnsHeader->AnswersNum = HTONS (DnsHeader->AnswersNum);\r
- DnsHeader->AuthorityNum = HTONS (DnsHeader->AuthorityNum);\r
- DnsHeader->AditionalNum = HTONS (DnsHeader->AditionalNum);\r
+ DnsHeader->Flags.Uint16 = HTONS (DnsHeader->Flags.Uint16);\r
+ DnsHeader->QuestionsNum = HTONS (DnsHeader->QuestionsNum);\r
+ DnsHeader->AnswersNum = HTONS (DnsHeader->AnswersNum);\r
+ DnsHeader->AuthorityNum = HTONS (DnsHeader->AuthorityNum);\r
+ DnsHeader->AditionalNum = HTONS (DnsHeader->AditionalNum);\r
\r
Frag.Len = sizeof (*DnsHeader);\r
\r
// Fill Query name\r
//\r
CopyMem (Frag.Bulk + Frag.Len, QueryName, AsciiStrLen (QueryName));\r
- Frag.Len = (UINT32) (Frag.Len + AsciiStrLen (QueryName));\r
+ Frag.Len = (UINT32)(Frag.Len + AsciiStrLen (QueryName));\r
*(Frag.Bulk + Frag.Len) = 0;\r
- Frag.Len ++;\r
+ Frag.Len++;\r
\r
//\r
// Rest query section\r
//\r
- DnsQuery = (DNS_QUERY_SECTION *) (Frag.Bulk + Frag.Len);\r
+ DnsQuery = (DNS_QUERY_SECTION *)(Frag.Bulk + Frag.Len);\r
\r
- DnsQuery->Type = HTONS (Type);\r
+ DnsQuery->Type = HTONS (Type);\r
DnsQuery->Class = HTONS (Class);\r
\r
Frag.Len += sizeof (*DnsQuery);\r
//\r
// Store the UdpIo in ProtoData.\r
//\r
- *((UINTN *) &((*Packet)->ProtoData[0])) = (UINTN) (Instance->UdpIo);\r
+ *((UINTN *)&((*Packet)->ProtoData[0])) = (UINTN)(Instance->UdpIo);\r
\r
return EFI_SUCCESS;\r
}\r
**/\r
EFI_STATUS\r
DnsRetransmit (\r
- IN DNS_INSTANCE *Instance,\r
- IN NET_BUF *Packet\r
+ IN DNS_INSTANCE *Instance,\r
+ IN NET_BUF *Packet\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
- UINT8 *Buffer;\r
+ UINT8 *Buffer;\r
\r
ASSERT (Packet != NULL);\r
\r
VOID\r
EFIAPI\r
DnsOnTimerRetransmit (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- DNS_SERVICE *Service;\r
+ DNS_SERVICE *Service;\r
\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
\r
- DNS_INSTANCE *Instance;\r
- LIST_ENTRY *EntryNetMap;\r
- NET_MAP_ITEM *ItemNetMap;\r
- DNS4_TOKEN_ENTRY *Dns4TokenEntry;\r
- DNS6_TOKEN_ENTRY *Dns6TokenEntry;\r
+ DNS_INSTANCE *Instance;\r
+ LIST_ENTRY *EntryNetMap;\r
+ NET_MAP_ITEM *ItemNetMap;\r
+ DNS4_TOKEN_ENTRY *Dns4TokenEntry;\r
+ DNS6_TOKEN_ENTRY *Dns6TokenEntry;\r
\r
Dns4TokenEntry = NULL;\r
Dns6TokenEntry = NULL;\r
\r
- Service = (DNS_SERVICE *) Context;\r
-\r
+ Service = (DNS_SERVICE *)Context;\r
\r
if (Service->IpVersion == IP_VERSION_4) {\r
//\r
\r
EntryNetMap = Instance->Dns4TxTokens.Used.ForwardLink;\r
while (EntryNetMap != &Instance->Dns4TxTokens.Used) {\r
- ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link);\r
+ ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link);\r
Dns4TokenEntry = (DNS4_TOKEN_ENTRY *)(ItemNetMap->Key);\r
- if (Dns4TokenEntry->PacketToLive == 0 || (--Dns4TokenEntry->PacketToLive > 0)) {\r
+ if ((Dns4TokenEntry->PacketToLive == 0) || (--Dns4TokenEntry->PacketToLive > 0)) {\r
EntryNetMap = EntryNetMap->ForwardLink;\r
continue;\r
}\r
\r
//\r
- // Retransmit the packet if haven't reach the maxmium retry count,\r
+ // Retransmit the packet if haven't reach the maximum retry count,\r
// otherwise exit the transfer.\r
//\r
if (++Dns4TokenEntry->RetryCounting <= Dns4TokenEntry->Token->RetryCount) {\r
}\r
}\r
}\r
- }else {\r
+ } else {\r
//\r
// Iterate through all the children of the DNS service instance. Time\r
// out the packet. If maximum retries reached, clean the Token up.\r
\r
EntryNetMap = Instance->Dns6TxTokens.Used.ForwardLink;\r
while (EntryNetMap != &Instance->Dns6TxTokens.Used) {\r
- ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link);\r
- Dns6TokenEntry = (DNS6_TOKEN_ENTRY *) (ItemNetMap->Key);\r
- if (Dns6TokenEntry->PacketToLive == 0 || (--Dns6TokenEntry->PacketToLive > 0)) {\r
+ ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link);\r
+ Dns6TokenEntry = (DNS6_TOKEN_ENTRY *)(ItemNetMap->Key);\r
+ if ((Dns6TokenEntry->PacketToLive == 0) || (--Dns6TokenEntry->PacketToLive > 0)) {\r
EntryNetMap = EntryNetMap->ForwardLink;\r
continue;\r
}\r
\r
//\r
- // Retransmit the packet if haven't reach the maxmium retry count,\r
+ // Retransmit the packet if haven't reach the maximum retry count,\r
// otherwise exit the transfer.\r
//\r
if (++Dns6TokenEntry->RetryCounting <= Dns6TokenEntry->Token->RetryCount) {\r
- DnsRetransmit (Instance, (NET_BUF *) ItemNetMap->Value);\r
+ DnsRetransmit (Instance, (NET_BUF *)ItemNetMap->Value);\r
EntryNetMap = EntryNetMap->ForwardLink;\r
} else {\r
//\r
// Free the sending packet.\r
//\r
if (ItemNetMap->Value != NULL) {\r
- NetbufFree ((NET_BUF *) (ItemNetMap->Value));\r
+ NetbufFree ((NET_BUF *)(ItemNetMap->Value));\r
}\r
\r
EntryNetMap = Instance->Dns6TxTokens.Used.ForwardLink;\r
VOID\r
EFIAPI\r
DnsOnTimerUpdate (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
- DNS4_CACHE *Item4;\r
- DNS6_CACHE *Item6;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
+ DNS4_CACHE *Item4;\r
+ DNS6_CACHE *Item6;\r
\r
Item4 = NULL;\r
Item6 = NULL;\r
}\r
}\r
}\r
-\r