MDEX_GET(3)

NAME
mdex_get - retrieve an entry from a multicast index

LIBRARY
Librecast library (liblibrecast, -llibrecast)

SYNOPSIS
#include <librecast/mdex.h>

int mdex_get(mdex_t *mdex, unsigned char *hash, size_t hashlen, mdex_entry_t *entry);
int mdex_getalias(mdex_t *mdex, const char *path, mdex_entry_t *entry);

Compile and link with -llibrecast.

DESCRIPTION
The mdex_get function retrieves an entry from the multicast index mdex using hash (of length hashlen) as the key, and returns a copy of the data in entry if provided. If entry is NULL, the return value can be used to check if an entry exists in the index without retrieving it.

If no matching entry is found in the index, -1 is returned and errno is set to ENOENT.

hashlen can be shorter than the full length of the hash stored with mdex_put(3) and will return the first entry matching the truncated hash. This allows us to store the full 32 byte hash in the index, but still match against the truncated hash derived from, say, the 14 bytes of an IPv6 multicast group address.

The mdex_getalias() function is a wrapper which calls mdex_get() with the hash of the NUL-terminated string path, returning the result.

RETURN VALUE
mdex_get() returns zero on success. On error, -1 is returned, and errno is set to indicate the error.

ERRORS

EINVAL
    Invalid argument. Both mdex and hash are required (not NULL), and hashlen > 0.

ENOENT No entry found matching hash.

ELOOP
    Infinite loop. Alias points to itself.

SEE ALSO
mdex_init(3), mdex_free(3), mdex_put(3), mdex_del(3), lc_share(3)