mirror of
https://github.com/acidanthera/audk.git
synced 2025-05-29 10:50:12 +02:00
MdeModulePkg/DxeNetLib: Add parameter check and ASSERT handling.
* Library API should check the input parameters before use, or ASSERT to tell it has to meet some requirements. But in DxeNetLib, not all functions follows this rule. * ASSERT shouldn't be used as error handling, add some handling code for errors. * Add some ASSERT commence in function notes. Cc: Fu Siyuan <siyuan.fu@intel.com> Cc: Ye Ting <ting.ye@intel.com> Cc: Jiaxin Wu <jiaxin.wu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Wang Fan <fan.wang@intel.com> Reviewed-by: Jiaxin Wu <jiaxin.wu@intel.com>
This commit is contained in:
parent
2a2f01b9a0
commit
cf4a8fa455
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Network library.
|
Network library.
|
||||||
|
|
||||||
Copyright (c) 2005 - 2017, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||||
(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
|
(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -198,6 +198,7 @@ SyslogLocateSnp (
|
|||||||
fill in the source MAC because it will try to locate a SNP each
|
fill in the source MAC because it will try to locate a SNP each
|
||||||
time it is called to avoid the problem if SNP is unloaded.
|
time it is called to avoid the problem if SNP is unloaded.
|
||||||
This code snip is copied from MNP.
|
This code snip is copied from MNP.
|
||||||
|
If Packet is NULL, then ASSERT().
|
||||||
|
|
||||||
@param[in] Packet The Syslog packet
|
@param[in] Packet The Syslog packet
|
||||||
@param[in] Length The length of the packet
|
@param[in] Length The length of the packet
|
||||||
@ -219,6 +220,8 @@ SyslogSendPacket (
|
|||||||
EFI_EVENT TimeoutEvent;
|
EFI_EVENT TimeoutEvent;
|
||||||
UINT8 *TxBuf;
|
UINT8 *TxBuf;
|
||||||
|
|
||||||
|
ASSERT (Packet != NULL);
|
||||||
|
|
||||||
Snp = SyslogLocateSnp ();
|
Snp = SyslogLocateSnp ();
|
||||||
|
|
||||||
if (Snp == NULL) {
|
if (Snp == NULL) {
|
||||||
@ -310,7 +313,7 @@ ON_EXIT:
|
|||||||
@param[in] BufLen The lenght of the Buf
|
@param[in] BufLen The lenght of the Buf
|
||||||
@param[out] Buf The buffer to put the packet data
|
@param[out] Buf The buffer to put the packet data
|
||||||
|
|
||||||
@return The length of the syslog packet built.
|
@return The length of the syslog packet built, 0 represents no packet is built.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
UINT32
|
UINT32
|
||||||
@ -324,6 +327,7 @@ SyslogBuildPacket (
|
|||||||
OUT CHAR8 *Buf
|
OUT CHAR8 *Buf
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
ETHER_HEAD *Ether;
|
ETHER_HEAD *Ether;
|
||||||
IP4_HEAD *Ip4;
|
IP4_HEAD *Ip4;
|
||||||
EFI_UDP_HEADER *Udp4;
|
EFI_UDP_HEADER *Udp4;
|
||||||
@ -379,8 +383,10 @@ SyslogBuildPacket (
|
|||||||
// Build the syslog message body with <PRI> Timestamp machine module Message
|
// Build the syslog message body with <PRI> Timestamp machine module Message
|
||||||
//
|
//
|
||||||
Pri = ((NET_SYSLOG_FACILITY & 31) << 3) | (Level & 7);
|
Pri = ((NET_SYSLOG_FACILITY & 31) << 3) | (Level & 7);
|
||||||
gRT->GetTime (&Time, NULL);
|
Status = gRT->GetTime (&Time, NULL);
|
||||||
ASSERT ((Time.Month <= 12) && (Time.Month >= 1));
|
if (EFI_ERROR (Status)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Use %a to format the ASCII strings, %s to format UNICODE strings
|
// Use %a to format the ASCII strings, %s to format UNICODE strings
|
||||||
@ -439,6 +445,8 @@ SyslogBuildPacket (
|
|||||||
NetDebugASPrint ("State transit to %a\n", Name)
|
NetDebugASPrint ("State transit to %a\n", Name)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
If Format is NULL, then ASSERT().
|
||||||
|
|
||||||
@param Format The ASCII format string.
|
@param Format The ASCII format string.
|
||||||
@param ... The variable length parameter whose format is determined
|
@param ... The variable length parameter whose format is determined
|
||||||
by the Format string.
|
by the Format string.
|
||||||
@ -457,6 +465,8 @@ NetDebugASPrint (
|
|||||||
VA_LIST Marker;
|
VA_LIST Marker;
|
||||||
CHAR8 *Buf;
|
CHAR8 *Buf;
|
||||||
|
|
||||||
|
ASSERT (Format != NULL);
|
||||||
|
|
||||||
Buf = (CHAR8 *) AllocatePool (NET_DEBUG_MSG_LEN);
|
Buf = (CHAR8 *) AllocatePool (NET_DEBUG_MSG_LEN);
|
||||||
|
|
||||||
if (Buf == NULL) {
|
if (Buf == NULL) {
|
||||||
@ -483,7 +493,8 @@ NetDebugASPrint (
|
|||||||
@param Message The user message to log.
|
@param Message The user message to log.
|
||||||
|
|
||||||
@retval EFI_INVALID_PARAMETER Any input parameter is invalid.
|
@retval EFI_INVALID_PARAMETER Any input parameter is invalid.
|
||||||
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory for the packet
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory for the packet.
|
||||||
|
@retval EFI_DEVICE_ERROR Device error occurs.
|
||||||
@retval EFI_SUCCESS The log is discard because that it is more verbose
|
@retval EFI_SUCCESS The log is discard because that it is more verbose
|
||||||
than the mNetDebugLevelMax. Or, it has been sent out.
|
than the mNetDebugLevelMax. Or, it has been sent out.
|
||||||
**/
|
**/
|
||||||
@ -504,7 +515,7 @@ NetDebugOutput (
|
|||||||
//
|
//
|
||||||
// Check whether the message should be sent out
|
// Check whether the message should be sent out
|
||||||
//
|
//
|
||||||
if (Message == NULL) {
|
if (Message == NULL || File == NULL || Module == NULL) {
|
||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -537,9 +548,13 @@ NetDebugOutput (
|
|||||||
NET_SYSLOG_PACKET_LEN,
|
NET_SYSLOG_PACKET_LEN,
|
||||||
Packet
|
Packet
|
||||||
);
|
);
|
||||||
|
if (Len == 0) {
|
||||||
|
Status = EFI_DEVICE_ERROR;
|
||||||
|
} else {
|
||||||
|
mSyslogPacketSeq++;
|
||||||
|
Status = SyslogSendPacket (Packet, Len);
|
||||||
|
}
|
||||||
|
|
||||||
mSyslogPacketSeq++;
|
|
||||||
Status = SyslogSendPacket (Packet, Len);
|
|
||||||
FreePool (Packet);
|
FreePool (Packet);
|
||||||
|
|
||||||
ON_EXIT:
|
ON_EXIT:
|
||||||
@ -675,6 +690,8 @@ NetIp4IsUnicast (
|
|||||||
/**
|
/**
|
||||||
Check whether the incoming IPv6 address is a valid unicast address.
|
Check whether the incoming IPv6 address is a valid unicast address.
|
||||||
|
|
||||||
|
ASSERT if Ip6 is NULL.
|
||||||
|
|
||||||
If the address is a multicast address has binary 0xFF at the start, it is not
|
If the address is a multicast address has binary 0xFF at the start, it is not
|
||||||
a valid unicast address. If the address is unspecified ::, it is not a valid
|
a valid unicast address. If the address is unspecified ::, it is not a valid
|
||||||
unicast address to be assigned to any node. If the address is loopback address
|
unicast address to be assigned to any node. If the address is loopback address
|
||||||
@ -695,6 +712,8 @@ NetIp6IsValidUnicast (
|
|||||||
UINT8 Byte;
|
UINT8 Byte;
|
||||||
UINT8 Index;
|
UINT8 Index;
|
||||||
|
|
||||||
|
ASSERT (Ip6 != NULL);
|
||||||
|
|
||||||
if (Ip6->Addr[0] == 0xFF) {
|
if (Ip6->Addr[0] == 0xFF) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -717,6 +736,8 @@ NetIp6IsValidUnicast (
|
|||||||
/**
|
/**
|
||||||
Check whether the incoming Ipv6 address is the unspecified address or not.
|
Check whether the incoming Ipv6 address is the unspecified address or not.
|
||||||
|
|
||||||
|
ASSERT if Ip6 is NULL.
|
||||||
|
|
||||||
@param[in] Ip6 - Ip6 address, in network order.
|
@param[in] Ip6 - Ip6 address, in network order.
|
||||||
|
|
||||||
@retval TRUE - Yes, unspecified
|
@retval TRUE - Yes, unspecified
|
||||||
@ -731,6 +752,8 @@ NetIp6IsUnspecifiedAddr (
|
|||||||
{
|
{
|
||||||
UINT8 Index;
|
UINT8 Index;
|
||||||
|
|
||||||
|
ASSERT (Ip6 != NULL);
|
||||||
|
|
||||||
for (Index = 0; Index < 16; Index++) {
|
for (Index = 0; Index < 16; Index++) {
|
||||||
if (Ip6->Addr[Index] != 0) {
|
if (Ip6->Addr[Index] != 0) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -743,6 +766,8 @@ NetIp6IsUnspecifiedAddr (
|
|||||||
/**
|
/**
|
||||||
Check whether the incoming Ipv6 address is a link-local address.
|
Check whether the incoming Ipv6 address is a link-local address.
|
||||||
|
|
||||||
|
ASSERT if Ip6 is NULL.
|
||||||
|
|
||||||
@param[in] Ip6 - Ip6 address, in network order.
|
@param[in] Ip6 - Ip6 address, in network order.
|
||||||
|
|
||||||
@retval TRUE - Yes, link-local address
|
@retval TRUE - Yes, link-local address
|
||||||
@ -779,6 +804,9 @@ NetIp6IsLinkLocalAddr (
|
|||||||
/**
|
/**
|
||||||
Check whether the Ipv6 address1 and address2 are on the connected network.
|
Check whether the Ipv6 address1 and address2 are on the connected network.
|
||||||
|
|
||||||
|
ASSERT if Ip1 or Ip2 is NULL.
|
||||||
|
ASSERT if PrefixLength exceeds IP6_PREFIX_MAX.
|
||||||
|
|
||||||
@param[in] Ip1 - Ip6 address1, in network order.
|
@param[in] Ip1 - Ip6 address1, in network order.
|
||||||
@param[in] Ip2 - Ip6 address2, in network order.
|
@param[in] Ip2 - Ip6 address2, in network order.
|
||||||
@param[in] PrefixLength - The prefix length of the checking net.
|
@param[in] PrefixLength - The prefix length of the checking net.
|
||||||
@ -815,7 +843,6 @@ NetIp6IsNetEqual (
|
|||||||
if (Bit > 0) {
|
if (Bit > 0) {
|
||||||
Mask = (UINT8) (0xFF << (8 - Bit));
|
Mask = (UINT8) (0xFF << (8 - Bit));
|
||||||
|
|
||||||
ASSERT (Byte < 16);
|
|
||||||
if ((Ip1->Addr[Byte] & Mask) != (Ip2->Addr[Byte] & Mask)) {
|
if ((Ip1->Addr[Byte] & Mask) != (Ip2->Addr[Byte] & Mask)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -828,6 +855,8 @@ NetIp6IsNetEqual (
|
|||||||
/**
|
/**
|
||||||
Switches the endianess of an IPv6 address
|
Switches the endianess of an IPv6 address
|
||||||
|
|
||||||
|
ASSERT if Ip6 is NULL.
|
||||||
|
|
||||||
This function swaps the bytes in a 128-bit IPv6 address to switch the value
|
This function swaps the bytes in a 128-bit IPv6 address to switch the value
|
||||||
from little endian to big endian or vice versa. The byte swapped value is
|
from little endian to big endian or vice versa. The byte swapped value is
|
||||||
returned.
|
returned.
|
||||||
@ -846,6 +875,8 @@ Ip6Swap128 (
|
|||||||
UINT64 High;
|
UINT64 High;
|
||||||
UINT64 Low;
|
UINT64 Low;
|
||||||
|
|
||||||
|
ASSERT (Ip6 != NULL);
|
||||||
|
|
||||||
CopyMem (&High, Ip6, sizeof (UINT64));
|
CopyMem (&High, Ip6, sizeof (UINT64));
|
||||||
CopyMem (&Low, &Ip6->Addr[8], sizeof (UINT64));
|
CopyMem (&Low, &Ip6->Addr[8], sizeof (UINT64));
|
||||||
|
|
||||||
@ -893,6 +924,8 @@ NetRandomInitSeed (
|
|||||||
/**
|
/**
|
||||||
Extract a UINT32 from a byte stream.
|
Extract a UINT32 from a byte stream.
|
||||||
|
|
||||||
|
ASSERT if Buf is NULL.
|
||||||
|
|
||||||
Copy a UINT32 from a byte stream, then converts it from Network
|
Copy a UINT32 from a byte stream, then converts it from Network
|
||||||
byte order to host byte order. Use this function to avoid alignment error.
|
byte order to host byte order. Use this function to avoid alignment error.
|
||||||
|
|
||||||
@ -909,6 +942,8 @@ NetGetUint32 (
|
|||||||
{
|
{
|
||||||
UINT32 Value;
|
UINT32 Value;
|
||||||
|
|
||||||
|
ASSERT (Buf != NULL);
|
||||||
|
|
||||||
CopyMem (&Value, Buf, sizeof (UINT32));
|
CopyMem (&Value, Buf, sizeof (UINT32));
|
||||||
return NTOHL (Value);
|
return NTOHL (Value);
|
||||||
}
|
}
|
||||||
@ -917,6 +952,8 @@ NetGetUint32 (
|
|||||||
/**
|
/**
|
||||||
Put a UINT32 to the byte stream in network byte order.
|
Put a UINT32 to the byte stream in network byte order.
|
||||||
|
|
||||||
|
ASSERT if Buf is NULL.
|
||||||
|
|
||||||
Converts a UINT32 from host byte order to network byte order. Then copy it to the
|
Converts a UINT32 from host byte order to network byte order. Then copy it to the
|
||||||
byte stream.
|
byte stream.
|
||||||
|
|
||||||
@ -931,6 +968,8 @@ NetPutUint32 (
|
|||||||
IN UINT32 Data
|
IN UINT32 Data
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
ASSERT (Buf != NULL);
|
||||||
|
|
||||||
Data = HTONL (Data);
|
Data = HTONL (Data);
|
||||||
CopyMem (Buf, &Data, sizeof (UINT32));
|
CopyMem (Buf, &Data, sizeof (UINT32));
|
||||||
}
|
}
|
||||||
@ -1029,6 +1068,8 @@ NetListRemoveTail (
|
|||||||
/**
|
/**
|
||||||
Insert a new node entry after a designated node entry of a doubly linked list.
|
Insert a new node entry after a designated node entry of a doubly linked list.
|
||||||
|
|
||||||
|
ASSERT if PrevEntry or NewEntry is NULL.
|
||||||
|
|
||||||
Inserts a new node entry donated by NewEntry after the node entry donated by PrevEntry
|
Inserts a new node entry donated by NewEntry after the node entry donated by PrevEntry
|
||||||
of the doubly linked list.
|
of the doubly linked list.
|
||||||
|
|
||||||
@ -1043,6 +1084,8 @@ NetListInsertAfter (
|
|||||||
IN OUT LIST_ENTRY *NewEntry
|
IN OUT LIST_ENTRY *NewEntry
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
ASSERT (PrevEntry != NULL && NewEntry != NULL);
|
||||||
|
|
||||||
NewEntry->BackLink = PrevEntry;
|
NewEntry->BackLink = PrevEntry;
|
||||||
NewEntry->ForwardLink = PrevEntry->ForwardLink;
|
NewEntry->ForwardLink = PrevEntry->ForwardLink;
|
||||||
PrevEntry->ForwardLink->BackLink = NewEntry;
|
PrevEntry->ForwardLink->BackLink = NewEntry;
|
||||||
@ -1053,6 +1096,8 @@ NetListInsertAfter (
|
|||||||
/**
|
/**
|
||||||
Insert a new node entry before a designated node entry of a doubly linked list.
|
Insert a new node entry before a designated node entry of a doubly linked list.
|
||||||
|
|
||||||
|
ASSERT if PostEntry or NewEntry is NULL.
|
||||||
|
|
||||||
Inserts a new node entry donated by NewEntry after the node entry donated by PostEntry
|
Inserts a new node entry donated by NewEntry after the node entry donated by PostEntry
|
||||||
of the doubly linked list.
|
of the doubly linked list.
|
||||||
|
|
||||||
@ -1067,6 +1112,8 @@ NetListInsertBefore (
|
|||||||
IN OUT LIST_ENTRY *NewEntry
|
IN OUT LIST_ENTRY *NewEntry
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
ASSERT (PostEntry != NULL && NewEntry != NULL);
|
||||||
|
|
||||||
NewEntry->ForwardLink = PostEntry;
|
NewEntry->ForwardLink = PostEntry;
|
||||||
NewEntry->BackLink = PostEntry->BackLink;
|
NewEntry->BackLink = PostEntry->BackLink;
|
||||||
PostEntry->BackLink->ForwardLink = NewEntry;
|
PostEntry->BackLink->ForwardLink = NewEntry;
|
||||||
@ -1265,7 +1312,6 @@ NetMapClean (
|
|||||||
|
|
||||||
If Map is NULL, then ASSERT().
|
If Map is NULL, then ASSERT().
|
||||||
|
|
||||||
|
|
||||||
@param[in] Map The net map to test.
|
@param[in] Map The net map to test.
|
||||||
|
|
||||||
@return TRUE if the netmap is empty, otherwise FALSE.
|
@return TRUE if the netmap is empty, otherwise FALSE.
|
||||||
@ -1285,6 +1331,8 @@ NetMapIsEmpty (
|
|||||||
/**
|
/**
|
||||||
Return the number of the <Key, Value> pairs in the netmap.
|
Return the number of the <Key, Value> pairs in the netmap.
|
||||||
|
|
||||||
|
If Map is NULL, then ASSERT().
|
||||||
|
|
||||||
@param[in] Map The netmap to get the entry number.
|
@param[in] Map The netmap to get the entry number.
|
||||||
|
|
||||||
@return The entry number in the netmap.
|
@return The entry number in the netmap.
|
||||||
@ -1296,6 +1344,7 @@ NetMapGetCount (
|
|||||||
IN NET_MAP *Map
|
IN NET_MAP *Map
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
ASSERT (Map != NULL);
|
||||||
return Map->Count;
|
return Map->Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1360,6 +1409,7 @@ NetMapAllocItem (
|
|||||||
pairs in the netmap increase by 1.
|
pairs in the netmap increase by 1.
|
||||||
|
|
||||||
If Map is NULL, then ASSERT().
|
If Map is NULL, then ASSERT().
|
||||||
|
If Key is NULL, then ASSERT().
|
||||||
|
|
||||||
@param[in, out] Map The netmap to insert into.
|
@param[in, out] Map The netmap to insert into.
|
||||||
@param[in] Key The user's key.
|
@param[in] Key The user's key.
|
||||||
@ -1379,7 +1429,7 @@ NetMapInsertHead (
|
|||||||
{
|
{
|
||||||
NET_MAP_ITEM *Item;
|
NET_MAP_ITEM *Item;
|
||||||
|
|
||||||
ASSERT (Map != NULL);
|
ASSERT (Map != NULL && Key != NULL);
|
||||||
|
|
||||||
Item = NetMapAllocItem (Map);
|
Item = NetMapAllocItem (Map);
|
||||||
|
|
||||||
@ -1404,6 +1454,7 @@ NetMapInsertHead (
|
|||||||
pairs in the netmap increase by 1.
|
pairs in the netmap increase by 1.
|
||||||
|
|
||||||
If Map is NULL, then ASSERT().
|
If Map is NULL, then ASSERT().
|
||||||
|
If Key is NULL, then ASSERT().
|
||||||
|
|
||||||
@param[in, out] Map The netmap to insert into.
|
@param[in, out] Map The netmap to insert into.
|
||||||
@param[in] Key The user's key.
|
@param[in] Key The user's key.
|
||||||
@ -1423,7 +1474,7 @@ NetMapInsertTail (
|
|||||||
{
|
{
|
||||||
NET_MAP_ITEM *Item;
|
NET_MAP_ITEM *Item;
|
||||||
|
|
||||||
ASSERT (Map != NULL);
|
ASSERT (Map != NULL && Key != NULL);
|
||||||
|
|
||||||
Item = NetMapAllocItem (Map);
|
Item = NetMapAllocItem (Map);
|
||||||
|
|
||||||
@ -1444,6 +1495,9 @@ NetMapInsertTail (
|
|||||||
/**
|
/**
|
||||||
Check whether the item is in the Map and return TRUE if it is.
|
Check whether the item is in the Map and return TRUE if it is.
|
||||||
|
|
||||||
|
If Map is NULL, then ASSERT().
|
||||||
|
If Item is NULL, then ASSERT().
|
||||||
|
|
||||||
@param[in] Map The netmap to search within.
|
@param[in] Map The netmap to search within.
|
||||||
@param[in] Item The item to search.
|
@param[in] Item The item to search.
|
||||||
|
|
||||||
@ -1458,6 +1512,8 @@ NetItemInMap (
|
|||||||
{
|
{
|
||||||
LIST_ENTRY *ListEntry;
|
LIST_ENTRY *ListEntry;
|
||||||
|
|
||||||
|
ASSERT (Map != NULL && Item != NULL);
|
||||||
|
|
||||||
NET_LIST_FOR_EACH (ListEntry, &Map->Used) {
|
NET_LIST_FOR_EACH (ListEntry, &Map->Used) {
|
||||||
if (ListEntry == &Item->Link) {
|
if (ListEntry == &Item->Link) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -1475,6 +1531,7 @@ NetItemInMap (
|
|||||||
item with the key to search. It returns the point to the item contains the Key if found.
|
item with the key to search. It returns the point to the item contains the Key if found.
|
||||||
|
|
||||||
If Map is NULL, then ASSERT().
|
If Map is NULL, then ASSERT().
|
||||||
|
If Key is NULL, then ASSERT().
|
||||||
|
|
||||||
@param[in] Map The netmap to search within.
|
@param[in] Map The netmap to search within.
|
||||||
@param[in] Key The key to search.
|
@param[in] Key The key to search.
|
||||||
@ -1492,7 +1549,7 @@ NetMapFindKey (
|
|||||||
LIST_ENTRY *Entry;
|
LIST_ENTRY *Entry;
|
||||||
NET_MAP_ITEM *Item;
|
NET_MAP_ITEM *Item;
|
||||||
|
|
||||||
ASSERT (Map != NULL);
|
ASSERT (Map != NULL && Key != NULL);
|
||||||
|
|
||||||
NET_LIST_FOR_EACH (Entry, &Map->Used) {
|
NET_LIST_FOR_EACH (Entry, &Map->Used) {
|
||||||
Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link);
|
Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link);
|
||||||
@ -2095,6 +2152,9 @@ NetLibGetVlanHandle (
|
|||||||
/**
|
/**
|
||||||
Get MAC address associated with the network service handle.
|
Get MAC address associated with the network service handle.
|
||||||
|
|
||||||
|
If MacAddress is NULL, then ASSERT().
|
||||||
|
If AddressSize is NULL, then ASSERT().
|
||||||
|
|
||||||
There should be MNP Service Binding Protocol installed on the input ServiceHandle.
|
There should be MNP Service Binding Protocol installed on the input ServiceHandle.
|
||||||
If SNP is installed on the ServiceHandle or its parent handle, MAC address will
|
If SNP is installed on the ServiceHandle or its parent handle, MAC address will
|
||||||
be retrieved from SNP. If no SNP found, try to get SNP mode data use MNP.
|
be retrieved from SNP. If no SNP found, try to get SNP mode data use MNP.
|
||||||
@ -2199,6 +2259,8 @@ NetLibGetMacAddress (
|
|||||||
Convert MAC address of the NIC associated with specified Service Binding Handle
|
Convert MAC address of the NIC associated with specified Service Binding Handle
|
||||||
to a unicode string. Callers are responsible for freeing the string storage.
|
to a unicode string. Callers are responsible for freeing the string storage.
|
||||||
|
|
||||||
|
If MacString is NULL, then ASSERT().
|
||||||
|
|
||||||
Locate simple network protocol associated with the Service Binding Handle and
|
Locate simple network protocol associated with the Service Binding Handle and
|
||||||
get the mac address from SNP. Then convert the mac address into a unicode
|
get the mac address from SNP. Then convert the mac address into a unicode
|
||||||
string. It takes 2 unicode characters to represent a 1 byte binary buffer.
|
string. It takes 2 unicode characters to represent a 1 byte binary buffer.
|
||||||
@ -2298,6 +2360,8 @@ NetLibGetMacString (
|
|||||||
/**
|
/**
|
||||||
Detect media status for specified network device.
|
Detect media status for specified network device.
|
||||||
|
|
||||||
|
If MediaPresent is NULL, then ASSERT().
|
||||||
|
|
||||||
The underlying UNDI driver may or may not support reporting media status from
|
The underlying UNDI driver may or may not support reporting media status from
|
||||||
GET_STATUS command (PXE_STATFLAGS_GET_STATUS_NO_MEDIA_SUPPORTED). This routine
|
GET_STATUS command (PXE_STATFLAGS_GET_STATUS_NO_MEDIA_SUPPORTED). This routine
|
||||||
will try to invoke Snp->GetStatus() to get the media status: if media already
|
will try to invoke Snp->GetStatus() to get the media status: if media already
|
||||||
@ -2406,6 +2470,10 @@ NetLibDetectMedia (
|
|||||||
Snp->Mode->MCastFilter
|
Snp->Mode->MCastFilter
|
||||||
);
|
);
|
||||||
ASSERT (MCastFilter != NULL);
|
ASSERT (MCastFilter != NULL);
|
||||||
|
if (MCastFilter == NULL) {
|
||||||
|
Status = EFI_OUT_OF_RESOURCES;
|
||||||
|
goto Exit;
|
||||||
|
}
|
||||||
|
|
||||||
ResetMCastFilters = FALSE;
|
ResetMCastFilters = FALSE;
|
||||||
}
|
}
|
||||||
@ -2737,6 +2805,8 @@ ON_EXIT:
|
|||||||
/**
|
/**
|
||||||
Create an IPv4 device path node.
|
Create an IPv4 device path node.
|
||||||
|
|
||||||
|
If Node is NULL, then ASSERT().
|
||||||
|
|
||||||
The header type of IPv4 device path node is MESSAGING_DEVICE_PATH.
|
The header type of IPv4 device path node is MESSAGING_DEVICE_PATH.
|
||||||
The header subtype of IPv4 device path node is MSG_IPv4_DP.
|
The header subtype of IPv4 device path node is MSG_IPv4_DP.
|
||||||
Get other info from parameters to make up the whole IPv4 device path node.
|
Get other info from parameters to make up the whole IPv4 device path node.
|
||||||
@ -2764,6 +2834,8 @@ NetLibCreateIPv4DPathNode (
|
|||||||
IN BOOLEAN UseDefaultAddress
|
IN BOOLEAN UseDefaultAddress
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
ASSERT (Node != NULL);
|
||||||
|
|
||||||
Node->Header.Type = MESSAGING_DEVICE_PATH;
|
Node->Header.Type = MESSAGING_DEVICE_PATH;
|
||||||
Node->Header.SubType = MSG_IPv4_DP;
|
Node->Header.SubType = MSG_IPv4_DP;
|
||||||
SetDevicePathNodeLength (&Node->Header, sizeof (IPv4_DEVICE_PATH));
|
SetDevicePathNodeLength (&Node->Header, sizeof (IPv4_DEVICE_PATH));
|
||||||
@ -2794,6 +2866,10 @@ NetLibCreateIPv4DPathNode (
|
|||||||
/**
|
/**
|
||||||
Create an IPv6 device path node.
|
Create an IPv6 device path node.
|
||||||
|
|
||||||
|
If Node is NULL, then ASSERT().
|
||||||
|
If LocalIp is NULL, then ASSERT().
|
||||||
|
If RemoteIp is NULL, then ASSERT().
|
||||||
|
|
||||||
The header type of IPv6 device path node is MESSAGING_DEVICE_PATH.
|
The header type of IPv6 device path node is MESSAGING_DEVICE_PATH.
|
||||||
The header subtype of IPv6 device path node is MSG_IPv6_DP.
|
The header subtype of IPv6 device path node is MSG_IPv6_DP.
|
||||||
Get other info from parameters to make up the whole IPv6 device path node.
|
Get other info from parameters to make up the whole IPv6 device path node.
|
||||||
@ -2819,6 +2895,8 @@ NetLibCreateIPv6DPathNode (
|
|||||||
IN UINT16 Protocol
|
IN UINT16 Protocol
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
ASSERT (Node != NULL && LocalIp != NULL && RemoteIp != NULL);
|
||||||
|
|
||||||
Node->Header.Type = MESSAGING_DEVICE_PATH;
|
Node->Header.Type = MESSAGING_DEVICE_PATH;
|
||||||
Node->Header.SubType = MSG_IPv6_DP;
|
Node->Header.SubType = MSG_IPv6_DP;
|
||||||
SetDevicePathNodeLength (&Node->Header, sizeof (IPv6_DEVICE_PATH));
|
SetDevicePathNodeLength (&Node->Header, sizeof (IPv6_DEVICE_PATH));
|
||||||
@ -2843,6 +2921,8 @@ NetLibCreateIPv6DPathNode (
|
|||||||
/**
|
/**
|
||||||
Find the UNDI/SNP handle from controller and protocol GUID.
|
Find the UNDI/SNP handle from controller and protocol GUID.
|
||||||
|
|
||||||
|
If ProtocolGuid is NULL, then ASSERT().
|
||||||
|
|
||||||
For example, IP will open a MNP child to transmit/receive
|
For example, IP will open a MNP child to transmit/receive
|
||||||
packets, when MNP is stopped, IP should also be stopped. IP
|
packets, when MNP is stopped, IP should also be stopped. IP
|
||||||
needs to find its own private data which is related the IP's
|
needs to find its own private data which is related the IP's
|
||||||
@ -2870,6 +2950,8 @@ NetLibGetNicHandle (
|
|||||||
UINTN OpenCount;
|
UINTN OpenCount;
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
|
|
||||||
|
ASSERT (ProtocolGuid != NULL);
|
||||||
|
|
||||||
Status = gBS->OpenProtocolInformation (
|
Status = gBS->OpenProtocolInformation (
|
||||||
Controller,
|
Controller,
|
||||||
ProtocolGuid,
|
ProtocolGuid,
|
||||||
@ -3151,6 +3233,8 @@ NetLibIp6ToStr (
|
|||||||
/**
|
/**
|
||||||
This function obtains the system guid from the smbios table.
|
This function obtains the system guid from the smbios table.
|
||||||
|
|
||||||
|
If SystemGuid is NULL, then ASSERT().
|
||||||
|
|
||||||
@param[out] SystemGuid The pointer of the returned system guid.
|
@param[out] SystemGuid The pointer of the returned system guid.
|
||||||
|
|
||||||
@retval EFI_SUCCESS Successfully obtained the system guid.
|
@retval EFI_SUCCESS Successfully obtained the system guid.
|
||||||
@ -3170,6 +3254,8 @@ NetLibGetSystemGuid (
|
|||||||
SMBIOS_STRUCTURE_POINTER SmbiosEnd;
|
SMBIOS_STRUCTURE_POINTER SmbiosEnd;
|
||||||
CHAR8 *String;
|
CHAR8 *String;
|
||||||
|
|
||||||
|
ASSERT (SystemGuid != NULL);
|
||||||
|
|
||||||
SmbiosTable = NULL;
|
SmbiosTable = NULL;
|
||||||
Status = EfiGetSystemConfigurationTable (&gEfiSmbios3TableGuid, (VOID **) &Smbios30Table);
|
Status = EfiGetSystemConfigurationTable (&gEfiSmbios3TableGuid, (VOID **) &Smbios30Table);
|
||||||
if (!(EFI_ERROR (Status) || Smbios30Table == NULL)) {
|
if (!(EFI_ERROR (Status) || Smbios30Table == NULL)) {
|
||||||
@ -3236,7 +3322,10 @@ NetLibGetSystemGuid (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Create Dns QName according the queried domain name.
|
Create Dns QName according the queried domain name.
|
||||||
|
|
||||||
|
If DomainName is NULL, then ASSERT().
|
||||||
|
|
||||||
QName is a domain name represented as a sequence of labels,
|
QName is a domain name represented as a sequence of labels,
|
||||||
where each label consists of a length octet followed by that
|
where each label consists of a length octet followed by that
|
||||||
number of octets. The QName terminates with the zero
|
number of octets. The QName terminates with the zero
|
||||||
@ -3262,6 +3351,8 @@ NetLibCreateDnsQName (
|
|||||||
UINTN Len;
|
UINTN Len;
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
|
|
||||||
|
ASSERT (DomainName != NULL);
|
||||||
|
|
||||||
QueryName = NULL;
|
QueryName = NULL;
|
||||||
QueryNameSize = 0;
|
QueryNameSize = 0;
|
||||||
Header = NULL;
|
Header = NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user