1a38107941725211e7c3f051f7a8f5e12199f03acmaeder/*
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Authors:
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens Elkner Pavel Březina <pbrezina@redhat.com>
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance Copyright (C) 2014 Red Hat
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu This program is free software; you can redistribute it and/or modify
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance it under the terms of the GNU General Public License as published by
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu the Free Software Foundation; either version 3 of the License, or
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu (at your option) any later version.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu This program is distributed in the hope that it will be useful,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu but WITHOUT ANY WARRANTY; without even the implied warranty of
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19e01e1a7e319063434bd86c8ecbc5f241ef9993Felix Gabriel Mance GNU General Public License for more details.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski You should have received a copy of the GNU General Public License
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu along with this program. If not, see <http://www.gnu.org/licenses/>.
a604cbad8e2202147b5c6bb9f2e06ae61162d654Felix Gabriel Mance*/
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu
be2439588008221e691321fdf4f75432cfb72878Felix Gabriel Mance#ifndef SSS_SIFP_DBUS_H_
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu#define SSS_SIFP_DBUS_H_
fc05327b875b5723b6c17849b83477f29ec12c90Felix Gabriel Mance
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu#include <sss_sifp.h>
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu#include <dbus/dbus.h>
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu/**
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maeder * @defgroup sss_sifp_dbus Advanced InfoPipe method calls.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu *
e0f1794e365dd347e97b37d7d22b2fce27296fa1Christian Maeder * Functions in this module provide a way to reuse sss_sifp connection
424860079d47bf490fa98d5d7498096a0447c569mcodescu * to the SSSD's InfoPipe responder.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu *
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * This allows the caller to send more sophisticated messages to the InfoPipe
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder * and to use both sss_sifp and D-Bus without the need of maintaining two
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder * separate D-Bus connections.
32bbac77828be0233953f8fe476edb0a9585408dChristian Maeder *
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * However, these functions require the caller to understand the D-Bus
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * bindings from libdbus.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu *
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @{
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu */
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu/**
27fdf879983dd28e211b41f3be6c0e930b7c816bFelix Gabriel Mance * @brief Create a new method call message for SSSD InfoPipe bus.
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance *
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder * @param[in] object_path D-Bus object path
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] interface D-Bus interface
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] method D-Bus method
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu *
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @return D-Bus message.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu */
b84c87f199dc287d235d7dad6ea344f6912ef531Christian MaederDBusMessage *
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiusss_sifp_create_message(const char *object_path,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu const char *interface,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu const char *method);
be00381168b3f10192afabbba136fb06d3a9f358Christian Maeder
be00381168b3f10192afabbba136fb06d3a9f358Christian Maeder/**
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @brief Send D-Bus message to SSSD InfoPipe bus with 5 seconds timeout.
27fdf879983dd28e211b41f3be6c0e930b7c816bFelix Gabriel Mance *
7852de3551fc797566ee71165bafe05b6d81728cnotanartist * @param[in] ctx sss_sifp context
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] msg D-Bus message
27fdf879983dd28e211b41f3be6c0e930b7c816bFelix Gabriel Mance * @param[in] _reply D-Bus reply, may be NULL if the caller is not interested
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu *
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @return D-Bus message.
27fdf879983dd28e211b41f3be6c0e930b7c816bFelix Gabriel Mance */
d0f58d27c2536eba454d8f77de8617bc6a2c99cdFelix Gabriel Mancesss_sifp_error
d0f58d27c2536eba454d8f77de8617bc6a2c99cdFelix Gabriel Mancesss_sifp_send_message(sss_sifp_ctx *ctx,
d0f58d27c2536eba454d8f77de8617bc6a2c99cdFelix Gabriel Mance DBusMessage *msg,
d0f58d27c2536eba454d8f77de8617bc6a2c99cdFelix Gabriel Mance DBusMessage **_reply);
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu/**
27fdf879983dd28e211b41f3be6c0e930b7c816bFelix Gabriel Mance * @brief Send D-Bus message to SSSD InfoPipe bus.
424860079d47bf490fa98d5d7498096a0447c569mcodescu *
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Mance * @param[in] ctx sss_sifp context
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Mance * @param[in] msg D-Bus message
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maeder * @param[in] timeout Timeout
424860079d47bf490fa98d5d7498096a0447c569mcodescu * @param[in] _reply D-Bus reply, may be NULL if the caller is not interested
424860079d47bf490fa98d5d7498096a0447c569mcodescu *
424860079d47bf490fa98d5d7498096a0447c569mcodescu * @return D-Bus message.
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Mance */
d6d81ead61a5f9fb7d047e623f7898e730c258camcodescusss_sifp_error
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiusss_sifp_send_message_ex(sss_sifp_ctx *ctx,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu DBusMessage *msg,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu int timeout,
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Mance DBusMessage **_reply);
7852de3551fc797566ee71165bafe05b6d81728cnotanartist
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu/**
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Mance * @brief List objects that satisfies given conditions. This routine will
9475501a6acf48434052d9e6f4a05ed6681eaaabFrancisc Nicolae Bungiu * invoke List<method> D-Bus method on given interface and object path. If
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * no interface or object path is given, /org/freedesktop/sssd/infopipe and
7852de3551fc797566ee71165bafe05b6d81728cnotanartist * org.freedesktop.sssd.infopipe is used. Arguments to this method are given
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski * as standard variadic D-Bus arguments.
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski *
424860079d47bf490fa98d5d7498096a0447c569mcodescu * @param[in] ctx sss_sifp context
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maeder * @param[in] object_path D-Bus object path
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maeder * @param[in] interface D-Bus interface
424860079d47bf490fa98d5d7498096a0447c569mcodescu * @param[in] method D-Bus method to call without the 'List' prefix
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maeder * @param[out] _object_paths List of object paths
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maeder * @param[in] first_arg_type Type of the first D-Bus argument
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] ... D-Bus arguments
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu */
d0f58d27c2536eba454d8f77de8617bc6a2c99cdFelix Gabriel Mancesss_sifp_error
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Mancesss_sifp_invoke_list_ex(sss_sifp_ctx *ctx,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu const char *object_path,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu const char *interface,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu const char *method,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu char ***_object_paths,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu int first_arg_type,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ...);
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu/**
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @brief List objects that satisfies given conditions. This routine will
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * invoke List<method> D-Bus method on SSSD InfoPipe interface. Arguments
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder * to this method are given as standard variadic D-Bus arguments.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu *
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder * @param[in] ctx sss_sifp context
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder * @param[in] method D-Bus method to call without the 'List' prefix
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[out] _object_paths List of object paths
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] first_arg_type Type of the first D-Bus argument
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] ... D-Bus arguments
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu */
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroedersss_sifp_error
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiusss_sifp_invoke_list(sss_sifp_ctx *ctx,
31e9d2a02e15b7dbc157e0d3fb3b84f6c8666482Christian Maeder const char *method,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu char ***_object_paths,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu int first_arg_type,
656f17ae9b7610ff2de1b6eedeeadea0c3bcdc8dChristian Maeder ...);
d3cb3401882f6956de016f8eecbec1cd3b868acbFelix Gabriel Mance
d3cb3401882f6956de016f8eecbec1cd3b868acbFelix Gabriel Mance/**
d3cb3401882f6956de016f8eecbec1cd3b868acbFelix Gabriel Mance * @brief Find single object that satisfies given conditions. This routine will
d3cb3401882f6956de016f8eecbec1cd3b868acbFelix Gabriel Mance * invoke Find<method> D-Bus method on given interface and object path. If
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * no interface or object path is given, /org/freedesktop/sssd/infopipe and
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * org.freedesktop.sssd.infopipe is used. Arguments to this method are given
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * as standard variadic D-Bus arguments.
7852de3551fc797566ee71165bafe05b6d81728cnotanartist *
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] ctx sss_sifp context
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] object_path D-Bus object path
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] interface D-Bus interface
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] method D-Bus method to call without the 'Find' prefix
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[out] _object_path Object path
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @param[in] first_arg_type Type of the first D-Bus argument
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maeder * @param[in] ... D-Bus arguments
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu */
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiusss_sifp_error
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiusss_sifp_invoke_find_ex(sss_sifp_ctx *ctx,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu const char *object_path,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu const char *interface,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu const char *method,
06acd8a23b2f06e7b2373d53f738cf56c7f03223Francisc Nicolae Bungiu char **_object_path,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu int first_arg_type,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ...);
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu/**
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu * @brief Find single object that satisfies given conditions. This routine will
7852de3551fc797566ee71165bafe05b6d81728cnotanartist * invoke Find<method> D-Bus method on SSSD InfoPipe interface. Arguments
32bbac77828be0233953f8fe476edb0a9585408dChristian Maeder * to this method are given as standard variadic D-Bus arguments.
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski *
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski * @param[in] ctx sss_sifp context
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski * @param[in] method D-Bus method to call without the 'Find' prefix
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski * @param[out] _object_path Object path
32bbac77828be0233953f8fe476edb0a9585408dChristian Maeder * @param[in] first_arg_type Type of the first D-Bus argument
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski * @param[in] ... D-Bus arguments
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu */
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maedersss_sifp_error
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maedersss_sifp_invoke_find(sss_sifp_ctx *ctx,
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder const char *method,
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder char **_object_path,
b84c87f199dc287d235d7dad6ea344f6912ef531Christian Maeder int first_arg_type,
7852de3551fc797566ee71165bafe05b6d81728cnotanartist ...);
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder/**
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder * @}
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder */
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder#endif /* SSS_SIFP_DBUS_H_ */
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder