Add efi_devpath_is_prefix
efi_devpath_is_prefix determines if a path matches a passed-in prefix. Differential Revision: https://reviews.freebsd.org/D12564 Submitted by: Eric McCorkle
This commit is contained in:
parent
9da676183c
commit
679de09379
@ -82,6 +82,7 @@ EFI_HANDLE efi_devpath_handle(EFI_DEVICE_PATH *);
|
|||||||
EFI_DEVICE_PATH *efi_devpath_last_node(EFI_DEVICE_PATH *);
|
EFI_DEVICE_PATH *efi_devpath_last_node(EFI_DEVICE_PATH *);
|
||||||
EFI_DEVICE_PATH *efi_devpath_trim(EFI_DEVICE_PATH *);
|
EFI_DEVICE_PATH *efi_devpath_trim(EFI_DEVICE_PATH *);
|
||||||
bool efi_devpath_match(EFI_DEVICE_PATH *, EFI_DEVICE_PATH *);
|
bool efi_devpath_match(EFI_DEVICE_PATH *, EFI_DEVICE_PATH *);
|
||||||
|
int efi_devpath_is_prefix(EFI_DEVICE_PATH *, EFI_DEVICE_PATH *);
|
||||||
CHAR16 *efi_devpath_name(EFI_DEVICE_PATH *);
|
CHAR16 *efi_devpath_name(EFI_DEVICE_PATH *);
|
||||||
void efi_free_devpath_name(CHAR16 *);
|
void efi_free_devpath_name(CHAR16 *);
|
||||||
|
|
||||||
|
@ -166,3 +166,32 @@ efi_devpath_match(EFI_DEVICE_PATH *devpath1, EFI_DEVICE_PATH *devpath2)
|
|||||||
}
|
}
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
efi_devpath_is_prefix(EFI_DEVICE_PATH *prefix, EFI_DEVICE_PATH *path)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
|
||||||
|
if (prefix == NULL || path == NULL)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
if (IsDevicePathEnd(prefix))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (DevicePathType(prefix) != DevicePathType(path) ||
|
||||||
|
DevicePathSubType(prefix) != DevicePathSubType(path))
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
len = DevicePathNodeLength(prefix);
|
||||||
|
if (len != DevicePathNodeLength(path))
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
if (memcmp(prefix, path, (size_t)len) != 0)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
prefix = NextDevicePathNode(prefix);
|
||||||
|
path = NextDevicePathNode(path);
|
||||||
|
}
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user