Skip to content

Latest commit

 

History

History
496 lines (321 loc) · 9.43 KB

File metadata and controls

496 lines (321 loc) · 9.43 KB
.. c:enum:: libnbft_primary_admin_host_flag

   Primary Administrative Host Descriptor Flags

Constants

LIBNBFT_PRIMARY_ADMIN_HOST_FLAG_NOT_INDICATED
Not Indicated by Driver: The driver that created this NBFT provided no administrative priority hint for this NBFT.
LIBNBFT_PRIMARY_ADMIN_HOST_FLAG_UNSELECTED
Unselected: The driver that created this NBFT explicitly indicated that this NBFT should not be prioritized over any other NBFT.
LIBNBFT_PRIMARY_ADMIN_HOST_FLAG_SELECTED
Selected: The driver that created this NBFT explicitly indicated that this NBFT should be prioritized over any other NBFT.
LIBNBFT_PRIMARY_ADMIN_HOST_FLAG_RESERVED
Reserved.
.. c:struct:: libnbft_host

   Host Descriptor

Definition

struct libnbft_host {
  unsigned char *id;
  char *nqn;
  bool host_id_configured;
  bool host_nqn_configured;
  enum libnbft_primary_admin_host_flag primary;
};

Members

id
Host ID (raw UUID, length = 16 bytes).
nqn
Host NQN.
host_id_configured
HostID Configured Flag: value of True indicates that id contains administratively-configured value, or driver default value if False.
host_nqn_configured
Host NQN Configured Flag: value of True indicates that nqn contains administratively-configured value, or driver default value if False.
primary
Primary Administrative Host Descriptor, see :c:type:`enum libnbft_primary_admin_host_flag <libnbft_primary_admin_host_flag>`.
.. c:struct:: libnbft_hfi_info_tcp

   HFI Transport Info Descriptor - NVMe/TCP

Definition

struct libnbft_hfi_info_tcp {
  __u32 pci_sbdf;
  __u8 mac_addr[6];
  __u16 vlan;
  __u8 ip_origin;
  char ipaddr[40];
  __u8 subnet_mask_prefix;
  char gateway_ipaddr[40];
  __u16 route_metric;
  char primary_dns_ipaddr[40];
  char secondary_dns_ipaddr[40];
  char dhcp_server_ipaddr[40];
  char *host_name;
  bool this_hfi_is_default_route;
  bool dhcp_override;
};

Members

pci_sbdf
PCI Express Routing ID for the HFI Transport Function.
mac_addr
MAC Address: The MAC address of this HFI, in EUI-48TM format.
vlan
The VLAN identifier if the VLAN is associated with this HFI, as defined in IEEE 802.1q-2018 or zeroes if no VLAN is associated with this HFI.
ip_origin
The source of Ethernet L3 configuration information used by the driver or 0 if not used.
ipaddr
The IPv4 or IPv6 address of this HFI.
subnet_mask_prefix
The IPv4 or IPv6 subnet mask in CIDR routing prefix notation.
gateway_ipaddr
The IPv4 or IPv6 address of the IP gateway for this HFI or zeroes if no IP gateway is specified.
route_metric
The cost value for the route indicated by this HFI.
primary_dns_ipaddr
The IPv4 or IPv6 address of the Primary DNS server for this HFI.
secondary_dns_ipaddr
The IPv4 or IPv6 address of the Secondary DNS server for this HFI.
dhcp_server_ipaddr
The IPv4 or IPv6 address of the DHCP server used to assign this HFI address.
host_name
The Host Name string.
this_hfi_is_default_route
If True, then the BIOS utilized this interface described by HFI to be the default route with highest priority. If False, then routes are local to their own scope.
dhcp_override
If True, then HFI information was populated by consuming the DHCP on this interface. If False, then the HFI information was set administratively by a configuration interface to the driver and pre-OS envrionment.
.. c:struct:: libnbft_hfi

   Host Fabric Interface (HFI) Descriptor

Definition

struct libnbft_hfi {
  int index;
  char transport[8];
  struct libnbft_hfi_info_tcp tcp_info;
};

Members

index
HFI Descriptor Index: indicates the number of this HFI Descriptor in the Host Fabric Interface Descriptor List.
transport
Transport Type string (e.g. 'tcp').
tcp_info
The HFI Transport Info Descriptor, see :c:type:`struct libnbft_hfi_info_tcp <libnbft_hfi_info_tcp>`.
.. c:struct:: libnbft_discovery

   Discovery Descriptor

Definition

struct libnbft_discovery {
  int index;
  struct libnbft_security *security;
  struct libnbft_hfi *hfi;
  char *uri;
  char *nqn;
};

Members

index
The number of this Discovery Descriptor in the Discovery Descriptor List.
security
The Security Profile Descriptor, see :c:type:`struct libnbft_security <libnbft_security>`.
hfi
The HFI Descriptor associated with this Discovery Descriptor. See :c:type:`struct libnbft_hfi <libnbft_hfi>`.
uri
A URI which indicates an NVMe Discovery controller associated with this Discovery Descriptor.
nqn
An NVMe Discovery controller NQN.
.. c:struct:: libnbft_security

   Security Profile Descriptor

