2013-03-19 20:03:16 +01:00
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
# ifndef foosdbushfoo
# define foosdbushfoo
/***
This file is part of systemd .
Copyright 2013 Lennart Poettering
systemd is free software ; you can redistribute it and / or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation ; either version 2.1 of the License , or
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Lesser General Public License for more details .
You should have received a copy of the GNU Lesser General Public License
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
# include <inttypes.h>
# include <sys/types.h>
2013-11-11 16:26:12 +01:00
# include <sys/uio.h>
2013-03-19 20:03:16 +01:00
2013-10-16 06:10:04 +02:00
# include "sd-id128.h"
# include "sd-event.h"
# include "sd-memfd.h"
2013-10-16 17:00:13 +02:00
# include "_sd-common.h"
2013-03-19 20:03:16 +01:00
2013-11-07 16:44:48 +01:00
_SD_BEGIN_DECLARATIONS ;
2013-03-29 23:20:32 +01:00
2013-10-09 02:37:10 +02:00
/* Types */
2013-03-19 20:03:16 +01:00
typedef struct sd_bus sd_bus ;
typedef struct sd_bus_message sd_bus_message ;
2013-11-28 17:50:02 +01:00
typedef struct sd_bus_creds sd_bus_creds ;
2014-03-03 01:33:45 +01:00
typedef struct sd_bus_track sd_bus_track ;
2013-03-19 20:03:16 +01:00
typedef struct {
const char * name ;
const char * message ;
2013-11-30 19:45:32 +01:00
int _need_free ;
2013-03-19 20:03:16 +01:00
} sd_bus_error ;
2013-11-28 17:50:02 +01:00
/* Flags */
enum {
2013-11-30 04:14:10 +01:00
SD_BUS_CREDS_PID = 1ULL < < 0 ,
SD_BUS_CREDS_PID_STARTTIME = 1ULL < < 1 ,
SD_BUS_CREDS_TID = 1ULL < < 2 ,
SD_BUS_CREDS_UID = 1ULL < < 3 ,
SD_BUS_CREDS_GID = 1ULL < < 4 ,
2013-11-28 17:50:02 +01:00
SD_BUS_CREDS_COMM = 1ULL < < 5 ,
SD_BUS_CREDS_TID_COMM = 1ULL < < 6 ,
SD_BUS_CREDS_EXE = 1ULL < < 7 ,
SD_BUS_CREDS_CMDLINE = 1ULL < < 8 ,
SD_BUS_CREDS_CGROUP = 1ULL < < 9 ,
SD_BUS_CREDS_UNIT = 1ULL < < 10 ,
SD_BUS_CREDS_USER_UNIT = 1ULL < < 11 ,
SD_BUS_CREDS_SLICE = 1ULL < < 12 ,
SD_BUS_CREDS_SESSION = 1ULL < < 13 ,
SD_BUS_CREDS_OWNER_UID = 1ULL < < 14 ,
SD_BUS_CREDS_EFFECTIVE_CAPS = 1ULL < < 15 ,
SD_BUS_CREDS_PERMITTED_CAPS = 1ULL < < 16 ,
SD_BUS_CREDS_INHERITABLE_CAPS = 1ULL < < 17 ,
SD_BUS_CREDS_BOUNDING_CAPS = 1ULL < < 18 ,
SD_BUS_CREDS_SELINUX_CONTEXT = 1ULL < < 19 ,
SD_BUS_CREDS_AUDIT_SESSION_ID = 1ULL < < 20 ,
SD_BUS_CREDS_AUDIT_LOGIN_UID = 1ULL < < 21 ,
2013-11-30 04:14:10 +01:00
SD_BUS_CREDS_UNIQUE_NAME = 1ULL < < 22 ,
SD_BUS_CREDS_WELL_KNOWN_NAMES = 1ULL < < 23 ,
2014-01-22 16:28:58 +01:00
SD_BUS_CREDS_CONNECTION_NAME = 1ULL < < 24 ,
_SD_BUS_CREDS_ALL = ( 1ULL < < 25 ) - 1 ,
2013-11-28 17:50:02 +01:00
} ;
2013-12-12 05:55:58 +01:00
enum {
SD_BUS_NAME_REPLACE_EXISTING = 1ULL < < 0 ,
SD_BUS_NAME_ALLOW_REPLACEMENT = 1ULL < < 1 ,
SD_BUS_NAME_QUEUE = 1ULL < < 2 ,
} ;
2013-10-09 02:37:10 +02:00
/* Callbacks */
2013-11-21 19:34:37 +01:00
typedef int ( * sd_bus_message_handler_t ) ( sd_bus * bus , sd_bus_message * m , void * userdata , sd_bus_error * ret_error ) ;
typedef int ( * sd_bus_property_get_t ) ( sd_bus * bus , const char * path , const char * interface , const char * property , sd_bus_message * reply , void * userdata , sd_bus_error * ret_error ) ;
typedef int ( * sd_bus_property_set_t ) ( sd_bus * bus , const char * path , const char * interface , const char * property , sd_bus_message * value , void * userdata , sd_bus_error * ret_error ) ;
2013-11-22 01:14:57 +01:00
typedef int ( * sd_bus_object_find_t ) ( sd_bus * bus , const char * path , const char * interface , void * userdata , void * * ret_found , sd_bus_error * ret_error ) ;
typedef int ( * sd_bus_node_enumerator_t ) ( sd_bus * bus , const char * path , void * userdata , char * * * ret_nodes , sd_bus_error * ret_error ) ;
2014-03-03 01:33:45 +01:00
typedef int ( * sd_bus_track_handler_t ) ( sd_bus_track * track , void * userdata ) ;
2013-10-09 02:37:10 +02:00
# include "sd-bus-protocol.h"
# include "sd-bus-vtable.h"
2013-03-19 20:03:16 +01:00
/* Connections */
2014-01-28 12:33:32 +01:00
int sd_bus_default ( sd_bus * * ret ) ;
2013-11-11 22:00:48 +01:00
int sd_bus_default_user ( sd_bus * * ret ) ;
int sd_bus_default_system ( sd_bus * * ret ) ;
2014-01-27 21:34:54 +01:00
int sd_bus_open ( sd_bus * * ret ) ;
2013-03-19 20:03:16 +01:00
int sd_bus_open_user ( sd_bus * * ret ) ;
2013-10-30 13:52:40 +01:00
int sd_bus_open_system ( sd_bus * * ret ) ;
2014-02-18 19:11:08 +01:00
int sd_bus_open_system_remote ( sd_bus * * ret , const char * host ) ;
int sd_bus_open_system_container ( sd_bus * * ret , const char * machine ) ;
2013-03-24 23:55:03 +01:00
int sd_bus_new ( sd_bus * * ret ) ;
int sd_bus_set_address ( sd_bus * bus , const char * address ) ;
2013-03-31 20:19:18 +02:00
int sd_bus_set_fd ( sd_bus * bus , int input_fd , int output_fd ) ;
2013-03-25 02:30:32 +01:00
int sd_bus_set_exec ( sd_bus * bus , const char * path , char * const argv [ ] ) ;
2013-03-26 00:36:43 +01:00
int sd_bus_set_bus_client ( sd_bus * bus , int b ) ;
2013-03-30 15:21:06 +01:00
int sd_bus_set_server ( sd_bus * bus , int b , sd_id128_t server_id ) ;
int sd_bus_set_anonymous ( sd_bus * bus , int b ) ;
2013-12-10 17:41:39 +01:00
int sd_bus_set_trusted ( sd_bus * bus , int b ) ;
2014-01-22 16:09:59 +01:00
int sd_bus_set_name ( sd_bus * bus , const char * name ) ;
2013-05-17 04:25:56 +02:00
int sd_bus_negotiate_fds ( sd_bus * bus , int b ) ;
2014-01-22 11:21:51 +01:00
int sd_bus_negotiate_timestamp ( sd_bus * bus , int b ) ;
int sd_bus_negotiate_creds ( sd_bus * bus , uint64_t creds_mask ) ;
2013-03-24 23:55:03 +01:00
int sd_bus_start ( sd_bus * ret ) ;
2013-12-20 23:25:43 +01:00
int sd_bus_try_close ( sd_bus * bus ) ;
2013-03-19 20:03:16 +01:00
void sd_bus_close ( sd_bus * bus ) ;
sd_bus * sd_bus_ref ( sd_bus * bus ) ;
sd_bus * sd_bus_unref ( sd_bus * bus ) ;
2013-03-21 22:50:25 +01:00
int sd_bus_is_open ( sd_bus * bus ) ;
2013-03-19 20:03:16 +01:00
int sd_bus_can_send ( sd_bus * bus , char type ) ;
2013-03-31 16:46:21 +02:00
int sd_bus_get_server_id ( sd_bus * bus , sd_id128_t * peer ) ;
2013-11-28 17:50:02 +01:00
int sd_bus_get_peer_creds ( sd_bus * bus , uint64_t creds_mask , sd_bus_creds * * ret ) ;
2014-01-22 16:09:59 +01:00
int sd_bus_get_name ( sd_bus * bus , const char * * name ) ;
2014-01-28 12:33:32 +01:00
int sd_bus_get_tid ( sd_bus * bus , pid_t * tid ) ;
2013-03-19 20:03:16 +01:00
2013-12-25 17:46:45 +01:00
int sd_bus_send ( sd_bus * bus , sd_bus_message * m , uint64_t * cookie ) ;
int sd_bus_send_to ( sd_bus * bus , sd_bus_message * m , const char * destination , uint64_t * cookie ) ;
2013-11-21 19:34:37 +01:00
int sd_bus_call ( sd_bus * bus , sd_bus_message * m , uint64_t usec , sd_bus_error * ret_error , sd_bus_message * * reply ) ;
2013-12-25 17:46:45 +01:00
int sd_bus_call_async ( sd_bus * bus , sd_bus_message * m , sd_bus_message_handler_t callback , void * userdata , uint64_t usec , uint64_t * cookie ) ;
int sd_bus_call_async_cancel ( sd_bus * bus , uint64_t cookie ) ;
2013-03-19 20:03:16 +01:00
int sd_bus_get_fd ( sd_bus * bus ) ;
int sd_bus_get_events ( sd_bus * bus ) ;
2013-03-21 22:50:25 +01:00
int sd_bus_get_timeout ( sd_bus * bus , uint64_t * timeout_usec ) ;
2013-03-19 20:03:16 +01:00
int sd_bus_process ( sd_bus * bus , sd_bus_message * * r ) ;
2014-01-22 20:26:58 +01:00
int sd_bus_process_priority ( sd_bus * bus , int64_t max_priority , sd_bus_message * * r ) ;
2013-03-19 20:03:16 +01:00
int sd_bus_wait ( sd_bus * bus , uint64_t timeout_usec ) ;
int sd_bus_flush ( sd_bus * bus ) ;
2013-11-05 20:51:49 +01:00
sd_bus_message * sd_bus_get_current ( sd_bus * bus ) ;
2013-10-16 06:10:04 +02:00
int sd_bus_attach_event ( sd_bus * bus , sd_event * e , int priority ) ;
int sd_bus_detach_event ( sd_bus * bus ) ;
2013-11-22 01:21:59 +01:00
sd_event * sd_bus_get_event ( sd_bus * bus ) ;
2013-10-16 06:10:04 +02:00
2013-03-31 16:26:14 +02:00
int sd_bus_add_filter ( sd_bus * bus , sd_bus_message_handler_t callback , void * userdata ) ;
int sd_bus_remove_filter ( sd_bus * bus , sd_bus_message_handler_t callback , void * userdata ) ;
2013-03-19 20:03:16 +01:00
2013-10-09 02:37:10 +02:00
int sd_bus_add_match ( sd_bus * bus , const char * match , sd_bus_message_handler_t callback , void * userdata ) ;
int sd_bus_remove_match ( sd_bus * bus , const char * match , sd_bus_message_handler_t callback , void * userdata ) ;
2013-03-31 16:26:14 +02:00
int sd_bus_add_object ( sd_bus * bus , const char * path , sd_bus_message_handler_t callback , void * userdata ) ;
int sd_bus_remove_object ( sd_bus * bus , const char * path , sd_bus_message_handler_t callback , void * userdata ) ;
2013-03-22 05:58:47 +01:00
2013-03-31 16:26:14 +02:00
int sd_bus_add_fallback ( sd_bus * bus , const char * prefix , sd_bus_message_handler_t callback , void * userdata ) ;
int sd_bus_remove_fallback ( sd_bus * bus , const char * prefix , sd_bus_message_handler_t callback , void * userdata ) ;
2013-03-22 05:58:47 +01:00
2013-10-09 02:37:10 +02:00
int sd_bus_add_object_vtable ( sd_bus * bus , const char * path , const char * interface , const sd_bus_vtable * vtable , void * userdata ) ;
2013-11-19 21:12:59 +01:00
int sd_bus_remove_object_vtable ( sd_bus * bus , const char * path , const char * interface , const sd_bus_vtable * vtable , void * userdata ) ;
2013-03-31 16:16:37 +02:00
2013-10-09 02:37:10 +02:00
int sd_bus_add_fallback_vtable ( sd_bus * bus , const char * path , const char * interface , const sd_bus_vtable * vtable , sd_bus_object_find_t find , void * userdata ) ;
2013-11-19 21:12:59 +01:00
int sd_bus_remove_fallback_vtable ( sd_bus * bus , const char * path , const char * interface , const sd_bus_vtable * vtable , sd_bus_object_find_t find , void * userdata ) ;
2013-03-19 20:03:16 +01:00
2013-10-09 02:37:10 +02:00
int sd_bus_add_node_enumerator ( sd_bus * bus , const char * path , sd_bus_node_enumerator_t callback , void * userdata ) ;
int sd_bus_remove_node_enumerator ( sd_bus * bus , const char * path , sd_bus_node_enumerator_t callback , void * userdata ) ;
int sd_bus_add_object_manager ( sd_bus * bus , const char * path ) ;
int sd_bus_remove_object_manager ( sd_bus * bus , const char * path ) ;
/* Message object */
2013-11-28 20:41:55 +01:00
2014-02-19 23:54:58 +01:00
int sd_bus_message_new_signal ( sd_bus * bus , sd_bus_message * * m , const char * path , const char * interface , const char * member ) ;
int sd_bus_message_new_method_call ( sd_bus * bus , sd_bus_message * * m , const char * destination , const char * path , const char * interface , const char * member ) ;
2013-11-21 01:51:16 +01:00
int sd_bus_message_new_method_return ( sd_bus_message * call , sd_bus_message * * m ) ;
2014-02-19 23:54:58 +01:00
int sd_bus_message_new_method_error ( sd_bus_message * call , sd_bus_message * * m , const sd_bus_error * e ) ;
2013-12-28 14:39:12 +01:00
int sd_bus_message_new_method_errorf ( sd_bus_message * call , sd_bus_message * * m , const char * name , const char * format , . . . ) _sd_printf_ ( 4 , 5 ) ;
2014-02-19 23:54:58 +01:00
int sd_bus_message_new_method_errno ( sd_bus_message * call , sd_bus_message * * m , int error , const sd_bus_error * e ) ;
2013-12-28 14:39:12 +01:00
int sd_bus_message_new_method_errnof ( sd_bus_message * call , sd_bus_message * * m , int error , const char * format , . . . ) _sd_printf_ ( 4 , 5 ) ;
2013-03-19 20:03:16 +01:00
sd_bus_message * sd_bus_message_ref ( sd_bus_message * m ) ;
sd_bus_message * sd_bus_message_unref ( sd_bus_message * m ) ;
int sd_bus_message_get_type ( sd_bus_message * m , uint8_t * type ) ;
2013-12-25 17:46:45 +01:00
int sd_bus_message_get_cookie ( sd_bus_message * m , uint64_t * cookie ) ;
int sd_bus_message_get_reply_cookie ( sd_bus_message * m , uint64_t * cookie ) ;
2014-01-22 20:45:05 +01:00
int sd_bus_message_get_expect_reply ( sd_bus_message * m ) ;
int sd_bus_message_get_auto_start ( sd_bus_message * m ) ;
2014-01-22 20:01:23 +01:00
int sd_bus_message_get_priority ( sd_bus_message * m , int64_t * priority ) ;
2013-03-19 20:03:16 +01:00
2013-10-16 06:10:04 +02:00
const char * sd_bus_message_get_signature ( sd_bus_message * m , int complete ) ;
2013-03-19 20:03:16 +01:00
const char * sd_bus_message_get_path ( sd_bus_message * m ) ;
const char * sd_bus_message_get_interface ( sd_bus_message * m ) ;
const char * sd_bus_message_get_member ( sd_bus_message * m ) ;
const char * sd_bus_message_get_destination ( sd_bus_message * m ) ;
const char * sd_bus_message_get_sender ( sd_bus_message * m ) ;
const sd_bus_error * sd_bus_message_get_error ( sd_bus_message * m ) ;
2013-10-16 06:10:04 +02:00
int sd_bus_message_get_errno ( sd_bus_message * m ) ;
2013-03-19 20:03:16 +01:00
2014-01-22 11:25:39 +01:00
int sd_bus_message_get_monotonic_usec ( sd_bus_message * m , uint64_t * usec ) ;
int sd_bus_message_get_realtime_usec ( sd_bus_message * m , uint64_t * usec ) ;
2014-01-22 10:57:12 +01:00
int sd_bus_message_get_seqnum ( sd_bus_message * m , uint64_t * seqnum ) ;
2014-01-28 12:33:32 +01:00
sd_bus * sd_bus_message_get_bus ( sd_bus_message * m ) ;
2013-11-28 17:50:02 +01:00
sd_bus_creds * sd_bus_message_get_creds ( sd_bus_message * m ) ; /* do not unref the result */
2013-03-19 20:03:16 +01:00
int sd_bus_message_is_signal ( sd_bus_message * m , const char * interface , const char * member ) ;
int sd_bus_message_is_method_call ( sd_bus_message * m , const char * interface , const char * member ) ;
int sd_bus_message_is_method_error ( sd_bus_message * m , const char * name ) ;
2014-01-22 20:45:05 +01:00
int sd_bus_message_set_expect_reply ( sd_bus_message * m , int b ) ;
int sd_bus_message_set_auto_start ( sd_bus_message * m , int b ) ;
2013-03-19 20:03:16 +01:00
int sd_bus_message_set_destination ( sd_bus_message * m , const char * destination ) ;
2014-01-22 20:01:23 +01:00
int sd_bus_message_set_priority ( sd_bus_message * m , int64_t priority ) ;
2013-03-19 20:03:16 +01:00
int sd_bus_message_append ( sd_bus_message * m , const char * types , . . . ) ;
int sd_bus_message_append_basic ( sd_bus_message * m , char type , const void * p ) ;
2013-05-10 01:12:15 +02:00
int sd_bus_message_append_array ( sd_bus_message * m , char type , const void * ptr , size_t size ) ;
int sd_bus_message_append_array_space ( sd_bus_message * m , char type , size_t size , void * * ptr ) ;
2013-11-11 16:26:12 +01:00
int sd_bus_message_append_array_iovec ( sd_bus_message * m , char type , const struct iovec * iov , unsigned n ) ;
2013-05-15 19:45:05 +02:00
int sd_bus_message_append_array_memfd ( sd_bus_message * m , char type , sd_memfd * memfd ) ;
2013-05-10 01:12:15 +02:00
int sd_bus_message_append_string_space ( sd_bus_message * m , size_t size , char * * s ) ;
2013-11-11 16:26:12 +01:00
int sd_bus_message_append_string_iovec ( sd_bus_message * m , const struct iovec * iov , unsigned n ) ;
2013-05-15 19:45:05 +02:00
int sd_bus_message_append_string_memfd ( sd_bus_message * m , sd_memfd * memfd ) ;
2013-10-11 23:02:47 +02:00
int sd_bus_message_append_strv ( sd_bus_message * m , char * * l ) ;
2013-03-19 20:03:16 +01:00
int sd_bus_message_open_container ( sd_bus_message * m , char type , const char * contents ) ;
int sd_bus_message_close_container ( sd_bus_message * m ) ;
2013-10-29 19:30:55 +01:00
int sd_bus_message_copy ( sd_bus_message * m , sd_bus_message * source , int all ) ;
2013-03-19 20:03:16 +01:00
int sd_bus_message_read ( sd_bus_message * m , const char * types , . . . ) ;
2013-03-20 03:15:03 +01:00
int sd_bus_message_read_basic ( sd_bus_message * m , char type , void * p ) ;
2013-05-10 01:12:15 +02:00
int sd_bus_message_read_array ( sd_bus_message * m , char type , const void * * ptr , size_t * size ) ;
2013-11-07 19:28:54 +01:00
int sd_bus_message_read_strv ( sd_bus_message * m , char * * * l ) ; /* free the result! */
2013-11-05 02:25:24 +01:00
int sd_bus_message_skip ( sd_bus_message * m , const char * types ) ;
2013-03-20 03:15:03 +01:00
int sd_bus_message_enter_container ( sd_bus_message * m , char type , const char * contents ) ;
int sd_bus_message_exit_container ( sd_bus_message * m ) ;
int sd_bus_message_peek_type ( sd_bus_message * m , char * type , const char * * contents ) ;
2013-10-29 19:30:55 +01:00
int sd_bus_message_verify_type ( sd_bus_message * m , char type , const char * contents ) ;
2013-11-05 19:36:05 +01:00
int sd_bus_message_at_end ( sd_bus_message * m , int complete ) ;
2013-03-20 22:56:25 +01:00
int sd_bus_message_rewind ( sd_bus_message * m , int complete ) ;
2013-03-19 20:03:16 +01:00
2013-11-28 17:50:02 +01:00
/* Bus management */
int sd_bus_get_unique_name ( sd_bus * bus , const char * * unique ) ;
2013-12-12 05:55:58 +01:00
int sd_bus_request_name ( sd_bus * bus , const char * name , uint64_t flags ) ;
2013-11-28 17:50:02 +01:00
int sd_bus_release_name ( sd_bus * bus , const char * name ) ;
2013-12-03 18:42:51 +01:00
int sd_bus_list_names ( sd_bus * bus , char * * * acquired , char * * * activatable ) ; /* free the results */
2013-11-30 04:14:10 +01:00
int sd_bus_get_owner ( sd_bus * bus , const char * name , uint64_t mask , sd_bus_creds * * creds ) ; /* unref the result! */
2013-11-28 17:50:02 +01:00
int sd_bus_get_owner_machine_id ( sd_bus * bus , const char * name , sd_id128_t * machine ) ;
2013-04-05 04:15:39 +02:00
/* Convenience calls */
2013-11-21 19:34:37 +01:00
int sd_bus_call_method ( sd_bus * bus , const char * destination , const char * path , const char * interface , const char * member , sd_bus_error * ret_error , sd_bus_message * * reply , const char * types , . . . ) ;
int sd_bus_get_property ( sd_bus * bus , const char * destination , const char * path , const char * interface , const char * member , sd_bus_error * ret_error , sd_bus_message * * reply , const char * type ) ;
int sd_bus_get_property_trivial ( sd_bus * bus , const char * destination , const char * path , const char * interface , const char * member , sd_bus_error * ret_error , char type , void * ret_ptr ) ;
int sd_bus_get_property_string ( sd_bus * bus , const char * destination , const char * path , const char * interface , const char * member , sd_bus_error * ret_error , char * * ret ) ; /* free the result! */
int sd_bus_get_property_strv ( sd_bus * bus , const char * destination , const char * path , const char * interface , const char * member , sd_bus_error * ret_error , char * * * ret ) ; /* free the result! */
int sd_bus_set_property ( sd_bus * bus , const char * destination , const char * path , const char * interface , const char * member , sd_bus_error * ret_error , const char * ret_type , . . . ) ;
2013-11-19 01:23:08 +01:00
2013-11-21 01:51:16 +01:00
int sd_bus_reply_method_return ( sd_bus_message * call , const char * types , . . . ) ;
int sd_bus_reply_method_error ( sd_bus_message * call , const sd_bus_error * e ) ;
2013-12-28 14:39:12 +01:00
int sd_bus_reply_method_errorf ( sd_bus_message * call , const char * name , const char * format , . . . ) _sd_printf_ ( 3 , 4 ) ;
2013-11-21 01:51:16 +01:00
int sd_bus_reply_method_errno ( sd_bus_message * call , int error , const sd_bus_error * e ) ;
2013-12-28 14:39:12 +01:00
int sd_bus_reply_method_errnof ( sd_bus_message * call , int error , const char * format , . . . ) _sd_printf_ ( 3 , 4 ) ;
2013-10-09 02:37:10 +02:00
int sd_bus_emit_signal ( sd_bus * bus , const char * path , const char * interface , const char * member , const char * types , . . . ) ;
int sd_bus_emit_properties_changed_strv ( sd_bus * bus , const char * path , const char * interface , char * * names ) ;
2013-10-16 17:00:13 +02:00
int sd_bus_emit_properties_changed ( sd_bus * bus , const char * path , const char * interface , const char * name , . . . ) _sd_sentinel_ ;
2013-10-09 02:37:10 +02:00
2013-10-11 23:22:29 +02:00
int sd_bus_emit_interfaces_added_strv ( sd_bus * bus , const char * path , char * * interfaces ) ;
2013-10-16 17:00:13 +02:00
int sd_bus_emit_interfaces_added ( sd_bus * bus , const char * path , const char * interface , . . . ) _sd_sentinel_ ;
2013-10-11 23:22:29 +02:00
int sd_bus_emit_interfaces_removed_strv ( sd_bus * bus , const char * path , char * * interfaces ) ;
2013-10-16 17:00:13 +02:00
int sd_bus_emit_interfaces_removed ( sd_bus * bus , const char * path , const char * interface , . . . ) _sd_sentinel_ ;
2013-04-05 04:15:39 +02:00
2013-11-28 17:50:02 +01:00
int sd_bus_query_sender_creds ( sd_bus_message * call , uint64_t mask , sd_bus_creds * * creds ) ;
/* Credential handling */
2014-02-19 23:54:58 +01:00
int sd_bus_creds_new_from_pid ( sd_bus_creds * * ret , pid_t pid , uint64_t creds_mask ) ;
2013-11-28 17:50:02 +01:00
sd_bus_creds * sd_bus_creds_ref ( sd_bus_creds * c ) ;
sd_bus_creds * sd_bus_creds_unref ( sd_bus_creds * c ) ;
2014-01-05 01:28:52 +01:00
uint64_t sd_bus_creds_get_mask ( const sd_bus_creds * c ) ;
2013-11-28 17:50:02 +01:00
int sd_bus_creds_get_pid ( sd_bus_creds * c , pid_t * pid ) ;
int sd_bus_creds_get_pid_starttime ( sd_bus_creds * c , uint64_t * usec ) ;
int sd_bus_creds_get_tid ( sd_bus_creds * c , pid_t * tid ) ;
2013-11-30 04:14:10 +01:00
int sd_bus_creds_get_uid ( sd_bus_creds * c , uid_t * uid ) ;
int sd_bus_creds_get_gid ( sd_bus_creds * c , gid_t * gid ) ;
2014-01-04 06:08:50 +01:00
int sd_bus_creds_get_comm ( sd_bus_creds * c , const char * * comm ) ;
int sd_bus_creds_get_tid_comm ( sd_bus_creds * c , const char * * comm ) ;
int sd_bus_creds_get_exe ( sd_bus_creds * c , const char * * exe ) ;
2013-11-28 17:50:02 +01:00
int sd_bus_creds_get_cmdline ( sd_bus_creds * c , char * * * cmdline ) ;
2014-01-04 06:08:50 +01:00
int sd_bus_creds_get_cgroup ( sd_bus_creds * c , const char * * cgroup ) ;
2013-11-28 17:50:02 +01:00
int sd_bus_creds_get_unit ( sd_bus_creds * c , const char * * unit ) ;
int sd_bus_creds_get_user_unit ( sd_bus_creds * c , const char * * unit ) ;
int sd_bus_creds_get_slice ( sd_bus_creds * c , const char * * slice ) ;
int sd_bus_creds_get_session ( sd_bus_creds * c , const char * * session ) ;
int sd_bus_creds_get_owner_uid ( sd_bus_creds * c , uid_t * uid ) ;
int sd_bus_creds_has_effective_cap ( sd_bus_creds * c , int capability ) ;
int sd_bus_creds_has_permitted_cap ( sd_bus_creds * c , int capability ) ;
int sd_bus_creds_has_inheritable_cap ( sd_bus_creds * c , int capability ) ;
int sd_bus_creds_has_bounding_cap ( sd_bus_creds * c , int capability ) ;
2014-01-04 06:08:50 +01:00
int sd_bus_creds_get_selinux_context ( sd_bus_creds * c , const char * * context ) ;
2013-11-28 17:50:02 +01:00
int sd_bus_creds_get_audit_session_id ( sd_bus_creds * c , uint32_t * sessionid ) ;
int sd_bus_creds_get_audit_login_uid ( sd_bus_creds * c , uid_t * loginuid ) ;
2013-11-30 04:14:10 +01:00
int sd_bus_creds_get_unique_name ( sd_bus_creds * c , const char * * name ) ;
int sd_bus_creds_get_well_known_names ( sd_bus_creds * c , char * * * names ) ;
2014-01-22 16:28:58 +01:00
int sd_bus_creds_get_connection_name ( sd_bus_creds * c , const char * * name ) ;
2013-03-19 20:03:16 +01:00
2013-03-20 13:10:12 +01:00
/* Error structures */
2013-03-19 20:03:16 +01:00
2013-12-26 01:52:01 +01:00
# define SD_BUS_ERROR_MAKE_CONST(name, message) ((const sd_bus_error) {(name), (message), 0})
2013-11-21 02:11:06 +01:00
# define SD_BUS_ERROR_NULL SD_BUS_ERROR_MAKE_CONST(NULL, NULL)
2013-03-19 20:03:16 +01:00
void sd_bus_error_free ( sd_bus_error * e ) ;
2013-10-09 02:37:10 +02:00
int sd_bus_error_set ( sd_bus_error * e , const char * name , const char * message ) ;
2013-12-28 14:39:12 +01:00
int sd_bus_error_setf ( sd_bus_error * e , const char * name , const char * format , . . . ) _sd_printf_ ( 3 , 4 ) ;
2013-10-16 06:10:04 +02:00
int sd_bus_error_set_const ( sd_bus_error * e , const char * name , const char * message ) ;
int sd_bus_error_set_errno ( sd_bus_error * e , int error ) ;
2013-12-28 14:39:12 +01:00
int sd_bus_error_set_errnof ( sd_bus_error * e , int error , const char * format , . . . ) _sd_printf_ ( 3 , 4 ) ;
2013-10-16 06:10:04 +02:00
int sd_bus_error_get_errno ( const sd_bus_error * e ) ;
2013-03-19 20:03:16 +01:00
int sd_bus_error_copy ( sd_bus_error * dest , const sd_bus_error * e ) ;
int sd_bus_error_is_set ( const sd_bus_error * e ) ;
int sd_bus_error_has_name ( const sd_bus_error * e , const char * name ) ;
2013-11-28 17:50:02 +01:00
/* Auxiliary macros */
2013-10-16 06:10:04 +02:00
# define SD_BUS_MESSAGE_APPEND_ID128(x) 16, \
( x ) . bytes [ 0 ] , ( x ) . bytes [ 1 ] , ( x ) . bytes [ 2 ] , ( x ) . bytes [ 3 ] , \
( x ) . bytes [ 4 ] , ( x ) . bytes [ 5 ] , ( x ) . bytes [ 6 ] , ( x ) . bytes [ 7 ] , \
2013-06-20 03:45:08 +02:00
( x ) . bytes [ 8 ] , ( x ) . bytes [ 9 ] , ( x ) . bytes [ 10 ] , ( x ) . bytes [ 11 ] , \
( x ) . bytes [ 12 ] , ( x ) . bytes [ 13 ] , ( x ) . bytes [ 14 ] , ( x ) . bytes [ 15 ]
2013-10-29 19:31:25 +01:00
# define SD_BUS_MESSAGE_READ_ID128(x) 16, \
& ( x ) . bytes [ 0 ] , & ( x ) . bytes [ 1 ] , & ( x ) . bytes [ 2 ] , & ( x ) . bytes [ 3 ] , \
& ( x ) . bytes [ 4 ] , & ( x ) . bytes [ 5 ] , & ( x ) . bytes [ 6 ] , & ( x ) . bytes [ 7 ] , \
& ( x ) . bytes [ 8 ] , & ( x ) . bytes [ 9 ] , & ( x ) . bytes [ 10 ] , & ( x ) . bytes [ 11 ] , \
& ( x ) . bytes [ 12 ] , & ( x ) . bytes [ 13 ] , & ( x ) . bytes [ 14 ] , & ( x ) . bytes [ 15 ]
2013-11-28 17:50:02 +01:00
/* Label escaping */
2014-03-11 19:03:50 +01:00
int sd_bus_path_encode ( const char * prefix , const char * external_id , char * * ret_path ) ;
int sd_bus_path_decode ( const char * path , const char * prefix , char * * ret_external_id ) ;
2013-11-21 01:03:26 +01:00
2014-03-03 01:33:45 +01:00
/* Tracking peers */
int sd_bus_track_new ( sd_bus * bus , sd_bus_track * * track , sd_bus_track_handler_t handler , void * userdata ) ;
sd_bus_track * sd_bus_track_ref ( sd_bus_track * track ) ;
sd_bus_track * sd_bus_track_unref ( sd_bus_track * track ) ;
sd_bus * sd_bus_track_get_bus ( sd_bus_track * track ) ;
int sd_bus_track_add_sender ( sd_bus_track * track , sd_bus_message * m ) ;
int sd_bus_track_remove_sender ( sd_bus_track * track , sd_bus_message * m ) ;
int sd_bus_track_add_name ( sd_bus_track * track , const char * name ) ;
int sd_bus_track_remove_name ( sd_bus_track * track , const char * name ) ;
unsigned sd_bus_track_count ( sd_bus_track * track ) ;
const char * sd_bus_track_contains ( sd_bus_track * track , const char * names ) ;
const char * sd_bus_track_first ( sd_bus_track * track ) ;
const char * sd_bus_track_next ( sd_bus_track * track ) ;
2013-11-07 16:44:48 +01:00
_SD_END_DECLARATIONS ;
2013-03-29 23:20:32 +01:00
2013-03-19 20:03:16 +01:00
# endif