Emeric Vigier | 2f62582 | 2012-08-06 11:09:52 -0400 | [diff] [blame] | 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ |
| 2 | /* bus.h message bus context object |
| 3 | * |
| 4 | * Copyright (C) 2003 Red Hat, Inc. |
| 5 | * |
| 6 | * Licensed under the Academic Free License version 2.1 |
| 7 | * |
| 8 | * This program is free software; you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License as published by |
| 10 | * the Free Software Foundation; either version 2 of the License, or |
| 11 | * (at your option) any later version. |
| 12 | * |
| 13 | * This program is distributed in the hope that it will be useful, |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16 | * GNU General Public License for more details. |
| 17 | * |
| 18 | * You should have received a copy of the GNU General Public License |
| 19 | * along with this program; if not, write to the Free Software |
| 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 21 | * |
| 22 | */ |
| 23 | |
| 24 | #ifndef BUS_BUS_H |
| 25 | #define BUS_BUS_H |
| 26 | |
| 27 | #include <dbus/dbus.h> |
| 28 | #include <dbus/dbus-string.h> |
| 29 | #include <dbus/dbus-mainloop.h> |
| 30 | #include <dbus/dbus-pipe.h> |
| 31 | #include <dbus/dbus-sysdeps.h> |
| 32 | |
| 33 | typedef struct BusActivation BusActivation; |
| 34 | typedef struct BusConnections BusConnections; |
| 35 | typedef struct BusContext BusContext; |
| 36 | typedef struct BusPolicy BusPolicy; |
| 37 | typedef struct BusClientPolicy BusClientPolicy; |
| 38 | typedef struct BusPolicyRule BusPolicyRule; |
| 39 | typedef struct BusRegistry BusRegistry; |
| 40 | typedef struct BusSELinuxID BusSELinuxID; |
| 41 | typedef struct BusService BusService; |
| 42 | typedef struct BusOwner BusOwner; |
| 43 | typedef struct BusTransaction BusTransaction; |
| 44 | typedef struct BusMatchmaker BusMatchmaker; |
| 45 | typedef struct BusMatchRule BusMatchRule; |
| 46 | |
| 47 | typedef struct |
| 48 | { |
| 49 | long max_incoming_bytes; /**< How many incoming message bytes for a single connection */ |
| 50 | long max_incoming_unix_fds; /**< How many incoming message unix fds for a single connection */ |
| 51 | long max_outgoing_bytes; /**< How many outgoing bytes can be queued for a single connection */ |
| 52 | long max_outgoing_unix_fds; /**< How many outgoing unix fds can be queued for a single connection */ |
| 53 | long max_message_size; /**< Max size of a single message in bytes */ |
| 54 | long max_message_unix_fds; /**< Max number of unix fds of a single message*/ |
| 55 | int activation_timeout; /**< How long to wait for an activation to time out */ |
| 56 | int auth_timeout; /**< How long to wait for an authentication to time out */ |
| 57 | int max_completed_connections; /**< Max number of authorized connections */ |
| 58 | int max_incomplete_connections; /**< Max number of incomplete connections */ |
| 59 | int max_connections_per_user; /**< Max number of connections auth'd as same user */ |
| 60 | int max_pending_activations; /**< Max number of pending activations for the entire bus */ |
| 61 | int max_services_per_connection; /**< Max number of owned services for a single connection */ |
| 62 | int max_match_rules_per_connection; /**< Max number of match rules for a single connection */ |
| 63 | int max_replies_per_connection; /**< Max number of replies that can be pending for each connection */ |
| 64 | int reply_timeout; /**< How long to wait before timing out a reply */ |
| 65 | } BusLimits; |
| 66 | |
| 67 | typedef enum |
| 68 | { |
| 69 | FORK_FOLLOW_CONFIG_FILE, |
| 70 | FORK_ALWAYS, |
| 71 | FORK_NEVER |
| 72 | } ForceForkSetting; |
| 73 | |
| 74 | BusContext* bus_context_new (const DBusString *config_file, |
| 75 | ForceForkSetting force_fork, |
| 76 | DBusPipe *print_addr_pipe, |
| 77 | DBusPipe *print_pid_pipe, |
| 78 | const DBusString *address, |
| 79 | dbus_bool_t systemd_activation, |
| 80 | DBusError *error); |
| 81 | dbus_bool_t bus_context_reload_config (BusContext *context, |
| 82 | DBusError *error); |
| 83 | void bus_context_shutdown (BusContext *context); |
| 84 | BusContext* bus_context_ref (BusContext *context); |
| 85 | void bus_context_unref (BusContext *context); |
| 86 | dbus_bool_t bus_context_get_id (BusContext *context, |
| 87 | DBusString *uuid); |
| 88 | const char* bus_context_get_type (BusContext *context); |
| 89 | const char* bus_context_get_address (BusContext *context); |
| 90 | const char* bus_context_get_servicehelper (BusContext *context); |
| 91 | dbus_bool_t bus_context_get_systemd_activation (BusContext *context); |
| 92 | BusRegistry* bus_context_get_registry (BusContext *context); |
| 93 | BusConnections* bus_context_get_connections (BusContext *context); |
| 94 | BusActivation* bus_context_get_activation (BusContext *context); |
| 95 | BusMatchmaker* bus_context_get_matchmaker (BusContext *context); |
| 96 | DBusLoop* bus_context_get_loop (BusContext *context); |
| 97 | dbus_bool_t bus_context_allow_unix_user (BusContext *context, |
| 98 | unsigned long uid); |
| 99 | dbus_bool_t bus_context_allow_windows_user (BusContext *context, |
| 100 | const char *windows_sid); |
| 101 | BusPolicy* bus_context_get_policy (BusContext *context); |
| 102 | |
| 103 | BusClientPolicy* bus_context_create_client_policy (BusContext *context, |
| 104 | DBusConnection *connection, |
| 105 | DBusError *error); |
| 106 | int bus_context_get_activation_timeout (BusContext *context); |
| 107 | int bus_context_get_auth_timeout (BusContext *context); |
| 108 | int bus_context_get_max_completed_connections (BusContext *context); |
| 109 | int bus_context_get_max_incomplete_connections (BusContext *context); |
| 110 | int bus_context_get_max_connections_per_user (BusContext *context); |
| 111 | int bus_context_get_max_pending_activations (BusContext *context); |
| 112 | int bus_context_get_max_services_per_connection (BusContext *context); |
| 113 | int bus_context_get_max_match_rules_per_connection (BusContext *context); |
| 114 | int bus_context_get_max_replies_per_connection (BusContext *context); |
| 115 | int bus_context_get_reply_timeout (BusContext *context); |
| 116 | void bus_context_log (BusContext *context, |
| 117 | DBusSystemLogSeverity severity, |
| 118 | const char *msg, |
| 119 | ...); |
| 120 | dbus_bool_t bus_context_check_security_policy (BusContext *context, |
| 121 | BusTransaction *transaction, |
| 122 | DBusConnection *sender, |
| 123 | DBusConnection *addressed_recipient, |
| 124 | DBusConnection *proposed_recipient, |
| 125 | DBusMessage *message, |
| 126 | DBusError *error); |
| 127 | |
| 128 | #endif /* BUS_BUS_H */ |