return ConvertFromTextAcpi (TextDeviceNode, 0x0a03);\r
}\r
\r
+/**\r
+ Converts a text device path node to PCIE root device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created PCIE root device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextPcieRoot (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ return ConvertFromTextAcpi (TextDeviceNode, 0x0a08);\r
+}\r
+\r
/**\r
Converts a text device path node to Floppy device path structure.\r
\r
CHAR16 *DisplayDeviceStr;\r
ACPI_ADR_DEVICE_PATH *AcpiAdr;\r
UINTN Index;\r
+ UINTN Length;\r
\r
AcpiAdr = (ACPI_ADR_DEVICE_PATH *) CreateDeviceNode (\r
ACPI_DEVICE_PATH,\r
ACPI_ADR_DP,\r
- sizeof (ACPI_ADR_DEVICE_PATH)\r
+ (UINT16) sizeof (ACPI_ADR_DEVICE_PATH)\r
);\r
ASSERT (AcpiAdr != NULL);\r
\r
break;\r
}\r
if (Index > 0) {\r
+ Length = DevicePathNodeLength (AcpiAdr);\r
AcpiAdr = ReallocatePool (\r
- DevicePathNodeLength (AcpiAdr),\r
- DevicePathNodeLength (AcpiAdr) + sizeof (UINT32),\r
+ Length,\r
+ Length + sizeof (UINT32),\r
AcpiAdr\r
);\r
ASSERT (AcpiAdr != NULL);\r
- SetDevicePathNodeLength (AcpiAdr, DevicePathNodeLength (AcpiAdr) + sizeof (UINT32));\r
+ SetDevicePathNodeLength (AcpiAdr, Length + sizeof (UINT32));\r
}\r
\r
(&AcpiAdr->ADR)[Index] = (UINT32) Strtoi (DisplayDeviceStr);\r
return (EFI_DEVICE_PATH_PROTOCOL *) Fibre;\r
}\r
\r
+/**\r
+ Converts a text device path node to FibreEx device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created FibreEx device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextFibreEx (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *WWNStr;\r
+ CHAR16 *LunStr;\r
+ FIBRECHANNELEX_DEVICE_PATH *FibreEx;\r
+\r
+ WWNStr = GetNextParamStr (&TextDeviceNode);\r
+ LunStr = GetNextParamStr (&TextDeviceNode);\r
+ FibreEx = (FIBRECHANNELEX_DEVICE_PATH *) CreateDeviceNode (\r
+ MESSAGING_DEVICE_PATH,\r
+ MSG_FIBRECHANNELEX_DP,\r
+ (UINT16) sizeof (FIBRECHANNELEX_DEVICE_PATH)\r
+ );\r
+\r
+ FibreEx->Reserved = 0;\r
+ Strtoi64 (WWNStr, (UINT64 *) (&FibreEx->WWN));\r
+ Strtoi64 (LunStr, (UINT64 *) (&FibreEx->Lun));\r
+\r
+ *(UINT64 *) (&FibreEx->WWN) = SwapBytes64 (*(UINT64 *) (&FibreEx->WWN));\r
+ *(UINT64 *) (&FibreEx->Lun) = SwapBytes64 (*(UINT64 *) (&FibreEx->Lun));\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) FibreEx;\r
+}\r
+\r
/**\r
Converts a text device path node to 1394 device path structure.\r
\r
CHAR16 *ProtocolStr;\r
CHAR16 *TypeStr;\r
CHAR16 *LocalIPStr;\r
+ CHAR16 *GatewayIPStr;\r
+ CHAR16 *SubnetMaskStr;\r
IPv4_DEVICE_PATH *IPv4;\r
\r
RemoteIPStr = GetNextParamStr (&TextDeviceNode);\r
ProtocolStr = GetNextParamStr (&TextDeviceNode);\r
TypeStr = GetNextParamStr (&TextDeviceNode);\r
LocalIPStr = GetNextParamStr (&TextDeviceNode);\r
+ GatewayIPStr = GetNextParamStr (&TextDeviceNode);\r
+ SubnetMaskStr = GetNextParamStr (&TextDeviceNode);\r
IPv4 = (IPv4_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_IPv4_DP,\r
}\r
\r
StrToIPv4Addr (&LocalIPStr, &IPv4->LocalIpAddress);\r
+ if (!IS_NULL (*GatewayIPStr) && !IS_NULL (*SubnetMaskStr)) {\r
+ StrToIPv4Addr (&GatewayIPStr, &IPv4->GatewayIpAddress);\r
+ StrToIPv4Addr (&SubnetMaskStr, &IPv4->SubnetMask);\r
+ } else {\r
+ ZeroMem (&IPv4->GatewayIpAddress, sizeof (IPv4->GatewayIpAddress));\r
+ ZeroMem (&IPv4->SubnetMask, sizeof (IPv4->SubnetMask));\r
+ }\r
\r
IPv4->LocalPort = 0;\r
IPv4->RemotePort = 0;\r
{L"Ctrl", DevPathFromTextCtrl},\r
{L"Acpi", DevPathFromTextAcpi},\r
{L"PciRoot", DevPathFromTextPciRoot},\r
+ {L"PcieRoot", DevPathFromTextPcieRoot},\r
{L"Floppy", DevPathFromTextFloppy},\r
{L"Keyboard", DevPathFromTextKeyboard},\r
{L"Serial", DevPathFromTextSerial},\r
{L"Ata", DevPathFromTextAta},\r
{L"Scsi", DevPathFromTextScsi},\r
{L"Fibre", DevPathFromTextFibre},\r
+ {L"FibreEx", DevPathFromTextFibreEx},\r
{L"I1394", DevPathFromText1394},\r
{L"USB", DevPathFromTextUsb},\r
{L"I2O", DevPathFromTextI2O},\r