/** @file\r
DevicePathFromText protocol as defined in the UEFI 2.0 specification.\r
\r
-Copyright (c) 2006 - 2008, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
http://opensource.org/licenses/bsd-license.php\r
Pci = (PCI_DEVICE_PATH *) CreateDeviceNode (\r
HARDWARE_DEVICE_PATH,\r
HW_PCI_DP,\r
- sizeof (PCI_DEVICE_PATH)\r
+ (UINT16) sizeof (PCI_DEVICE_PATH)\r
);\r
\r
Pci->Function = (UINT8) Strtoi (FunctionStr);\r
Pccard = (PCCARD_DEVICE_PATH *) CreateDeviceNode (\r
HARDWARE_DEVICE_PATH,\r
HW_PCCARD_DP,\r
- sizeof (PCCARD_DEVICE_PATH)\r
+ (UINT16) sizeof (PCCARD_DEVICE_PATH)\r
);\r
\r
Pccard->FunctionNumber = (UINT8) Strtoi (FunctionNumberStr);\r
MemMap = (MEMMAP_DEVICE_PATH *) CreateDeviceNode (\r
HARDWARE_DEVICE_PATH,\r
HW_MEMMAP_DP,\r
- sizeof (MEMMAP_DEVICE_PATH)\r
+ (UINT16) sizeof (MEMMAP_DEVICE_PATH)\r
);\r
\r
MemMap->MemoryType = (UINT32) Strtoi (MemoryTypeStr);\r
Controller = (CONTROLLER_DEVICE_PATH *) CreateDeviceNode (\r
HARDWARE_DEVICE_PATH,\r
HW_CONTROLLER_DP,\r
- sizeof (CONTROLLER_DEVICE_PATH)\r
+ (UINT16) sizeof (CONTROLLER_DEVICE_PATH)\r
);\r
Controller->ControllerNumber = (UINT32) Strtoi (ControllerStr);\r
\r
Acpi = (ACPI_HID_DEVICE_PATH *) CreateDeviceNode (\r
ACPI_DEVICE_PATH,\r
ACPI_DP,\r
- sizeof (ACPI_HID_DEVICE_PATH)\r
+ (UINT16) sizeof (ACPI_HID_DEVICE_PATH)\r
);\r
\r
EisaIdFromText (HIDStr, &Acpi->HID);\r
Acpi = (ACPI_HID_DEVICE_PATH *) CreateDeviceNode (\r
ACPI_DEVICE_PATH,\r
ACPI_DP,\r
- sizeof (ACPI_HID_DEVICE_PATH)\r
+ (UINT16) sizeof (ACPI_HID_DEVICE_PATH)\r
);\r
\r
Acpi->HID = EFI_PNP_ID (PnPId);\r
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
return (EFI_DEVICE_PATH_PROTOCOL *) AcpiEx;\r
}\r
\r
+/**\r
+ Converts a text device path node to ACPI _ADR device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created ACPI _ADR device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextAcpiAdr (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\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
+ (UINT16) sizeof (ACPI_ADR_DEVICE_PATH)\r
+ );\r
+ ASSERT (AcpiAdr != NULL);\r
+\r
+ for (Index = 0; ; Index++) {\r
+ DisplayDeviceStr = GetNextParamStr (&TextDeviceNode);\r
+ if (IS_NULL (*DisplayDeviceStr)) {\r
+ break;\r
+ }\r
+ if (Index > 0) {\r
+ Length = DevicePathNodeLength (AcpiAdr);\r
+ AcpiAdr = ReallocatePool (\r
+ Length,\r
+ Length + sizeof (UINT32),\r
+ AcpiAdr\r
+ );\r
+ ASSERT (AcpiAdr != NULL);\r
+ SetDevicePathNodeLength (AcpiAdr, Length + sizeof (UINT32));\r
+ }\r
+ \r
+ (&AcpiAdr->ADR)[Index] = (UINT32) Strtoi (DisplayDeviceStr);\r
+ }\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) AcpiAdr;\r
+}\r
+\r
/**\r
Converts a text device path node to Parallel Port device path structure.\r
\r
Atapi = (ATAPI_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_ATAPI_DP,\r
- sizeof (ATAPI_DEVICE_PATH)\r
+ (UINT16) sizeof (ATAPI_DEVICE_PATH)\r
);\r
\r
PrimarySecondaryStr = GetNextParamStr (&TextDeviceNode);\r
Scsi = (SCSI_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_SCSI_DP,\r
- sizeof (SCSI_DEVICE_PATH)\r
+ (UINT16) sizeof (SCSI_DEVICE_PATH)\r
);\r
\r
Scsi->Pun = (UINT16) Strtoi (PunStr);\r
Fibre = (FIBRECHANNEL_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_FIBRECHANNEL_DP,\r
- sizeof (FIBRECHANNEL_DEVICE_PATH)\r
+ (UINT16) sizeof (FIBRECHANNEL_DEVICE_PATH)\r
);\r
\r
Fibre->Reserved = 0;\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
F1394DevPath = (F1394_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_1394_DP,\r
- sizeof (F1394_DEVICE_PATH)\r
+ (UINT16) sizeof (F1394_DEVICE_PATH)\r
);\r
\r
F1394DevPath->Reserved = 0;\r
Usb = (USB_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_USB_DP,\r
- sizeof (USB_DEVICE_PATH)\r
+ (UINT16) sizeof (USB_DEVICE_PATH)\r
);\r
\r
Usb->ParentPortNumber = (UINT8) Strtoi (PortStr);\r
I2ODevPath = (I2O_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_I2O_DP,\r
- sizeof (I2O_DEVICE_PATH)\r
+ (UINT16) sizeof (I2O_DEVICE_PATH)\r
);\r
\r
I2ODevPath->Tid = (UINT32) Strtoi (TIDStr);\r
InfiniBand = (INFINIBAND_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_INFINIBAND_DP,\r
- sizeof (INFINIBAND_DEVICE_PATH)\r
+ (UINT16) sizeof (INFINIBAND_DEVICE_PATH)\r
);\r
\r
InfiniBand->ResourceFlags = (UINT32) Strtoi (FlagsStr);\r
Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_VENDOR_DP,\r
- sizeof (VENDOR_DEVICE_PATH));\r
+ (UINT16) sizeof (VENDOR_DEVICE_PATH));\r
CopyGuid (&Vendor->Guid, &gEfiPcAnsiGuid);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;\r
Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_VENDOR_DP,\r
- sizeof (VENDOR_DEVICE_PATH));\r
+ (UINT16) sizeof (VENDOR_DEVICE_PATH));\r
CopyGuid (&Vendor->Guid, &gEfiVT100Guid);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;\r
Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_VENDOR_DP,\r
- sizeof (VENDOR_DEVICE_PATH));\r
+ (UINT16) sizeof (VENDOR_DEVICE_PATH));\r
CopyGuid (&Vendor->Guid, &gEfiVT100PlusGuid);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;\r
Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_VENDOR_DP,\r
- sizeof (VENDOR_DEVICE_PATH));\r
+ (UINT16) sizeof (VENDOR_DEVICE_PATH));\r
CopyGuid (&Vendor->Guid, &gEfiVTUTF8Guid);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;\r
UartFlowControl = (UART_FLOW_CONTROL_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_VENDOR_DP,\r
- sizeof (UART_FLOW_CONTROL_DEVICE_PATH)\r
+ (UINT16) sizeof (UART_FLOW_CONTROL_DEVICE_PATH)\r
);\r
\r
CopyGuid (&UartFlowControl->Guid, &gEfiUartDevicePathGuid);\r
Sas = (SAS_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_VENDOR_DP,\r
- sizeof (SAS_DEVICE_PATH)\r
+ (UINT16) sizeof (SAS_DEVICE_PATH)\r
);\r
\r
CopyGuid (&Sas->Guid, &gEfiSasDevicePathGuid);\r
return (EFI_DEVICE_PATH_PROTOCOL *) Sas;\r
}\r
\r
+/**\r
+ Converts a text device path node to Serial Attached SCSI Ex device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created Serial Attached SCSI Ex device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextSasEx (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *AddressStr;\r
+ CHAR16 *LunStr;\r
+ CHAR16 *RTPStr;\r
+ CHAR16 *SASSATAStr;\r
+ CHAR16 *LocationStr;\r
+ CHAR16 *ConnectStr;\r
+ CHAR16 *DriveBayStr;\r
+ UINT16 Info;\r
+ SASEX_DEVICE_PATH *SasEx;\r
+\r
+ AddressStr = GetNextParamStr (&TextDeviceNode);\r
+ LunStr = GetNextParamStr (&TextDeviceNode);\r
+ RTPStr = GetNextParamStr (&TextDeviceNode);\r
+ SASSATAStr = GetNextParamStr (&TextDeviceNode);\r
+ LocationStr = GetNextParamStr (&TextDeviceNode);\r
+ ConnectStr = GetNextParamStr (&TextDeviceNode);\r
+ DriveBayStr = GetNextParamStr (&TextDeviceNode);\r
+ Info = 0x0000;\r
+ SasEx = (SASEX_DEVICE_PATH *) CreateDeviceNode (\r
+ MESSAGING_DEVICE_PATH,\r
+ MSG_SASEX_DP,\r
+ (UINT16) sizeof (SASEX_DEVICE_PATH)\r
+ );\r
+\r
+ Strtoi64 (AddressStr, (UINT64 *) &SasEx->SasAddress);\r
+ Strtoi64 (LunStr, (UINT64 *) &SasEx->Lun);\r
+ *(UINT64 *) &SasEx->SasAddress = SwapBytes64 (*(UINT64 *) &SasEx->SasAddress);\r
+ *(UINT64 *) &SasEx->Lun = SwapBytes64 (*(UINT64 *) &SasEx->Lun);\r
+ SasEx->RelativeTargetPort = (UINT16) Strtoi (RTPStr);\r
+ if (StrCmp (SASSATAStr, L"NoTopology") != 0) {\r
+ if (StrCmp (DriveBayStr, L"0") == 0) {\r
+ Info |= 0x0001;\r
+ } else {\r
+ Info |= 0x0002;\r
+ Info = (UINT16) (Info | (Strtoi (DriveBayStr) << 8));\r
+ }\r
+\r
+ if (StrCmp (SASSATAStr, L"SATA") == 0) {\r
+ Info |= 0x0010;\r
+ }\r
+\r
+ if (StrCmp (LocationStr, L"External") == 0) {\r
+ Info |= 0x0020;\r
+ }\r
+\r
+ if (StrCmp (ConnectStr, L"Expanded") == 0) {\r
+ Info |= 0x0040;\r
+ }\r
+ }\r
+\r
+ SasEx->DeviceTopology = Info;\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) SasEx;\r
+}\r
+\r
/**\r
Converts a text device path node to Debug Port device path structure.\r
\r
Vend = (VENDOR_DEFINED_MESSAGING_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_VENDOR_DP,\r
- sizeof (VENDOR_DEFINED_MESSAGING_DEVICE_PATH)\r
+ (UINT16) sizeof (VENDOR_DEFINED_MESSAGING_DEVICE_PATH)\r
);\r
\r
CopyGuid (&Vend->Guid, &gEfiDebugPortProtocolGuid);\r
MACDevPath = (MAC_ADDR_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_MAC_ADDR_DP,\r
- sizeof (MAC_ADDR_DEVICE_PATH)\r
+ (UINT16) sizeof (MAC_ADDR_DEVICE_PATH)\r
);\r
\r
MACDevPath->IfType = (UINT8) Strtoi (IfTypeStr);\r
return (EFI_DEVICE_PATH_PROTOCOL *) MACDevPath;\r
}\r
\r
+\r
+/**\r
+ Converts a text format to the network protocol ID.\r
+\r
+ @param Text String of protocol field.\r
+\r
+ @return Network protocol ID .\r
+\r
+**/\r
+UINTN\r
+NetworkProtocolFromText (\r
+ IN CHAR16 *Text\r
+ )\r
+{\r
+ if (StrCmp (Text, L"UDP") == 0) {\r
+ return RFC_1700_UDP_PROTOCOL;\r
+ }\r
+\r
+ if (StrCmp (Text, L"TCP") == 0) {\r
+ return RFC_1700_TCP_PROTOCOL;\r
+ }\r
+\r
+ return Strtoi (Text);\r
+}\r
+\r
+\r
/**\r
Converts a text device path node to IPV4 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
- sizeof (IPv4_DEVICE_PATH)\r
+ (UINT16) sizeof (IPv4_DEVICE_PATH)\r
);\r
\r
StrToIPv4Addr (&RemoteIPStr, &IPv4->RemoteIpAddress);\r
- IPv4->Protocol = (UINT16) ((StrCmp (ProtocolStr, L"UDP") == 0) ? 0 : 1);\r
+ IPv4->Protocol = (UINT16) NetworkProtocolFromText (ProtocolStr);\r
if (StrCmp (TypeStr, L"Static") == 0) {\r
IPv4->StaticIpAddress = TRUE;\r
} else {\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
CHAR16 *ProtocolStr;\r
CHAR16 *TypeStr;\r
CHAR16 *LocalIPStr;\r
+ CHAR16 *GatewayIPStr;\r
+ CHAR16 *PrefixLengthStr;\r
IPv6_DEVICE_PATH *IPv6;\r
\r
RemoteIPStr = GetNextParamStr (&TextDeviceNode);\r
ProtocolStr = GetNextParamStr (&TextDeviceNode);\r
TypeStr = GetNextParamStr (&TextDeviceNode);\r
LocalIPStr = GetNextParamStr (&TextDeviceNode);\r
+ PrefixLengthStr = GetNextParamStr (&TextDeviceNode);\r
+ GatewayIPStr = GetNextParamStr (&TextDeviceNode);\r
IPv6 = (IPv6_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_IPv6_DP,\r
- sizeof (IPv6_DEVICE_PATH)\r
+ (UINT16) sizeof (IPv6_DEVICE_PATH)\r
);\r
\r
StrToIPv6Addr (&RemoteIPStr, &IPv6->RemoteIpAddress);\r
- IPv6->Protocol = (UINT16) ((StrCmp (ProtocolStr, L"UDP") == 0) ? 0 : 1);\r
+ IPv6->Protocol = (UINT16) NetworkProtocolFromText (ProtocolStr);\r
if (StrCmp (TypeStr, L"Static") == 0) {\r
- IPv6->StaticIpAddress = TRUE;\r
+ IPv6->IpAddressOrigin = 0;\r
+ } else if (StrCmp (TypeStr, L"StatelessAutoConfigure") == 0) {\r
+ IPv6->IpAddressOrigin = 1;\r
} else {\r
- IPv6->StaticIpAddress = FALSE;\r
+ IPv6->IpAddressOrigin = 2;\r
}\r
\r
StrToIPv6Addr (&LocalIPStr, &IPv6->LocalIpAddress);\r
+ if (!IS_NULL (*GatewayIPStr) && !IS_NULL (*PrefixLengthStr)) {\r
+ StrToIPv6Addr (&GatewayIPStr, &IPv6->GatewayIpAddress);\r
+ IPv6->PrefixLength = (UINT8) Strtoi (PrefixLengthStr);\r
+ } else {\r
+ ZeroMem (&IPv6->GatewayIpAddress, sizeof (IPv6->GatewayIpAddress));\r
+ IPv6->PrefixLength = 0;\r
+ }\r
\r
IPv6->LocalPort = 0;\r
IPv6->RemotePort = 0;\r
Uart = (UART_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_UART_DP,\r
- sizeof (UART_DEVICE_PATH)\r
+ (UINT16) sizeof (UART_DEVICE_PATH)\r
);\r
\r
Uart->BaudRate = (StrCmp (BaudStr, L"DEFAULT") == 0) ? 115200 : Dtoi (BaudStr);\r
\r
case L'S':\r
Uart->Parity = 5;\r
+ break;\r
\r
default:\r
Uart->Parity = 0xff;\r
UsbClass = (USB_CLASS_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_USB_CLASS_DP,\r
- sizeof (USB_CLASS_DEVICE_PATH)\r
+ (UINT16) sizeof (USB_CLASS_DEVICE_PATH)\r
);\r
\r
VIDStr = GetNextParamStr (&TextDeviceNode);\r
(UINT16) (sizeof (ISCSI_DEVICE_PATH_WITH_NAME) + StrLen (NameStr))\r
);\r
\r
- AsciiStr = ISCSIDevPath->iSCSITargetName;\r
+ AsciiStr = ISCSIDevPath->TargetName;\r
StrToAscii (NameStr, &AsciiStr);\r
\r
ISCSIDevPath->TargetPortalGroupTag = (UINT16) Strtoi (PortalGroupStr);\r
return (EFI_DEVICE_PATH_PROTOCOL *) ISCSIDevPath;\r
}\r
\r
+/**\r
+ Converts a text device path node to VLAN device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created VLAN device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextVlan (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *VlanStr;\r
+ VLAN_DEVICE_PATH *Vlan;\r
+\r
+ VlanStr = GetNextParamStr (&TextDeviceNode);\r
+ Vlan = (VLAN_DEVICE_PATH *) CreateDeviceNode (\r
+ MESSAGING_DEVICE_PATH,\r
+ MSG_VLAN_DP,\r
+ (UINT16) sizeof (VLAN_DEVICE_PATH)\r
+ );\r
+\r
+ Vlan->VlanId = (UINT16) Strtoi (VlanStr);\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) Vlan;\r
+}\r
+\r
/**\r
Converts a text device path node to HD device path structure.\r
\r
Hd = (HARDDRIVE_DEVICE_PATH *) CreateDeviceNode (\r
MEDIA_DEVICE_PATH,\r
MEDIA_HARDDRIVE_DP,\r
- sizeof (HARDDRIVE_DEVICE_PATH)\r
+ (UINT16) sizeof (HARDDRIVE_DEVICE_PATH)\r
);\r
\r
Hd->PartitionNumber = (UINT32) Dtoi (PartitionStr);\r
CDROMDevPath = (CDROM_DEVICE_PATH *) CreateDeviceNode (\r
MEDIA_DEVICE_PATH,\r
MEDIA_CDROM_DP,\r
- sizeof (CDROM_DEVICE_PATH)\r
+ (UINT16) sizeof (CDROM_DEVICE_PATH)\r
);\r
\r
CDROMDevPath->BootEntry = (UINT32) Strtoi (EntryStr);\r
Media = (MEDIA_PROTOCOL_DEVICE_PATH *) CreateDeviceNode (\r
MEDIA_DEVICE_PATH,\r
MEDIA_PROTOCOL_DP,\r
- sizeof (MEDIA_PROTOCOL_DEVICE_PATH)\r
+ (UINT16) sizeof (MEDIA_PROTOCOL_DEVICE_PATH)\r
);\r
\r
StrToGuid (GuidStr, &Media->Protocol);\r
Fv = (MEDIA_FW_VOL_DEVICE_PATH *) CreateDeviceNode (\r
MEDIA_DEVICE_PATH,\r
MEDIA_PIWG_FW_VOL_DP,\r
- sizeof (MEDIA_FW_VOL_DEVICE_PATH)\r
+ (UINT16) sizeof (MEDIA_FW_VOL_DEVICE_PATH)\r
);\r
\r
StrToGuid (GuidStr, &Fv->FvName);\r
FvFile = (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *) CreateDeviceNode (\r
MEDIA_DEVICE_PATH,\r
MEDIA_PIWG_FW_FILE_DP,\r
- sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH)\r
+ (UINT16) sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH)\r
);\r
\r
StrToGuid (GuidStr, &FvFile->FvFileName);\r
IN CHAR16 *TextDeviceNode\r
)\r
{\r
- CHAR16 *StartingOffsetStr;\r
- CHAR16 *EndingOffsetStr;\r
- MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH\r
- *Offset;\r
+ CHAR16 *StartingOffsetStr;\r
+ CHAR16 *EndingOffsetStr;\r
+ MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *Offset;\r
\r
StartingOffsetStr = GetNextParamStr (&TextDeviceNode);\r
EndingOffsetStr = GetNextParamStr (&TextDeviceNode);\r
- Offset = (MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *) \r
- CreateDeviceNode (\r
- MEDIA_DEVICE_PATH,\r
- MEDIA_RELATIVE_OFFSET_RANGE_DP,\r
- sizeof (MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH)\r
- );\r
+ Offset = (MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *) CreateDeviceNode (\r
+ MEDIA_DEVICE_PATH,\r
+ MEDIA_RELATIVE_OFFSET_RANGE_DP,\r
+ (UINT16) sizeof (MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH)\r
+ );\r
\r
Strtoi64 (StartingOffsetStr, &Offset->StartingOffset);\r
Strtoi64 (EndingOffsetStr, &Offset->EndingOffset);\r
Sata = (SATA_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_SATA_DP,\r
- sizeof (SATA_DEVICE_PATH)\r
+ (UINT16) sizeof (SATA_DEVICE_PATH)\r
);\r
Sata->HBAPortNumber = (UINT16) Xtoi (Param1);\r
if (Param3 != NULL) {\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"ParallelPort", DevPathFromTextParallelPort},\r
{L"AcpiEx", DevPathFromTextAcpiEx},\r
{L"AcpiExp", DevPathFromTextAcpiExp},\r
+ {L"AcpiAdr", DevPathFromTextAcpiAdr},\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
{L"VenUtf8", DevPathFromTextVenUtf8},\r
{L"UartFlowCtrl", DevPathFromTextUartFlowCtrl},\r
{L"SAS", DevPathFromTextSAS},\r
+ {L"SasEx", DevPathFromTextSasEx},\r
{L"DebugPort", DevPathFromTextDebugPort},\r
{L"MAC", DevPathFromTextMAC},\r
{L"IPv4", DevPathFromTextIPv4},\r
{L"UsbWwid", DevPathFromTextUsbWwid},\r
{L"Unit", DevPathFromTextUnit},\r
{L"iSCSI", DevPathFromTextiSCSI},\r
+ {L"Vlan", DevPathFromTextVlan},\r
{L"HD", DevPathFromTextHD},\r
{L"CDROM", DevPathFromTextCDROM},\r
{L"VenMEDIA", DevPathFromTextVenMEDIA},\r