EFIDP_MAKE_GENERIC(3)

NAME
efidp_make_generic, efidp_make_end_instance, efidp_make_end_entire, efidp_make_vendor, efidp_make_file, efidp_make_hd, efidp_make_nvme, efidp_make_sas, efidp_make_ipv4, efidp_make_mac_addr, efidp_make_sata, efidp_make_scsi, efidp_make_acpi_hid, efidp_make_acpi_hid_ex, efidp_make_edd10, efidp_make_pci, efidp_make_hw_vendor, efidp_make_msg_vendor, efidp_make_media_vendor - Create EFI Device Path node data structures for specific device types efidp_set_node_data, efidp_duplicate_path, efidp_append_path, efidp_append_node, efidp_append_instance - Manipulate EFI Device Path and node relationships. efidp_is_valid, efidp_instance_size, efidp_size, efidp_get_next_end, efidp_is_multiinstance, efidp_next_instance, efidp_next_node, efidp_node_size, efidp_type, efidp_subtype - Inspect EFI Device Path data structures efidp_parse_device_node, efidp_parse_device_path - Create EFI Device Path structures from printable strings. efidp_format_device_path - Format EFI Device Path structures as printable strings.

SYNOPSIS
#include <efivar.h>

ssize_t efidp_make_generic(uint8_t *buf, ssize_t size,
	uint8_t type, uint8_t subtype,
	ssize_t total_size);
ssize_t efidp_make_end_instance(uint8_t *buf, ssize_t size);
ssize_t efidp_make_end_entire(uint8_t *buf, ssize_t size);
ssize_t efidp_make_vendor(uint8_t *buf, ssize_t size, uint8_t type,
	uint8_t subtype, efi_guid_t vendor_guid,
	void *data, size_t data_size);
ssize_t efidp_make_file(uint8_t *buf, ssize_t size, char *filename);
ssize_t efidp_make_hd(uint8_t *buf, ssize_t size, uint32_t num,
	uint64_t part_start, uint64_t part_size,
	uint8_t *signature, uint8_t format,
	uint8_t signature_type);
ssize_t efidp_make_nvme(uint8_t *buf, ssize_t size,
	uint32_t namespace_id, uint8_t *ieee_eui_64);
ssize_t efidp_make_sas(uint8_t *buf, ssize_t size, uint64_t sas_address);
ssize_t efidp_make_ipv4(uint8_t *buf, ssize_t size,
	uint32_t local, uint32_t remote,
	uint32_t gateway, uint32_t netmask,
	uint16_t local_port, uint16_t remote_port,
	uint16_t protocol, int is_static);
ssize_t efidp_make_mac_addr(uint8_t *buf, ssize_t size,
	uint8_t if_type,
	const uint8_t const *mac_addr,
	ssize_t mac_addr_size);
ssize_t efidp_make_sata(uint8_t *buf, ssize_t size, uint16_t hba_port,
	uint16_t port_multiplier_port, uint16_t lun);
ssize_t efidp_make_scsi(uint8_t *buf, ssize_t size, uint16_t target,
	uint16_t lun);
ssize_t efidp_make_acpi_hid(uint8_t *buf, ssize_t size, uint32_t hid,
	uint32_t uid);
ssize_t efidp_make_acpi_hid_ex(uint8_t *buf, ssize_t size, uint32_t hid,
	uint32_t uid, uint32_t cid, char *hidstr,
	char *uidstr, char *cidstr);
ssize_t efidp_make_edd10(uint8_t *buf, ssize_t size,
	uint32_t hardware_device);
ssize_t efidp_make_pci(uint8_t *buf, ssize_t size, uint8_t device,
	uint8_t function);
ssize_t efidp_make_hw_vendor(uint8_t *buf, ssize_t size,
	efi_guid_t guid, void *data,
	size_t data_size);
ssize_t efidp_make_msg_vendor(uint8_t *buf, ssize_t size,
	efi_guid_t guid, void *data,
	size_t data_size);
ssize_t efidp_make_media_vendor(uint8_t *buf, ssize_t size,
	efi_guid_t guid, void *data,
	size_t data_size);
int efidp_set_node_data(const_efidp dn, void *buf, size_t bufsize);
int efidp_duplicate_path(const_efidp dp, efidp *out);
int efidp_append_path(const_efidp dp0, const_efidp dp1, efidp *out);
int efidp_append_node(const_efidp dp, const_efidp dn, efidp *out);
int efidp_append_instance(const_efidp dp, const_efidp dpi, efidp *out);
int16_t efidp_type(const_efidp dp);
int16_t efidp_subtype(const_efidp dp);
ssize_t efidp_node_size(const_efidp dn);
int efidp_next_node(const_efidp in, const_efidp *out);
int efidp_next_instance(const_efidp in, const_efidp *out);
int efidp_is_multiinstance(const_efidp dn);
int efidp_get_next_end(const_efidp in, const_efidp *out);
ssize_t efidp_size(const_efidp dp);
ssize_t efidp_instance_size(const_efidp dpi);
int efidp_is_valid(const_efidp dp, ssize_t limit);
ssize_t efidp_parse_device_node(char *path, efidp out, size_t size);
ssize_t efidp_parse_device_path(char *path, efidp out, size_t size);
ssize_t efidp_format_device_path(char *buf, size_t size,
	const_efidp dp, ssize_t limit);

AUTHORS
Peter Jones <pjones@redhat.com>