931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/*
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina Authors:
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina Pavel Březina <pbrezina@redhat.com>
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina Copyright (C) 2014 Red Hat
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina This program is free software; you can redistribute it and/or modify
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina it under the terms of the GNU General Public License as published by
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina the Free Software Foundation; either version 3 of the License, or
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina (at your option) any later version.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina This program is distributed in the hope that it will be useful,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina but WITHOUT ANY WARRANTY; without even the implied warranty of
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina GNU General Public License for more details.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina You should have received a copy of the GNU General Public License
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina along with this program. If not, see <http://www.gnu.org/licenses/>.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina*/
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#ifndef SSS_SIFP_H_
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#define SSS_SIFP_H_
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#include <stdint.h>
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#include <stdbool.h>
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#include <unistd.h>
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina#include <dhash.h>
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @defgroup sss_simpleifp Simple interface to SSSD InfoPipe responder.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * Libsss_simpleifp provides a synchronous interface to simplify basic
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * communication with SSSD InfoPipe responder.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * This interface is not a full replacement for the complete D-Bus API and it
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * provides only access to the most common tasks like fetching attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * of SSSD objects.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * If there is a need for a more sophisticated communication with the SSSD
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * InfoPipe responder a D-Bus API of your choice should be used.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @{
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/** SSSD InfoPipe bus address */
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina#define SSS_SIFP_ADDRESS "org.freedesktop.sssd.infopipe"
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina/* Backwards-compatible address */
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina#define SSS_SIFP_IFP SSS_SIFP_ADDRESS
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina/* Backwards-compatible interface definitions */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#define SSS_SIFP_IFACE_IFP SSS_SIFP_IFP
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#define SSS_SIFP_IFACE_COMPONENTS "org.freedesktop.sssd.infopipe.Components"
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#define SSS_SIFP_IFACE_SERVICES "org.freedesktop.sssd.infopipe.Services"
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#define SSS_SIFP_IFACE_DOMAINS "org.freedesktop.sssd.infopipe.Domains"
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#define SSS_SIFP_IFACE_USERS "org.freedesktop.sssd.infopipe.Users"
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#define SSS_SIFP_IFACE_GROUPS "org.freedesktop.sssd.infopipe.Groups"
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina/**
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina * SSSD InfoPipe object path.
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina * Look at InfoPipe introspection and SSSD documentation for more objects.
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina */
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina#define SSS_SIFP_PATH "/org/freedesktop/sssd/infopipe"
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina/**
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina * SSSD InfoPipe object path.
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina * Look at InfoPipe introspection and SSSD documentation for more interfaces.
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina */
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina#define SSS_SIFP_IFACE "org.freedesktop.sssd.infopipe"
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * Opaque libsss_sifp context. One context shall not be used by multiple
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * threads. Each thread needs to create and use its own context.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @see sss_sifp_init
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @see sss_sifp_init_ex
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinatypedef struct sss_sifp_ctx sss_sifp_ctx;
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * Typedef for memory allocation functions
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinatypedef void (sss_sifp_free_func)(void *ptr, void *pvt);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinatypedef void *(sss_sifp_alloc_func)(size_t size, void *pvt);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * Error codes used by libsss_sifp
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinatypedef enum sss_sifp_error {
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina /** Success */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina SSS_SIFP_OK = 0,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina /** Ran out of memory during processing */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina SSS_SIFP_OUT_OF_MEMORY,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina /** Invalid argument */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina SSS_SIFP_INVALID_ARGUMENT,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina /**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * Input/output error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @see sss_sifp_get_last_io_error() to get more information
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina SSS_SIFP_IO_ERROR,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina /** Internal error */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina SSS_SIFP_INTERNAL_ERROR,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina /** Operation not supported */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina SSS_SIFP_NOT_SUPPORTED,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina /** Attribute does not exist */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina SSS_SIFP_ATTR_MISSING,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina /** Attribute does not have any value set */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina SSS_SIFP_ATTR_NULL,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina /** Incorrect attribute type */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina SSS_SIFP_INCORRECT_TYPE,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina /** Always last */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina SSS_SIFP_ERROR_SENTINEL
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina} sss_sifp_error;
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * D-Bus object attribute
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinatypedef struct sss_sifp_attr sss_sifp_attr;
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * D-Bus object
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinatypedef struct sss_sifp_object {
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina char *name;
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina char *object_path;
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina char *interface;
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina sss_sifp_attr **attrs;
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina} sss_sifp_object;
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Initialize sss_sifp context using default allocator (malloc)
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_init(sss_sifp_ctx **_ctx);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Initialize sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] alloc_pvt Private data for allocation routine
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] alloc_func Function to allocate memory for the context, if
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * NULL malloc() is used
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] free_func Function to free the memory of the context, if
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * NULL free() is used
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_init_ex(void *alloc_pvt,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina sss_sifp_alloc_func *alloc_func,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina sss_sifp_free_func *free_func,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina sss_sifp_ctx **_ctx);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Return last error name from underlying D-Bus communication
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @return Error message or NULL if no error occurred during last D-Bus call.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinaconst char *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_get_last_io_error_name(sss_sifp_ctx *ctx);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Return last error message from underlying D-Bus communication
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @return Error message or NULL if no error occurred during last D-Bus call.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinaconst char *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_get_last_io_error_message(sss_sifp_ctx *ctx);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina/**
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina * @brief Translate error code into human readable message.
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina *
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina * @param[in] error sss_sifp error code
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina * @return Error message.
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina */
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březinaconst char *
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březinasss_sifp_strerr(sss_sifp_error error);
2a45f13e3139063d3a5842119e7377c8c98aea1dPavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Fetch selected attributes of given object.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] object_path D-Bus object path
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] interface D-Bus interface
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of desired attribute
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _attrs List of acquired attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_fetch_attr(sss_sifp_ctx *ctx,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *object_path,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *interface,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina sss_sifp_attr ***_attrs);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Fetch all attributes of given object.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] object_path D-Bus object path
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] interface D-Bus interface
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _attrs Acquired attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_fetch_all_attrs(sss_sifp_ctx *ctx,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *object_path,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *interface,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina sss_sifp_attr ***_attrs);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Fetch D-Bus object.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] object_path D-Bus object path
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] interface D-Bus interface
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _object Object and its attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_fetch_object(sss_sifp_ctx *ctx,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *object_path,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *interface,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina sss_sifp_object **_object);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its value.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output value
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_bool(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina bool *_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its value.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output value
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_int16(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina int16_t *_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its value.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output value
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_uint16(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina uint16_t *_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its value.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output value
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_int32(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina int32_t *_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its value.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output value
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_uint32(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina uint32_t *_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its value.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output value
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_int64(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina int64_t *_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its value.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output value
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_uint64(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina uint64_t *_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its value.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output value
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_string(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char **_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina/**
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina * @brief Find attribute in list and return its value.
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina *
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina * The dictionary is stored in dhash table, the values
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina * are pointers to NULL-terminated string array.
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina *
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina * @param[in] attrs Attributes
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina * @param[in] name Name of the attribute to find
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina * @param[out] _value Output value
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina */
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březinasss_sifp_error
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březinasss_sifp_find_attr_as_string_dict(sss_sifp_attr **attrs,
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina const char *name,
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina hash_table_t **_value);
efa6c1f75c4c18bcc148d6e7efd429c2d56499adPavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its values.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _num_values Number of values in the array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_bool_array(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina unsigned int *_num_values,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina bool **_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its values.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _num_values Number of values in the array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_int16_array(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina unsigned int *_num_values,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina int16_t **_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its values.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _num_values Number of values in the array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_uint16_array(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina unsigned int *_num_values,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina uint16_t **_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its values.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _num_values Number of values in the array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_int32_array(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina unsigned int *_num_values,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina int32_t **_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its values.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _num_values Number of values in the array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_uint32_array(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina unsigned int *_num_values,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina uint32_t **_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its values.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _num_values Number of values in the array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_int64_array(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina unsigned int *_num_values,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina int64_t **_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its values.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _num_values Number of values in the array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_uint64_array(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina unsigned int *_num_values,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina uint64_t **_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Find attribute in list and return its values.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] name Name of the attribute to find
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _num_values Number of values in the array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[out] _value Output array
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_error
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_find_attr_as_string_array(sss_sifp_attr **attrs,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char *name,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina unsigned int *_num_values,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina const char * const **_value);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Free sss_sifp context and set it to NULL.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in,out] _ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinavoid
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_free(sss_sifp_ctx **_ctx);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Free attribute list and set it to NULL.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in,out] _attrs Attributes
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinavoid
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_free_attrs(sss_sifp_ctx *ctx,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina sss_sifp_attr ***_attrs);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Free sss_sifp object and set it to NULL.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in,out] _object Object
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinavoid
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_free_object(sss_sifp_ctx *ctx,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina sss_sifp_object **_object);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Free string and set it to NULL.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in,out] _str String
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinavoid
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_free_string(sss_sifp_ctx *ctx,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina char **_str);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @brief Free array of strings and set it to NULL.
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina *
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in] ctx sss_sifp context
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @param[in,out] _str_array Array of strings
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinavoid
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březinasss_sifp_free_string_array(sss_sifp_ctx *ctx,
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina char ***_str_array);
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina/**
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina * @}
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina */
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina/**
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @defgroup common Most common use cases of SSSD InfoPipe responder.
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @{
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina */
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina/**
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @brief List names of available domains.
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina *
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[in] ctx sss_sifp context
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[out] _domains List of domain names
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina */
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březinasss_sifp_error
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březinasss_sifp_list_domains(sss_sifp_ctx *ctx,
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina char ***_domains);
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina/**
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @brief Fetch all information about domain by name.
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina *
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[in] ctx sss_sifp context
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[in] name Domain name
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[out] _domain Domain object
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina */
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březinasss_sifp_error
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březinasss_sifp_fetch_domain_by_name(sss_sifp_ctx *ctx,
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina const char *name,
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina sss_sifp_object **_domain);
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina/**
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @brief Fetch all information about user by uid.
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina *
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[in] ctx sss_sifp context
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[in] uid User ID
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[out] _user User object
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina */
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březinasss_sifp_error
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březinasss_sifp_fetch_user_by_uid(sss_sifp_ctx *ctx,
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina uid_t uid,
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina sss_sifp_object **_user);
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina/**
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @brief Fetch all information about user by name.
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina *
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[in] ctx sss_sifp context
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[in] name User name
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @param[out] _user User object
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina */
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březinasss_sifp_error
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březinasss_sifp_fetch_user_by_name(sss_sifp_ctx *ctx,
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina const char *name,
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina sss_sifp_object **_user);
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina/**
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina * @}
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina */
0bb98b7700b1b61f5b0a20b93279d5c2c391007fPavel Březina
931b39232b82be374256d8532d86903fe1d87bf2Pavel Březina#endif /* SSS_SIFP_H_ */