sss_simpleifp  1.13.0
sss_sifp.h
1 /*
2  Authors:
3  Pavel Březina <pbrezina@redhat.com>
4 
5  Copyright (C) 2014 Red Hat
6 
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 3 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 #ifndef SSS_SIFP_H_
22 #define SSS_SIFP_H_
23 
24 #include <stdint.h>
25 #include <stdbool.h>
26 #include <unistd.h>
27 #include <dhash.h>
28 
45 #define SSS_SIFP_IFP "org.freedesktop.sssd.infopipe"
46 
48 #define SSS_SIFP_IFACE_IFP SSS_SIFP_IFP
49 #define SSS_SIFP_IFACE_COMPONENTS "org.freedesktop.sssd.infopipe.Components"
50 #define SSS_SIFP_IFACE_SERVICES "org.freedesktop.sssd.infopipe.Services"
51 #define SSS_SIFP_IFACE_DOMAINS "org.freedesktop.sssd.infopipe.Domains"
52 #define SSS_SIFP_IFACE_USERS "org.freedesktop.sssd.infopipe.Users"
53 #define SSS_SIFP_IFACE_GROUPS "org.freedesktop.sssd.infopipe.Groups"
54 
62 typedef struct sss_sifp_ctx sss_sifp_ctx;
63 
67 typedef void (sss_sifp_free_func)(void *ptr, void *pvt);
68 typedef void *(sss_sifp_alloc_func)(size_t size, void *pvt);
69 
73 typedef enum sss_sifp_error {
76 
79 
82 
89 
92 
95 
98 
101 
104 
108 
113 
117 typedef struct sss_sifp_object {
118  char *name;
119  char *object_path;
120  char *interface;
121  sss_sifp_attr **attrs;
123 
131 
143 sss_sifp_init_ex(void *alloc_pvt,
144  sss_sifp_alloc_func *alloc_func,
145  sss_sifp_free_func *free_func,
146  sss_sifp_ctx **_ctx);
147 
154 const char *
156 
163 const char *
165 
177  const char *object_path,
178  const char *interface,
179  const char *name,
180  sss_sifp_attr ***_attrs);
181 
192  const char *object_path,
193  const char *interface,
194  sss_sifp_attr ***_attrs);
195 
206  const char *object_path,
207  const char *interface,
208  sss_sifp_object **_object);
209 
219  const char *name,
220  bool *_value);
221 
231  const char *name,
232  int16_t *_value);
233 
243  const char *name,
244  uint16_t *_value);
245 
255  const char *name,
256  int32_t *_value);
257 
267  const char *name,
268  uint32_t *_value);
269 
279  const char *name,
280  int64_t *_value);
281 
291  const char *name,
292  uint64_t *_value);
293 
303  const char *name,
304  const char **_value);
305 
318  const char *name,
319  hash_table_t **_value);
320 
331  const char *name,
332  unsigned int *_num_values,
333  bool **_value);
334 
345  const char *name,
346  unsigned int *_num_values,
347  int16_t **_value);
348 
359  const char *name,
360  unsigned int *_num_values,
361  uint16_t **_value);
362 
373  const char *name,
374  unsigned int *_num_values,
375  int32_t **_value);
376 
387  const char *name,
388  unsigned int *_num_values,
389  uint32_t **_value);
390 
401  const char *name,
402  unsigned int *_num_values,
403  int64_t **_value);
404 
415  const char *name,
416  unsigned int *_num_values,
417  uint64_t **_value);
418 
429  const char *name,
430  unsigned int *_num_values,
431  const char * const **_value);
432 
438 void
440 
447 void
449  sss_sifp_attr ***_attrs);
450 
457 void
459  sss_sifp_object **_object);
460 
467 void
469  char **_str);
470 
477 void
479  char ***_str_array);
480 
498  char ***_domains);
499 
509  const char *name,
510  sss_sifp_object **_domain);
511 
521  uid_t uid,
522  sss_sifp_object **_user);
523 
533  const char *name,
534  sss_sifp_object **_user);
535 
540 #endif /* SSS_SIFP_H_ */
Incorrect attribute type.
Definition: sss_sifp.h:103
sss_sifp_error sss_sifp_find_attr_as_uint16(sss_sifp_attr **attrs, const char *name, uint16_t *_value)
Find attribute in list and return its value.
sss_sifp_error sss_sifp_fetch_attr(sss_sifp_ctx *ctx, const char *object_path, const char *interface, const char *name, sss_sifp_attr ***_attrs)
Fetch selected attributes of given object.
sss_sifp_error sss_sifp_find_attr_as_bool_array(sss_sifp_attr **attrs, const char *name, unsigned int *_num_values, bool **_value)
Find attribute in list and return its values.
void sss_sifp_free_string(sss_sifp_ctx *ctx, char **_str)
Free string and set it to NULL.
Attribute does not have any value set.
Definition: sss_sifp.h:100
D-Bus object.
Definition: sss_sifp.h:117
sss_sifp_error sss_sifp_find_attr_as_int64_array(sss_sifp_attr **attrs, const char *name, unsigned int *_num_values, int64_t **_value)
Find attribute in list and return its values.
sss_sifp_error sss_sifp_find_attr_as_string_array(sss_sifp_attr **attrs, const char *name, unsigned int *_num_values, const char *const **_value)
Find attribute in list and return its values.
sss_sifp_error sss_sifp_find_attr_as_int64(sss_sifp_attr **attrs, const char *name, int64_t *_value)
Find attribute in list and return its value.
sss_sifp_error sss_sifp_find_attr_as_bool(sss_sifp_attr **attrs, const char *name, bool *_value)
Find attribute in list and return its value.
Operation not supported.
Definition: sss_sifp.h:94
sss_sifp_error sss_sifp_fetch_all_attrs(sss_sifp_ctx *ctx, const char *object_path, const char *interface, sss_sifp_attr ***_attrs)
Fetch all attributes of given object.
Input/output error.
Definition: sss_sifp.h:88
Attribute does not exist.
Definition: sss_sifp.h:97
sss_sifp_error sss_sifp_fetch_user_by_uid(sss_sifp_ctx *ctx, uid_t uid, sss_sifp_object **_user)
Fetch all information about user by uid.
Invalid argument.
Definition: sss_sifp.h:81
sss_sifp_error sss_sifp_find_attr_as_int16_array(sss_sifp_attr **attrs, const char *name, unsigned int *_num_values, int16_t **_value)
Find attribute in list and return its values.
void( sss_sifp_free_func)(void *ptr, void *pvt)
Typedef for memory allocation functions.
Definition: sss_sifp.h:67
sss_sifp_error sss_sifp_find_attr_as_string_dict(sss_sifp_attr **attrs, const char *name, hash_table_t **_value)
Find attribute in list and return its value.
sss_sifp_error
Error codes used by libsss_sifp.
Definition: sss_sifp.h:73
sss_sifp_error sss_sifp_fetch_domain_by_name(sss_sifp_ctx *ctx, const char *name, sss_sifp_object **_domain)
Fetch all information about domain by name.
sss_sifp_error sss_sifp_find_attr_as_int32(sss_sifp_attr **attrs, const char *name, int32_t *_value)
Find attribute in list and return its value.
sss_sifp_error sss_sifp_init(sss_sifp_ctx **_ctx)
Initialize sss_sifp context using default allocator (malloc)
sss_sifp_error sss_sifp_find_attr_as_uint32_array(sss_sifp_attr **attrs, const char *name, unsigned int *_num_values, uint32_t **_value)
Find attribute in list and return its values.
Success.
Definition: sss_sifp.h:75
sss_sifp_error sss_sifp_find_attr_as_int16(sss_sifp_attr **attrs, const char *name, int16_t *_value)
Find attribute in list and return its value.
const char * sss_sifp_get_last_io_error_name(sss_sifp_ctx *ctx)
Return last error name from underlying D-Bus communication.
const char * sss_sifp_get_last_io_error_message(sss_sifp_ctx *ctx)
Return last error message from underlying D-Bus communication.
sss_sifp_error sss_sifp_find_attr_as_uint32(sss_sifp_attr **attrs, const char *name, uint32_t *_value)
Find attribute in list and return its value.
sss_sifp_error sss_sifp_init_ex(void *alloc_pvt, sss_sifp_alloc_func *alloc_func, sss_sifp_free_func *free_func, sss_sifp_ctx **_ctx)
Initialize sss_sifp context.
struct sss_sifp_ctx sss_sifp_ctx
Opaque libsss_sifp context.
Definition: sss_sifp.h:62
void sss_sifp_free_attrs(sss_sifp_ctx *ctx, sss_sifp_attr ***_attrs)
Free attribute list and set it to NULL.
sss_sifp_error sss_sifp_fetch_object(sss_sifp_ctx *ctx, const char *object_path, const char *interface, sss_sifp_object **_object)
Fetch D-Bus object.
sss_sifp_error sss_sifp_find_attr_as_int32_array(sss_sifp_attr **attrs, const char *name, unsigned int *_num_values, int32_t **_value)
Find attribute in list and return its values.
sss_sifp_error sss_sifp_find_attr_as_string(sss_sifp_attr **attrs, const char *name, const char **_value)
Find attribute in list and return its value.
sss_sifp_error sss_sifp_find_attr_as_uint64_array(sss_sifp_attr **attrs, const char *name, unsigned int *_num_values, uint64_t **_value)
Find attribute in list and return its values.
void sss_sifp_free(sss_sifp_ctx **_ctx)
Free sss_sifp context and set it to NULL.
void sss_sifp_free_object(sss_sifp_ctx *ctx, sss_sifp_object **_object)
Free sss_sifp object and set it to NULL.
struct sss_sifp_object sss_sifp_object
D-Bus object.
struct sss_sifp_attr sss_sifp_attr
D-Bus object attribute.
Definition: sss_sifp.h:112
sss_sifp_error sss_sifp_list_domains(sss_sifp_ctx *ctx, char ***_domains)
List names of available domains.
Internal error.
Definition: sss_sifp.h:91
sss_sifp_error sss_sifp_find_attr_as_uint16_array(sss_sifp_attr **attrs, const char *name, unsigned int *_num_values, uint16_t **_value)
Find attribute in list and return its values.
sss_sifp_error sss_sifp_fetch_user_by_name(sss_sifp_ctx *ctx, const char *name, sss_sifp_object **_user)
Fetch all information about user by name.
void sss_sifp_free_string_array(sss_sifp_ctx *ctx, char ***_str_array)
Free array of strings and set it to NULL.
sss_sifp_error sss_sifp_find_attr_as_uint64(sss_sifp_attr **attrs, const char *name, uint64_t *_value)
Find attribute in list and return its value.
Always last.
Definition: sss_sifp.h:106
Ran out of memory during processing.
Definition: sss_sifp.h:78