Skip to content

Commit

Permalink
util: Added function to find specific UUID in UUID list.
Browse files Browse the repository at this point in the history
Finds a given UUID in the UUID list returned by identify UUID.

Signed-off-by: Leonardo da Cunha <[email protected]>
  • Loading branch information
lgdacunh committed Dec 15, 2023
1 parent f80ffd0 commit 8d264dd
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/libnvme.map
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ LIBNVME_1_7 {
nvme_init_copy_range_f3;
nvme_insert_tls_key_versioned;
nvme_generate_tls_key_identity;
nvme_uuid_find;
};

LIBNVME_1_6 {
Expand Down
16 changes: 16 additions & 0 deletions src/nvme/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -951,6 +951,22 @@ int nvme_uuid_random(unsigned char uuid[NVME_UUID_LEN])
return 0;
}

__u8 nvme_uuid_find(struct nvme_id_uuid_list *uuid_list, const unsigned char uuid[NVME_UUID_LEN])
{
const unsigned char uuid_end[NVME_UUID_LEN] = {0};

if ((!uuid_list) || (!uuid))
return 0;

for (int i = 0; i < NVME_ID_UUID_LIST_MAX; i++) {
if (memcmp(uuid_end, &uuid_list->entry[i].uuid, NVME_UUID_LEN) == 0)
return 0;
if (memcmp(uuid, &uuid_list->entry[i].uuid, NVME_UUID_LEN) == 0)
return i + 1;
}
return 0;
}

#ifdef HAVE_NETDB
static bool _nvme_ipaddrs_eq(struct sockaddr *addr1, struct sockaddr *addr2)
{
Expand Down
9 changes: 9 additions & 0 deletions src/nvme/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -666,6 +666,15 @@ int nvme_uuid_from_string(const char *str, unsigned char uuid[NVME_UUID_LEN]);
*/
int nvme_uuid_random(unsigned char uuid[NVME_UUID_LEN]);

/**
* nvme_uuid_find - Find UUID position on UUID list
* @uuid_list: UUID list returned by identify UUID
* @uuid: Binary encoded input UUID
*
* Return: The array position where given UUID resides, or zero if UUID is not present.
*/
__u8 nvme_uuid_find(struct nvme_id_uuid_list *uuid_list, const unsigned char uuid[NVME_UUID_LEN]);

/**
* nvme_ipaddrs_eq - Check if 2 IP addresses are equal.
* @addr1: IP address (can be IPv4 or IPv6)
Expand Down

0 comments on commit 8d264dd

Please sign in to comment.