logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

recursive_key_scan, recursive_session_key_scan - apply a function to all keys in a keyring tree

Description

recursive_key_scan() performs a depth-first recursive scan of the specified keyring tree and applies func to every link found in the accessible keyrings in that tree. data is passed to each invocation of func. The return values of func are summed and returned as the overall return value. Errors are ignored. Inaccessible keyrings are not scanned, but links to them are still passed to func. recursive_session_key_scan() works exactly like recursive_key_scan() with the caller's session keyring specified as the starting keyring. The callback function is called for each link found in all the keyrings in the nominated tree and so may be called multiple times for a particular key if that key has multiple links to it. The callback function is passed the following parameters: parent The keyring containing the link or 0 for the initial key. key The key to which the link points. desc and desc_len A pointer to the raw description and its length as retrieved with keyctl_describe_alloc(). These will be NULL and -1 respectively if the description couldn't be retrieved and errno will retain the error from keyctl_describe_alloc(). data The data passed to the scanner function.

Errors

Ignored.

Linking

When linking, -lkeyutils should be specified to the linker.

Name

recursive_key_scan, recursive_session_key_scan - apply a function to all keys in a keyring tree

Return Value

These functions return the sum of the results of the callback functions they invoke.

See Also

keyctl(3), keyctl_describe_alloc(3), keyrings(7) Linux 10 Mar 2011 RECURSIVE_KEY_SCAN(3)

Synopsis

#include<keyutils.h>typedefint(*recursive_key_scanner_t)(key_serial_tparent,key_serial_tkey,char*desc,intdesc_len,void*data);longrecursive_key_scan(key_serial_tkeyring,recursive_key_scanner_tfunc,void*data);longrecursive_session_key_scan(recursive_key_scanner_tfunc,void*data);

See Also