Definition

struct libnbft_security {
  int index;
};

Members

index
The number of this Security Profile Descriptor in the Security Profile Descriptor List.
.. c:enum:: libnbft_nid_type

   Namespace Identifier Type (NIDT)

Constants

LIBNBFT_NID_TYPE_NONE
No identifier available.
LIBNBFT_NID_TYPE_EUI64
The EUI-64 identifier.
LIBNBFT_NID_TYPE_NGUID
The NSGUID identifier.
LIBNBFT_NID_TYPE_NS_UUID
The UUID identifier.
.. c:struct:: libnbft_subsystem_ns

   Subsystem Namespace (SSNS) info

Definition

struct libnbft_subsystem_ns {
  int index;
  struct libnbft_discovery *discovery;
  struct libnbft_security *security;
  int num_hfis;
  struct libnbft_hfi **hfis;
  char transport[8];
  char traddr[40];
  char *trsvcid;
  __u16 subsys_port_id;
  __u32 nsid;
  enum libnbft_nid_type nid_type;
  __u8 *nid;
  char *subsys_nqn;
  bool pdu_header_digest_required;
  bool data_digest_required;
  int controller_id;
  int asqsz;
  char *dhcp_root_path_string;
  bool discovered;
  bool unavailable;
};

Members

index
SSNS Descriptor Index in the descriptor list.
discovery
Primary Discovery Controller associated with this SSNS Descriptor.
security
Security Profile Descriptor associated with this namespace.
num_hfis
Number of HFIs.
hfis
List of HFIs associated with this namespace. Includes the primary HFI at the first position and all secondary HFIs. This array is null-terminated.
transport
Transport Type string (e.g. 'tcp').
traddr
Subsystem Transport Address.
trsvcid
Subsystem Transport Service Identifier.
subsys_port_id
The Subsystem Port ID.
nsid
The Namespace ID of this descriptor or when nid should be used instead.
nid_type
Namespace Identifier Type, see :c:type:`enum libnbft_nid_type <libnbft_nid_type>`.
nid
The Namespace Identifier value.
subsys_nqn
Subsystem and Namespace NQN.
pdu_header_digest_required
PDU Header Digest (HDGST) Flag: the use of NVM Header Digest Enabled is required.
data_digest_required
Data Digest (DDGST) Flag: the use of NVM Data Digest Enabled is required.
controller_id
Controller ID (SSNS Extended Information Descriptor): The controller ID associated with the Admin Queue or 0 if not supported.
asqsz
Admin Submission Queue Size (SSNS Extended Information Descriptor) or 0 if not supported.
dhcp_root_path_string
DHCP Root Path Override string (SSNS Extended Information Descriptor).
discovered
Indicates that this namespace was acquired through discovery.
unavailable
Namespace is unavailable as indicated by the pre-OS driver.
.. c:struct:: libnbft_info

   The parsed NBFT table data.

Definition

struct libnbft_info {
  char *filename;
  __u8 *raw_nbft;
  ssize_t raw_nbft_size;
  struct libnbft_host host;
  struct libnbft_hfi **hfi_list;
  struct libnbft_security **security_list;
  struct libnbft_discovery **discovery_list;
  struct libnbft_subsystem_ns **subsystem_ns_list;
};

Members

filename
Path to the NBFT table.
raw_nbft
The original NBFT table contents.
raw_nbft_size
Size of raw_nbft.
host
The Host Descriptor (should match other NBFTs).
hfi_list
The HFI Descriptor List (null-terminated array).
security_list
The Security Profile Descriptor List (null-terminated array).
discovery_list
The Discovery Descriptor List (null-terminated array).
subsystem_ns_list
The SSNS Descriptor List (null-terminated array).
.. c:function:: int libnvmf_read_nbft (struct libnvme_global_ctx *ctx, struct libnbft_info **nbft, const char *filename)

   Read and parse contents of an ACPI NBFT table

Parameters

struct libnvme_global_ctx *ctx
struct libnvme_global_ctx object
struct libnbft_info **nbft
Parsed NBFT table data.
const char *filename
Filename of the raw NBFT table to read.

Description

Read and parse the specified NBFT file into a struct libnbft_info. Free with libnvmf_free_nbft().

Return

0 on success, errno otherwise.

.. c:function:: void libnvmf_free_nbft (struct libnvme_global_ctx *ctx, struct libnbft_info *nbft)

   Free the struct libnbft_info and its contents

Parameters

struct libnvme_global_ctx *ctx
struct libnvme_global_ctx object
struct libnbft_info *nbft
Parsed NBFT table data.
.. c:struct:: nbft_file_entry

   Linked list entry for NBFT files

Definition

struct nbft_file_entry {
  struct nbft_file_entry *next;
  struct libnbft_info *nbft;
};

Members

next
Pointer to next entry
nbft
Pointer to NBFT info structure