Cc: Ye Ting <ting.ye@intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com>
---
.../Library/UefiDevicePathLib/DevicePathFromText.c | 72 ++++++++++++++++++++++
.../Library/UefiDevicePathLib/DevicePathToText.c | 46 ++++++++++++++
2 files changed, 118 insertions(+)
diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
index f50c11c..60057ec 100644
--- a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
+++ b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
@@ -2723,10 +2723,81 @@ DevPathFromTextBluetoothLE (
);
return (EFI_DEVICE_PATH_PROTOCOL *) BluetoothLeDp;
}
/**
+ Converts a text device path node to DNS device path structure.
+
+ @param TextDeviceNode The input Text device path node.
+
+ @return A pointer to the newly-created DNS device path structure.
+
+**/
+EFI_DEVICE_PATH_PROTOCOL *
+DevPathFromTextDns (
+ IN CHAR16 *TextDeviceNode
+ )
+{
+ CHAR16 *DeviceNodeStr;
+ UINT32 DnsServerIpCount;
+ UINT16 DnsDeviceNodeLength;
+ DNS_DEVICE_PATH *DnsDeviceNode;
+ UINT32 DnsServerIpIndex;
+ CHAR16 *DnsServerIp;
+
+
+ //
+ // Count the DNS server address number.
+ //
+ DeviceNodeStr = TextDeviceNode;
+ DnsServerIpCount = 0;
+ while (DeviceNodeStr != NULL) {
+ GetNextParamStr (&DeviceNodeStr);
+ DnsServerIpCount ++;
+ }
+
+ //
+ // Create the DNS DeviceNode.
+ //
+ DnsDeviceNodeLength = (UINT16) (sizeof (EFI_DEVICE_PATH_PROTOCOL) + sizeof (UINT8) + DnsServerIpCount * sizeof (EFI_IP_ADDRESS));
+ DnsDeviceNode = (DNS_DEVICE_PATH *) CreateDeviceNode (
+ MESSAGING_DEVICE_PATH,
+ MSG_DNS_DP,
+ DnsDeviceNodeLength
+ );
+
+ //
+ // Confirm the DNS server address is IPv4 or IPv6 type.
+ //
+ DeviceNodeStr = TextDeviceNode;
+ while (!IS_NULL (*DeviceNodeStr)) {
+ if (*DeviceNodeStr == L'.') {
+ DnsDeviceNode->IsIPv6 = 0x00;
+ break;
+ }
+
+ if (*DeviceNodeStr == L':') {
+ DnsDeviceNode->IsIPv6 = 0x01;
+ break;
+ }
+
+ DeviceNodeStr++;
+ }
+
+ for (DnsServerIpIndex = 0; DnsServerIpIndex < DnsServerIpCount; DnsServerIpIndex++) {
+ DnsServerIp = GetNextParamStr (&TextDeviceNode);
+ if (DnsDeviceNode->IsIPv6 == 0x00) {
+ StrToIpv4Address (DnsServerIp, NULL, &(DnsDeviceNode->DnsServerIp[DnsServerIpIndex].v4), NULL);
+ } else {
+ StrToIpv6Address (DnsServerIp, NULL, &(DnsDeviceNode->DnsServerIp[DnsServerIpIndex].v6), NULL);
+ }
+ }
+
+ return (EFI_DEVICE_PATH_PROTOCOL *) DnsDeviceNode;
+}
+
+/**
Converts a text device path node to URI device path structure.
@param TextDeviceNode The input Text device path node.
@return A pointer to the newly-created URI device path structure.
@@ -3395,10 +3466,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP
{L"UsbTestAndMeasurement", DevPathFromTextUsbTestAndMeasurement },
{L"UsbWwid", DevPathFromTextUsbWwid },
{L"Unit", DevPathFromTextUnit },
{L"iSCSI", DevPathFromTextiSCSI },
{L"Vlan", DevPathFromTextVlan },
+ {L"Dns", DevPathFromTextDns },
{L"Uri", DevPathFromTextUri },
{L"Bluetooth", DevPathFromTextBluetooth },
{L"Wi-Fi", DevPathFromTextWiFi },
{L"BluetoothLE", DevPathFromTextBluetoothLE },
{L"MediaPath", DevPathFromTextMediaPath },
diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
index b8d9491..63542db 100644
--- a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
+++ b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
@@ -1695,10 +1695,55 @@ DevPathToTextBluetoothLE (
BluetoothLE->Address.Type
);
}
/**
+ Converts a DNS device path structure to its string representative.
+
+ @param Str The string representative of input device.
+ @param DevPath The input device path structure.
+ @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
+ of the display node is used, where applicable. If DisplayOnly
+ is FALSE, then the longer text representation of the display node
+ is used.
+ @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
+ representation for a device node can be used, where applicable.
+
+**/
+VOID
+DevPathToTextDns (
+ IN OUT POOL_PRINT *Str,
+ IN VOID *DevPath,
+ IN BOOLEAN DisplayOnly,
+ IN BOOLEAN AllowShortcuts
+ )
+{
+ DNS_DEVICE_PATH *DnsDevPath;
+ UINT32 DnsServerIpCount;
+ UINT32 DnsServerIpIndex;
+
+ DnsDevPath = DevPath;
+ DnsServerIpCount = (UINT32) (DevicePathNodeLength(DnsDevPath) - sizeof (EFI_DEVICE_PATH_PROTOCOL) - sizeof (DnsDevPath->IsIPv6)) / sizeof (EFI_IP_ADDRESS);
+
+ UefiDevicePathLibCatPrint (Str, L"Dns(");
+
+ for (DnsServerIpIndex = 0; DnsServerIpIndex < DnsServerIpCount; DnsServerIpIndex++) {
+ if (DnsDevPath->IsIPv6 == 0x00) {
+ CatIPv4Address (Str, &(DnsDevPath->DnsServerIp[DnsServerIpIndex].v4));
+ } else {
+ CatIPv6Address (Str, &(DnsDevPath->DnsServerIp[DnsServerIpIndex].v6));
+ }
+
+ if (DnsServerIpIndex < DnsServerIpCount - 1) {
+ UefiDevicePathLibCatPrint (Str, L",");
+ }
+ }
+
+ UefiDevicePathLibCatPrint (Str, L")");
+}
+
+/**
Converts a URI device path structure to its string representative.
@param Str The string representative of input device.
@param DevPath The input device path structure.
@param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
@@ -2223,10 +2268,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED const DEVICE_PATH_TO_TEXT_TABLE mUefiDevicePathLib
{MESSAGING_DEVICE_PATH, MSG_INFINIBAND_DP, DevPathToTextInfiniBand },
{MESSAGING_DEVICE_PATH, MSG_UART_DP, DevPathToTextUart },
{MESSAGING_DEVICE_PATH, MSG_VENDOR_DP, DevPathToTextVendor },
{MESSAGING_DEVICE_PATH, MSG_ISCSI_DP, DevPathToTextiSCSI },
{MESSAGING_DEVICE_PATH, MSG_VLAN_DP, DevPathToTextVlan },
+ {MESSAGING_DEVICE_PATH, MSG_DNS_DP, DevPathToTextDns },
{MESSAGING_DEVICE_PATH, MSG_URI_DP, DevPathToTextUri },
{MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_DP, DevPathToTextBluetooth },
{MESSAGING_DEVICE_PATH, MSG_WIFI_DP, DevPathToTextWiFi },
{MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_LE_DP, DevPathToTextBluetoothLE },
{MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP, DevPathToTextHardDrive },
--
1.9.5.msysgit.1
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Hi, Jiaxin Is an empty DNS text node a valid representation, like "Dns()"? Can below code handle such kind of input string? + DeviceNodeStr = TextDeviceNode; + DnsServerIpCount = 0; + while (DeviceNodeStr != NULL) { + GetNextParamStr (&DeviceNodeStr); + DnsServerIpCount ++; + } Best Regards, Siyuan -----Original Message----- From: Wu, Jiaxin Sent: Tuesday, July 25, 2017 8:13 PM To: edk2-devel@lists.01.org Cc: Ye, Ting <ting.ye@intel.com>; Fu, Siyuan <siyuan.fu@intel.com>; Wu, Jiaxin <jiaxin.wu@intel.com> Subject: [Patch 2/4] MdePkg/UefiDevicePathLib: Add DevPathFromTextDns and DevPathToTextDns libraries Cc: Ye Ting <ting.ye@intel.com> Cc: Fu Siyuan <siyuan.fu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com> --- .../Library/UefiDevicePathLib/DevicePathFromText.c | 72 ++++++++++++++++++++++ .../Library/UefiDevicePathLib/DevicePathToText.c | 46 ++++++++++++++ 2 files changed, 118 insertions(+) diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c index f50c11c..60057ec 100644 --- a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c @@ -2723,10 +2723,81 @@ DevPathFromTextBluetoothLE ( ); return (EFI_DEVICE_PATH_PROTOCOL *) BluetoothLeDp; } /** + Converts a text device path node to DNS device path structure. + + @param TextDeviceNode The input Text device path node. + + @return A pointer to the newly-created DNS device path structure. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +DevPathFromTextDns ( + IN CHAR16 *TextDeviceNode + ) +{ + CHAR16 *DeviceNodeStr; + UINT32 DnsServerIpCount; + UINT16 DnsDeviceNodeLength; + DNS_DEVICE_PATH *DnsDeviceNode; + UINT32 DnsServerIpIndex; + CHAR16 *DnsServerIp; + + + // + // Count the DNS server address number. + // + DeviceNodeStr = TextDeviceNode; + DnsServerIpCount = 0; + while (DeviceNodeStr != NULL) { + GetNextParamStr (&DeviceNodeStr); + DnsServerIpCount ++; + } + + // + // Create the DNS DeviceNode. + // + DnsDeviceNodeLength = (UINT16) (sizeof (EFI_DEVICE_PATH_PROTOCOL) + sizeof (UINT8) + DnsServerIpCount * sizeof (EFI_IP_ADDRESS)); + DnsDeviceNode = (DNS_DEVICE_PATH *) CreateDeviceNode ( + MESSAGING_DEVICE_PATH, + MSG_DNS_DP, + DnsDeviceNodeLength + ); + + // + // Confirm the DNS server address is IPv4 or IPv6 type. + // + DeviceNodeStr = TextDeviceNode; + while (!IS_NULL (*DeviceNodeStr)) { + if (*DeviceNodeStr == L'.') { + DnsDeviceNode->IsIPv6 = 0x00; + break; + } + + if (*DeviceNodeStr == L':') { + DnsDeviceNode->IsIPv6 = 0x01; + break; + } + + DeviceNodeStr++; + } + + for (DnsServerIpIndex = 0; DnsServerIpIndex < DnsServerIpCount; DnsServerIpIndex++) { + DnsServerIp = GetNextParamStr (&TextDeviceNode); + if (DnsDeviceNode->IsIPv6 == 0x00) { + StrToIpv4Address (DnsServerIp, NULL, &(DnsDeviceNode->DnsServerIp[DnsServerIpIndex].v4), NULL); + } else { + StrToIpv6Address (DnsServerIp, NULL, &(DnsDeviceNode->DnsServerIp[DnsServerIpIndex].v6), NULL); + } + } + + return (EFI_DEVICE_PATH_PROTOCOL *) DnsDeviceNode; +} + +/** Converts a text device path node to URI device path structure. @param TextDeviceNode The input Text device path node. @return A pointer to the newly-created URI device path structure. @@ -3395,10 +3466,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP {L"UsbTestAndMeasurement", DevPathFromTextUsbTestAndMeasurement }, {L"UsbWwid", DevPathFromTextUsbWwid }, {L"Unit", DevPathFromTextUnit }, {L"iSCSI", DevPathFromTextiSCSI }, {L"Vlan", DevPathFromTextVlan }, + {L"Dns", DevPathFromTextDns }, {L"Uri", DevPathFromTextUri }, {L"Bluetooth", DevPathFromTextBluetooth }, {L"Wi-Fi", DevPathFromTextWiFi }, {L"BluetoothLE", DevPathFromTextBluetoothLE }, {L"MediaPath", DevPathFromTextMediaPath }, diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c index b8d9491..63542db 100644 --- a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c @@ -1695,10 +1695,55 @@ DevPathToTextBluetoothLE ( BluetoothLE->Address.Type ); } /** + Converts a DNS device path structure to its string representative. + + @param Str The string representative of input device. + @param DevPath The input device path structure. + @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation + of the display node is used, where applicable. If DisplayOnly + is FALSE, then the longer text representation of the display node + is used. + @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text + representation for a device node can be used, where applicable. + +**/ +VOID +DevPathToTextDns ( + IN OUT POOL_PRINT *Str, + IN VOID *DevPath, + IN BOOLEAN DisplayOnly, + IN BOOLEAN AllowShortcuts + ) +{ + DNS_DEVICE_PATH *DnsDevPath; + UINT32 DnsServerIpCount; + UINT32 DnsServerIpIndex; + + DnsDevPath = DevPath; + DnsServerIpCount = (UINT32) (DevicePathNodeLength(DnsDevPath) - sizeof (EFI_DEVICE_PATH_PROTOCOL) - sizeof (DnsDevPath->IsIPv6)) / sizeof (EFI_IP_ADDRESS); + + UefiDevicePathLibCatPrint (Str, L"Dns("); + + for (DnsServerIpIndex = 0; DnsServerIpIndex < DnsServerIpCount; DnsServerIpIndex++) { + if (DnsDevPath->IsIPv6 == 0x00) { + CatIPv4Address (Str, &(DnsDevPath->DnsServerIp[DnsServerIpIndex].v4)); + } else { + CatIPv6Address (Str, &(DnsDevPath->DnsServerIp[DnsServerIpIndex].v6)); + } + + if (DnsServerIpIndex < DnsServerIpCount - 1) { + UefiDevicePathLibCatPrint (Str, L","); + } + } + + UefiDevicePathLibCatPrint (Str, L")"); +} + +/** Converts a URI device path structure to its string representative. @param Str The string representative of input device. @param DevPath The input device path structure. @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation @@ -2223,10 +2268,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED const DEVICE_PATH_TO_TEXT_TABLE mUefiDevicePathLib {MESSAGING_DEVICE_PATH, MSG_INFINIBAND_DP, DevPathToTextInfiniBand }, {MESSAGING_DEVICE_PATH, MSG_UART_DP, DevPathToTextUart }, {MESSAGING_DEVICE_PATH, MSG_VENDOR_DP, DevPathToTextVendor }, {MESSAGING_DEVICE_PATH, MSG_ISCSI_DP, DevPathToTextiSCSI }, {MESSAGING_DEVICE_PATH, MSG_VLAN_DP, DevPathToTextVlan }, + {MESSAGING_DEVICE_PATH, MSG_DNS_DP, DevPathToTextDns }, {MESSAGING_DEVICE_PATH, MSG_URI_DP, DevPathToTextUri }, {MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_DP, DevPathToTextBluetooth }, {MESSAGING_DEVICE_PATH, MSG_WIFI_DP, DevPathToTextWiFi }, {MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_LE_DP, DevPathToTextBluetoothLE }, {MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP, DevPathToTextHardDrive }, -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Hi Siyuan, For DevPathFromTextDns(), it's impossible to input the string with "Dns()". The input param is in pair of parentheses follow the given node name. For example, given the "Dns(192.168.10.12,192.168.10.16)" and NodeName "Dns", the param is "192.168.10.12,192.168.10.16". We can check the detailed implementation from UefiDevicePathLibConvertTextToDeviceNode() function. Thanks, Jiaxin > -----Original Message----- > From: Fu, Siyuan > Sent: Wednesday, July 26, 2017 8:43 AM > To: Wu, Jiaxin <jiaxin.wu@intel.com>; edk2-devel@lists.01.org > Cc: Ye, Ting <ting.ye@intel.com> > Subject: RE: [Patch 2/4] MdePkg/UefiDevicePathLib: Add > DevPathFromTextDns and DevPathToTextDns libraries > > Hi, Jiaxin > > Is an empty DNS text node a valid representation, like "Dns()"? > Can below code handle such kind of input string? > > + DeviceNodeStr = TextDeviceNode; > + DnsServerIpCount = 0; > + while (DeviceNodeStr != NULL) { > + GetNextParamStr (&DeviceNodeStr); > + DnsServerIpCount ++; > + } > > Best Regards, > Siyuan > > -----Original Message----- > From: Wu, Jiaxin > Sent: Tuesday, July 25, 2017 8:13 PM > To: edk2-devel@lists.01.org > Cc: Ye, Ting <ting.ye@intel.com>; Fu, Siyuan <siyuan.fu@intel.com>; Wu, > Jiaxin <jiaxin.wu@intel.com> > Subject: [Patch 2/4] MdePkg/UefiDevicePathLib: Add DevPathFromTextDns > and DevPathToTextDns libraries > > Cc: Ye Ting <ting.ye@intel.com> > Cc: Fu Siyuan <siyuan.fu@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com> > --- > .../Library/UefiDevicePathLib/DevicePathFromText.c | 72 > ++++++++++++++++++++++ > .../Library/UefiDevicePathLib/DevicePathToText.c | 46 ++++++++++++++ > 2 files changed, 118 insertions(+) > > diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > index f50c11c..60057ec 100644 > --- a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > @@ -2723,10 +2723,81 @@ DevPathFromTextBluetoothLE ( > ); > return (EFI_DEVICE_PATH_PROTOCOL *) BluetoothLeDp; > } > > /** > + Converts a text device path node to DNS device path structure. > + > + @param TextDeviceNode The input Text device path node. > + > + @return A pointer to the newly-created DNS device path structure. > + > +**/ > +EFI_DEVICE_PATH_PROTOCOL * > +DevPathFromTextDns ( > + IN CHAR16 *TextDeviceNode > + ) > +{ > + CHAR16 *DeviceNodeStr; > + UINT32 DnsServerIpCount; > + UINT16 DnsDeviceNodeLength; > + DNS_DEVICE_PATH *DnsDeviceNode; > + UINT32 DnsServerIpIndex; > + CHAR16 *DnsServerIp; > + > + > + // > + // Count the DNS server address number. > + // > + DeviceNodeStr = TextDeviceNode; > + DnsServerIpCount = 0; > + while (DeviceNodeStr != NULL) { > + GetNextParamStr (&DeviceNodeStr); > + DnsServerIpCount ++; > + } > + > + // > + // Create the DNS DeviceNode. > + // > + DnsDeviceNodeLength = (UINT16) (sizeof (EFI_DEVICE_PATH_PROTOCOL) > + sizeof (UINT8) + DnsServerIpCount * sizeof (EFI_IP_ADDRESS)); > + DnsDeviceNode = (DNS_DEVICE_PATH *) CreateDeviceNode ( > + MESSAGING_DEVICE_PATH, > + MSG_DNS_DP, > + DnsDeviceNodeLength > + ); > + > + // > + // Confirm the DNS server address is IPv4 or IPv6 type. > + // > + DeviceNodeStr = TextDeviceNode; > + while (!IS_NULL (*DeviceNodeStr)) { > + if (*DeviceNodeStr == L'.') { > + DnsDeviceNode->IsIPv6 = 0x00; > + break; > + } > + > + if (*DeviceNodeStr == L':') { > + DnsDeviceNode->IsIPv6 = 0x01; > + break; > + } > + > + DeviceNodeStr++; > + } > + > + for (DnsServerIpIndex = 0; DnsServerIpIndex < DnsServerIpCount; > DnsServerIpIndex++) { > + DnsServerIp = GetNextParamStr (&TextDeviceNode); > + if (DnsDeviceNode->IsIPv6 == 0x00) { > + StrToIpv4Address (DnsServerIp, NULL, &(DnsDeviceNode- > >DnsServerIp[DnsServerIpIndex].v4), NULL); > + } else { > + StrToIpv6Address (DnsServerIp, NULL, &(DnsDeviceNode- > >DnsServerIp[DnsServerIpIndex].v6), NULL); > + } > + } > + > + return (EFI_DEVICE_PATH_PROTOCOL *) DnsDeviceNode; > +} > + > +/** > Converts a text device path node to URI device path structure. > > @param TextDeviceNode The input Text device path node. > > @return A pointer to the newly-created URI device path structure. > @@ -3395,10 +3466,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED > DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP > {L"UsbTestAndMeasurement", > DevPathFromTextUsbTestAndMeasurement }, > {L"UsbWwid", DevPathFromTextUsbWwid }, > {L"Unit", DevPathFromTextUnit }, > {L"iSCSI", DevPathFromTextiSCSI }, > {L"Vlan", DevPathFromTextVlan }, > + {L"Dns", DevPathFromTextDns }, > {L"Uri", DevPathFromTextUri }, > {L"Bluetooth", DevPathFromTextBluetooth }, > {L"Wi-Fi", DevPathFromTextWiFi }, > {L"BluetoothLE", DevPathFromTextBluetoothLE }, > {L"MediaPath", DevPathFromTextMediaPath }, > diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > index b8d9491..63542db 100644 > --- a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > @@ -1695,10 +1695,55 @@ DevPathToTextBluetoothLE ( > BluetoothLE->Address.Type > ); > } > > /** > + Converts a DNS device path structure to its string representative. > + > + @param Str The string representative of input device. > + @param DevPath The input device path structure. > + @param DisplayOnly If DisplayOnly is TRUE, then the shorter text > representation > + of the display node is used, where applicable. If DisplayOnly > + is FALSE, then the longer text representation of the display > node > + is used. > + @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut > forms of text > + representation for a device node can be used, where > applicable. > + > +**/ > +VOID > +DevPathToTextDns ( > + IN OUT POOL_PRINT *Str, > + IN VOID *DevPath, > + IN BOOLEAN DisplayOnly, > + IN BOOLEAN AllowShortcuts > + ) > +{ > + DNS_DEVICE_PATH *DnsDevPath; > + UINT32 DnsServerIpCount; > + UINT32 DnsServerIpIndex; > + > + DnsDevPath = DevPath; > + DnsServerIpCount = (UINT32) (DevicePathNodeLength(DnsDevPath) - > sizeof (EFI_DEVICE_PATH_PROTOCOL) - sizeof (DnsDevPath->IsIPv6)) / > sizeof (EFI_IP_ADDRESS); > + > + UefiDevicePathLibCatPrint (Str, L"Dns("); > + > + for (DnsServerIpIndex = 0; DnsServerIpIndex < DnsServerIpCount; > DnsServerIpIndex++) { > + if (DnsDevPath->IsIPv6 == 0x00) { > + CatIPv4Address (Str, &(DnsDevPath- > >DnsServerIp[DnsServerIpIndex].v4)); > + } else { > + CatIPv6Address (Str, &(DnsDevPath- > >DnsServerIp[DnsServerIpIndex].v6)); > + } > + > + if (DnsServerIpIndex < DnsServerIpCount - 1) { > + UefiDevicePathLibCatPrint (Str, L","); > + } > + } > + > + UefiDevicePathLibCatPrint (Str, L")"); > +} > + > +/** > Converts a URI device path structure to its string representative. > > @param Str The string representative of input device. > @param DevPath The input device path structure. > @param DisplayOnly If DisplayOnly is TRUE, then the shorter text > representation > @@ -2223,10 +2268,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED const > DEVICE_PATH_TO_TEXT_TABLE mUefiDevicePathLib > {MESSAGING_DEVICE_PATH, MSG_INFINIBAND_DP, > DevPathToTextInfiniBand }, > {MESSAGING_DEVICE_PATH, MSG_UART_DP, > DevPathToTextUart }, > {MESSAGING_DEVICE_PATH, MSG_VENDOR_DP, > DevPathToTextVendor }, > {MESSAGING_DEVICE_PATH, MSG_ISCSI_DP, > DevPathToTextiSCSI }, > {MESSAGING_DEVICE_PATH, MSG_VLAN_DP, > DevPathToTextVlan }, > + {MESSAGING_DEVICE_PATH, MSG_DNS_DP, > DevPathToTextDns }, > {MESSAGING_DEVICE_PATH, MSG_URI_DP, > DevPathToTextUri }, > {MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_DP, > DevPathToTextBluetooth }, > {MESSAGING_DEVICE_PATH, MSG_WIFI_DP, > DevPathToTextWiFi }, > {MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_LE_DP, > DevPathToTextBluetoothLE }, > {MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP, > DevPathToTextHardDrive }, > -- > 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Jiaxin, If "Dns()" is not a valid test represent device path node, I think DevPathFromTextDns() should return an error code for this. Best Regards, Siyuan -----Original Message----- From: Wu, Jiaxin Sent: Wednesday, July 26, 2017 10:08 AM To: Fu, Siyuan <siyuan.fu@intel.com>; edk2-devel@lists.01.org Cc: Ye, Ting <ting.ye@intel.com> Subject: RE: [Patch 2/4] MdePkg/UefiDevicePathLib: Add DevPathFromTextDns and DevPathToTextDns libraries Hi Siyuan, For DevPathFromTextDns(), it's impossible to input the string with "Dns()". The input param is in pair of parentheses follow the given node name. For example, given the "Dns(192.168.10.12,192.168.10.16)" and NodeName "Dns", the param is "192.168.10.12,192.168.10.16". We can check the detailed implementation from UefiDevicePathLibConvertTextToDeviceNode() function. Thanks, Jiaxin > -----Original Message----- > From: Fu, Siyuan > Sent: Wednesday, July 26, 2017 8:43 AM > To: Wu, Jiaxin <jiaxin.wu@intel.com>; edk2-devel@lists.01.org > Cc: Ye, Ting <ting.ye@intel.com> > Subject: RE: [Patch 2/4] MdePkg/UefiDevicePathLib: Add > DevPathFromTextDns and DevPathToTextDns libraries > > Hi, Jiaxin > > Is an empty DNS text node a valid representation, like "Dns()"? > Can below code handle such kind of input string? > > + DeviceNodeStr = TextDeviceNode; > + DnsServerIpCount = 0; > + while (DeviceNodeStr != NULL) { > + GetNextParamStr (&DeviceNodeStr); > + DnsServerIpCount ++; > + } > > Best Regards, > Siyuan > > -----Original Message----- > From: Wu, Jiaxin > Sent: Tuesday, July 25, 2017 8:13 PM > To: edk2-devel@lists.01.org > Cc: Ye, Ting <ting.ye@intel.com>; Fu, Siyuan <siyuan.fu@intel.com>; Wu, > Jiaxin <jiaxin.wu@intel.com> > Subject: [Patch 2/4] MdePkg/UefiDevicePathLib: Add DevPathFromTextDns > and DevPathToTextDns libraries > > Cc: Ye Ting <ting.ye@intel.com> > Cc: Fu Siyuan <siyuan.fu@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com> > --- > .../Library/UefiDevicePathLib/DevicePathFromText.c | 72 > ++++++++++++++++++++++ > .../Library/UefiDevicePathLib/DevicePathToText.c | 46 ++++++++++++++ > 2 files changed, 118 insertions(+) > > diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > index f50c11c..60057ec 100644 > --- a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > @@ -2723,10 +2723,81 @@ DevPathFromTextBluetoothLE ( > ); > return (EFI_DEVICE_PATH_PROTOCOL *) BluetoothLeDp; > } > > /** > + Converts a text device path node to DNS device path structure. > + > + @param TextDeviceNode The input Text device path node. > + > + @return A pointer to the newly-created DNS device path structure. > + > +**/ > +EFI_DEVICE_PATH_PROTOCOL * > +DevPathFromTextDns ( > + IN CHAR16 *TextDeviceNode > + ) > +{ > + CHAR16 *DeviceNodeStr; > + UINT32 DnsServerIpCount; > + UINT16 DnsDeviceNodeLength; > + DNS_DEVICE_PATH *DnsDeviceNode; > + UINT32 DnsServerIpIndex; > + CHAR16 *DnsServerIp; > + > + > + // > + // Count the DNS server address number. > + // > + DeviceNodeStr = TextDeviceNode; > + DnsServerIpCount = 0; > + while (DeviceNodeStr != NULL) { > + GetNextParamStr (&DeviceNodeStr); > + DnsServerIpCount ++; > + } > + > + // > + // Create the DNS DeviceNode. > + // > + DnsDeviceNodeLength = (UINT16) (sizeof (EFI_DEVICE_PATH_PROTOCOL) > + sizeof (UINT8) + DnsServerIpCount * sizeof (EFI_IP_ADDRESS)); > + DnsDeviceNode = (DNS_DEVICE_PATH *) CreateDeviceNode ( > + MESSAGING_DEVICE_PATH, > + MSG_DNS_DP, > + DnsDeviceNodeLength > + ); > + > + // > + // Confirm the DNS server address is IPv4 or IPv6 type. > + // > + DeviceNodeStr = TextDeviceNode; > + while (!IS_NULL (*DeviceNodeStr)) { > + if (*DeviceNodeStr == L'.') { > + DnsDeviceNode->IsIPv6 = 0x00; > + break; > + } > + > + if (*DeviceNodeStr == L':') { > + DnsDeviceNode->IsIPv6 = 0x01; > + break; > + } > + > + DeviceNodeStr++; > + } > + > + for (DnsServerIpIndex = 0; DnsServerIpIndex < DnsServerIpCount; > DnsServerIpIndex++) { > + DnsServerIp = GetNextParamStr (&TextDeviceNode); > + if (DnsDeviceNode->IsIPv6 == 0x00) { > + StrToIpv4Address (DnsServerIp, NULL, &(DnsDeviceNode- > >DnsServerIp[DnsServerIpIndex].v4), NULL); > + } else { > + StrToIpv6Address (DnsServerIp, NULL, &(DnsDeviceNode- > >DnsServerIp[DnsServerIpIndex].v6), NULL); > + } > + } > + > + return (EFI_DEVICE_PATH_PROTOCOL *) DnsDeviceNode; > +} > + > +/** > Converts a text device path node to URI device path structure. > > @param TextDeviceNode The input Text device path node. > > @return A pointer to the newly-created URI device path structure. > @@ -3395,10 +3466,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED > DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP > {L"UsbTestAndMeasurement", > DevPathFromTextUsbTestAndMeasurement }, > {L"UsbWwid", DevPathFromTextUsbWwid }, > {L"Unit", DevPathFromTextUnit }, > {L"iSCSI", DevPathFromTextiSCSI }, > {L"Vlan", DevPathFromTextVlan }, > + {L"Dns", DevPathFromTextDns }, > {L"Uri", DevPathFromTextUri }, > {L"Bluetooth", DevPathFromTextBluetooth }, > {L"Wi-Fi", DevPathFromTextWiFi }, > {L"BluetoothLE", DevPathFromTextBluetoothLE }, > {L"MediaPath", DevPathFromTextMediaPath }, > diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > index b8d9491..63542db 100644 > --- a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > @@ -1695,10 +1695,55 @@ DevPathToTextBluetoothLE ( > BluetoothLE->Address.Type > ); > } > > /** > + Converts a DNS device path structure to its string representative. > + > + @param Str The string representative of input device. > + @param DevPath The input device path structure. > + @param DisplayOnly If DisplayOnly is TRUE, then the shorter text > representation > + of the display node is used, where applicable. If DisplayOnly > + is FALSE, then the longer text representation of the display > node > + is used. > + @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut > forms of text > + representation for a device node can be used, where > applicable. > + > +**/ > +VOID > +DevPathToTextDns ( > + IN OUT POOL_PRINT *Str, > + IN VOID *DevPath, > + IN BOOLEAN DisplayOnly, > + IN BOOLEAN AllowShortcuts > + ) > +{ > + DNS_DEVICE_PATH *DnsDevPath; > + UINT32 DnsServerIpCount; > + UINT32 DnsServerIpIndex; > + > + DnsDevPath = DevPath; > + DnsServerIpCount = (UINT32) (DevicePathNodeLength(DnsDevPath) - > sizeof (EFI_DEVICE_PATH_PROTOCOL) - sizeof (DnsDevPath->IsIPv6)) / > sizeof (EFI_IP_ADDRESS); > + > + UefiDevicePathLibCatPrint (Str, L"Dns("); > + > + for (DnsServerIpIndex = 0; DnsServerIpIndex < DnsServerIpCount; > DnsServerIpIndex++) { > + if (DnsDevPath->IsIPv6 == 0x00) { > + CatIPv4Address (Str, &(DnsDevPath- > >DnsServerIp[DnsServerIpIndex].v4)); > + } else { > + CatIPv6Address (Str, &(DnsDevPath- > >DnsServerIp[DnsServerIpIndex].v6)); > + } > + > + if (DnsServerIpIndex < DnsServerIpCount - 1) { > + UefiDevicePathLibCatPrint (Str, L","); > + } > + } > + > + UefiDevicePathLibCatPrint (Str, L")"); > +} > + > +/** > Converts a URI device path structure to its string representative. > > @param Str The string representative of input device. > @param DevPath The input device path structure. > @param DisplayOnly If DisplayOnly is TRUE, then the shorter text > representation > @@ -2223,10 +2268,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED const > DEVICE_PATH_TO_TEXT_TABLE mUefiDevicePathLib > {MESSAGING_DEVICE_PATH, MSG_INFINIBAND_DP, > DevPathToTextInfiniBand }, > {MESSAGING_DEVICE_PATH, MSG_UART_DP, > DevPathToTextUart }, > {MESSAGING_DEVICE_PATH, MSG_VENDOR_DP, > DevPathToTextVendor }, > {MESSAGING_DEVICE_PATH, MSG_ISCSI_DP, > DevPathToTextiSCSI }, > {MESSAGING_DEVICE_PATH, MSG_VLAN_DP, > DevPathToTextVlan }, > + {MESSAGING_DEVICE_PATH, MSG_DNS_DP, > DevPathToTextDns }, > {MESSAGING_DEVICE_PATH, MSG_URI_DP, > DevPathToTextUri }, > {MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_DP, > DevPathToTextBluetooth }, > {MESSAGING_DEVICE_PATH, MSG_WIFI_DP, > DevPathToTextWiFi }, > {MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_LE_DP, > DevPathToTextBluetoothLE }, > {MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP, > DevPathToTextHardDrive }, > -- > 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Siyuan, I mean the string of Dns() can't be input as param and the library is inner function of UefiDevicePathLibConvertTextToDeviceNode(). So, the error code for such string looks weird. Moreover, other libraries also don't have such check (e.g. DevPathFromTextIPv4/ DevPathFromTextVlan/...). What do you think? Thanks, Jiaxin > -----Original Message----- > From: Fu, Siyuan > Sent: Wednesday, July 26, 2017 10:13 AM > To: Wu, Jiaxin <jiaxin.wu@intel.com>; edk2-devel@lists.01.org > Cc: Ye, Ting <ting.ye@intel.com> > Subject: RE: [Patch 2/4] MdePkg/UefiDevicePathLib: Add > DevPathFromTextDns and DevPathToTextDns libraries > > Jiaxin, > > If "Dns()" is not a valid test represent device path node, I think > DevPathFromTextDns() should return an error code for this. > > Best Regards, > Siyuan > > -----Original Message----- > From: Wu, Jiaxin > Sent: Wednesday, July 26, 2017 10:08 AM > To: Fu, Siyuan <siyuan.fu@intel.com>; edk2-devel@lists.01.org > Cc: Ye, Ting <ting.ye@intel.com> > Subject: RE: [Patch 2/4] MdePkg/UefiDevicePathLib: Add > DevPathFromTextDns and DevPathToTextDns libraries > > Hi Siyuan, > > For DevPathFromTextDns(), it's impossible to input the string with "Dns()". > The input param is in pair of parentheses follow the given node name. > > For example, given the "Dns(192.168.10.12,192.168.10.16)" and NodeName > "Dns", the param is "192.168.10.12,192.168.10.16". > > We can check the detailed implementation from > UefiDevicePathLibConvertTextToDeviceNode() function. > > > Thanks, > Jiaxin > > > -----Original Message----- > > From: Fu, Siyuan > > Sent: Wednesday, July 26, 2017 8:43 AM > > To: Wu, Jiaxin <jiaxin.wu@intel.com>; edk2-devel@lists.01.org > > Cc: Ye, Ting <ting.ye@intel.com> > > Subject: RE: [Patch 2/4] MdePkg/UefiDevicePathLib: Add > > DevPathFromTextDns and DevPathToTextDns libraries > > > > Hi, Jiaxin > > > > Is an empty DNS text node a valid representation, like "Dns()"? > > Can below code handle such kind of input string? > > > > + DeviceNodeStr = TextDeviceNode; > > + DnsServerIpCount = 0; > > + while (DeviceNodeStr != NULL) { > > + GetNextParamStr (&DeviceNodeStr); > > + DnsServerIpCount ++; > > + } > > > > Best Regards, > > Siyuan > > > > -----Original Message----- > > From: Wu, Jiaxin > > Sent: Tuesday, July 25, 2017 8:13 PM > > To: edk2-devel@lists.01.org > > Cc: Ye, Ting <ting.ye@intel.com>; Fu, Siyuan <siyuan.fu@intel.com>; Wu, > > Jiaxin <jiaxin.wu@intel.com> > > Subject: [Patch 2/4] MdePkg/UefiDevicePathLib: Add > DevPathFromTextDns > > and DevPathToTextDns libraries > > > > Cc: Ye Ting <ting.ye@intel.com> > > Cc: Fu Siyuan <siyuan.fu@intel.com> > > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com> > > --- > > .../Library/UefiDevicePathLib/DevicePathFromText.c | 72 > > ++++++++++++++++++++++ > > .../Library/UefiDevicePathLib/DevicePathToText.c | 46 ++++++++++++++ > > 2 files changed, 118 insertions(+) > > > > diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > > b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > > index f50c11c..60057ec 100644 > > --- a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > > +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c > > @@ -2723,10 +2723,81 @@ DevPathFromTextBluetoothLE ( > > ); > > return (EFI_DEVICE_PATH_PROTOCOL *) BluetoothLeDp; > > } > > > > /** > > + Converts a text device path node to DNS device path structure. > > + > > + @param TextDeviceNode The input Text device path node. > > + > > + @return A pointer to the newly-created DNS device path structure. > > + > > +**/ > > +EFI_DEVICE_PATH_PROTOCOL * > > +DevPathFromTextDns ( > > + IN CHAR16 *TextDeviceNode > > + ) > > +{ > > + CHAR16 *DeviceNodeStr; > > + UINT32 DnsServerIpCount; > > + UINT16 DnsDeviceNodeLength; > > + DNS_DEVICE_PATH *DnsDeviceNode; > > + UINT32 DnsServerIpIndex; > > + CHAR16 *DnsServerIp; > > + > > + > > + // > > + // Count the DNS server address number. > > + // > > + DeviceNodeStr = TextDeviceNode; > > + DnsServerIpCount = 0; > > + while (DeviceNodeStr != NULL) { > > + GetNextParamStr (&DeviceNodeStr); > > + DnsServerIpCount ++; > > + } > > + > > + // > > + // Create the DNS DeviceNode. > > + // > > + DnsDeviceNodeLength = (UINT16) (sizeof > (EFI_DEVICE_PATH_PROTOCOL) > > + sizeof (UINT8) + DnsServerIpCount * sizeof (EFI_IP_ADDRESS)); > > + DnsDeviceNode = (DNS_DEVICE_PATH *) CreateDeviceNode ( > > + MESSAGING_DEVICE_PATH, > > + MSG_DNS_DP, > > + DnsDeviceNodeLength > > + ); > > + > > + // > > + // Confirm the DNS server address is IPv4 or IPv6 type. > > + // > > + DeviceNodeStr = TextDeviceNode; > > + while (!IS_NULL (*DeviceNodeStr)) { > > + if (*DeviceNodeStr == L'.') { > > + DnsDeviceNode->IsIPv6 = 0x00; > > + break; > > + } > > + > > + if (*DeviceNodeStr == L':') { > > + DnsDeviceNode->IsIPv6 = 0x01; > > + break; > > + } > > + > > + DeviceNodeStr++; > > + } > > + > > + for (DnsServerIpIndex = 0; DnsServerIpIndex < DnsServerIpCount; > > DnsServerIpIndex++) { > > + DnsServerIp = GetNextParamStr (&TextDeviceNode); > > + if (DnsDeviceNode->IsIPv6 == 0x00) { > > + StrToIpv4Address (DnsServerIp, NULL, &(DnsDeviceNode- > > >DnsServerIp[DnsServerIpIndex].v4), NULL); > > + } else { > > + StrToIpv6Address (DnsServerIp, NULL, &(DnsDeviceNode- > > >DnsServerIp[DnsServerIpIndex].v6), NULL); > > + } > > + } > > + > > + return (EFI_DEVICE_PATH_PROTOCOL *) DnsDeviceNode; > > +} > > + > > +/** > > Converts a text device path node to URI device path structure. > > > > @param TextDeviceNode The input Text device path node. > > > > @return A pointer to the newly-created URI device path structure. > > @@ -3395,10 +3466,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED > > DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP > > {L"UsbTestAndMeasurement", > > DevPathFromTextUsbTestAndMeasurement }, > > {L"UsbWwid", DevPathFromTextUsbWwid }, > > {L"Unit", DevPathFromTextUnit }, > > {L"iSCSI", DevPathFromTextiSCSI }, > > {L"Vlan", DevPathFromTextVlan }, > > + {L"Dns", DevPathFromTextDns }, > > {L"Uri", DevPathFromTextUri }, > > {L"Bluetooth", DevPathFromTextBluetooth }, > > {L"Wi-Fi", DevPathFromTextWiFi }, > > {L"BluetoothLE", DevPathFromTextBluetoothLE }, > > {L"MediaPath", DevPathFromTextMediaPath }, > > diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > > b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > > index b8d9491..63542db 100644 > > --- a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > > +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c > > @@ -1695,10 +1695,55 @@ DevPathToTextBluetoothLE ( > > BluetoothLE->Address.Type > > ); > > } > > > > /** > > + Converts a DNS device path structure to its string representative. > > + > > + @param Str The string representative of input device. > > + @param DevPath The input device path structure. > > + @param DisplayOnly If DisplayOnly is TRUE, then the shorter text > > representation > > + of the display node is used, where applicable. If DisplayOnly > > + is FALSE, then the longer text representation of the display > > node > > + is used. > > + @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut > > forms of text > > + representation for a device node can be used, where > > applicable. > > + > > +**/ > > +VOID > > +DevPathToTextDns ( > > + IN OUT POOL_PRINT *Str, > > + IN VOID *DevPath, > > + IN BOOLEAN DisplayOnly, > > + IN BOOLEAN AllowShortcuts > > + ) > > +{ > > + DNS_DEVICE_PATH *DnsDevPath; > > + UINT32 DnsServerIpCount; > > + UINT32 DnsServerIpIndex; > > + > > + DnsDevPath = DevPath; > > + DnsServerIpCount = (UINT32) (DevicePathNodeLength(DnsDevPath) - > > sizeof (EFI_DEVICE_PATH_PROTOCOL) - sizeof (DnsDevPath->IsIPv6)) / > > sizeof (EFI_IP_ADDRESS); > > + > > + UefiDevicePathLibCatPrint (Str, L"Dns("); > > + > > + for (DnsServerIpIndex = 0; DnsServerIpIndex < DnsServerIpCount; > > DnsServerIpIndex++) { > > + if (DnsDevPath->IsIPv6 == 0x00) { > > + CatIPv4Address (Str, &(DnsDevPath- > > >DnsServerIp[DnsServerIpIndex].v4)); > > + } else { > > + CatIPv6Address (Str, &(DnsDevPath- > > >DnsServerIp[DnsServerIpIndex].v6)); > > + } > > + > > + if (DnsServerIpIndex < DnsServerIpCount - 1) { > > + UefiDevicePathLibCatPrint (Str, L","); > > + } > > + } > > + > > + UefiDevicePathLibCatPrint (Str, L")"); > > +} > > + > > +/** > > Converts a URI device path structure to its string representative. > > > > @param Str The string representative of input device. > > @param DevPath The input device path structure. > > @param DisplayOnly If DisplayOnly is TRUE, then the shorter text > > representation > > @@ -2223,10 +2268,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED const > > DEVICE_PATH_TO_TEXT_TABLE mUefiDevicePathLib > > {MESSAGING_DEVICE_PATH, MSG_INFINIBAND_DP, > > DevPathToTextInfiniBand }, > > {MESSAGING_DEVICE_PATH, MSG_UART_DP, > > DevPathToTextUart }, > > {MESSAGING_DEVICE_PATH, MSG_VENDOR_DP, > > DevPathToTextVendor }, > > {MESSAGING_DEVICE_PATH, MSG_ISCSI_DP, > > DevPathToTextiSCSI }, > > {MESSAGING_DEVICE_PATH, MSG_VLAN_DP, > > DevPathToTextVlan }, > > + {MESSAGING_DEVICE_PATH, MSG_DNS_DP, > > DevPathToTextDns }, > > {MESSAGING_DEVICE_PATH, MSG_URI_DP, > > DevPathToTextUri }, > > {MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_DP, > > DevPathToTextBluetooth }, > > {MESSAGING_DEVICE_PATH, MSG_WIFI_DP, > > DevPathToTextWiFi }, > > {MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_LE_DP, > > DevPathToTextBluetoothLE }, > > {MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP, > > DevPathToTextHardDrive }, > > -- > > 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
© 2016 - 2024 Red Hat, Inc.