1d012387afef0ba02185ebe27bc6bb15551912e92Havoc Pennington/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 26ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington/* bus.h message bus context object 36ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * 46ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * Copyright (C) 2003 Red Hat, Inc. 56ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * 643605a6f4e78a8c28afb4b1e924dff0301e0e95cHavoc Pennington * Licensed under the Academic Free License version 2.1 7921bc585ca44b02684d368058a8df8300342dcd0Lennart Poettering * 86ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * This program is free software; you can redistribute it and/or modify 96ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * it under the terms of the GNU General Public License as published by 106ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * the Free Software Foundation; either version 2 of the License, or 116ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * (at your option) any later version. 126ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * 136ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * This program is distributed in the hope that it will be useful, 146ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * but WITHOUT ANY WARRANTY; without even the implied warranty of 156ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 166ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * GNU General Public License for more details. 17921bc585ca44b02684d368058a8df8300342dcd0Lennart Poettering * 186ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * You should have received a copy of the GNU General Public License 196ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * along with this program; if not, write to the Free Software 205baf2f856a9c6625993234855b07680da1c8916fTobias Mueller * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 216ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * 226ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington */ 236ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington 246ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington#ifndef BUS_BUS_H 256ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington#define BUS_BUS_H 266ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington 276ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington#include <dbus/dbus.h> 286ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington#include <dbus/dbus-string.h> 29df008ef97deacd5bb00ac335e5d8671798fa09ddHavoc Pennington#include <dbus/dbus-mainloop.h> 3068fb041ac3accaf12462d2c5f98992d1d28e4823Ralf Habacker#include <dbus/dbus-pipe.h> 31ebfa7c02fd67777684d39389e25346819836dccaColin Walters#include <dbus/dbus-sysdeps.h> 321b08036103a70159e7a67b2349306710edcd6654Havoc Pennington 33bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusActivation BusActivation; 34bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusConnections BusConnections; 35bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusContext BusContext; 36bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusPolicy BusPolicy; 37bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusClientPolicy BusClientPolicy; 38bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusPolicyRule BusPolicyRule; 39bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusRegistry BusRegistry; 401e9b185b0c274ef0d684b1e43418388225321e72Havoc Penningtontypedef struct BusSELinuxID BusSELinuxID; 41bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusService BusService; 421a163e765c0d6a86d2aa2ffb18a1d7e29a052e7aJohn (Jtypedef struct BusOwner BusOwner; 43bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusTransaction BusTransaction; 44a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtontypedef struct BusMatchmaker BusMatchmaker; 45a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtontypedef struct BusMatchRule BusMatchRule; 463185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington 473185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Penningtontypedef struct 483185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington{ 4964f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Pennington long max_incoming_bytes; /**< How many incoming message bytes for a single connection */ 5064ad8449679c53fefd20baea88fa593f226d59b0Lennart Poettering long max_incoming_unix_fds; /**< How many incoming message unix fds for a single connection */ 51b3bd48edfc1aab0a9dc64bfa4c380d845d218e73Havoc Pennington long max_outgoing_bytes; /**< How many outgoing bytes can be queued for a single connection */ 5264ad8449679c53fefd20baea88fa593f226d59b0Lennart Poettering long max_outgoing_unix_fds; /**< How many outgoing unix fds can be queued for a single connection */ 533185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington long max_message_size; /**< Max size of a single message in bytes */ 5464ad8449679c53fefd20baea88fa593f226d59b0Lennart Poettering long max_message_unix_fds; /**< Max number of unix fds of a single message*/ 553185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington int activation_timeout; /**< How long to wait for an activation to time out */ 563185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington int auth_timeout; /**< How long to wait for an authentication to time out */ 573185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington int max_completed_connections; /**< Max number of authorized connections */ 583185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington int max_incomplete_connections; /**< Max number of incomplete connections */ 593185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington int max_connections_per_user; /**< Max number of connections auth'd as same user */ 60b3bd48edfc1aab0a9dc64bfa4c380d845d218e73Havoc Pennington int max_pending_activations; /**< Max number of pending activations for the entire bus */ 61b3bd48edfc1aab0a9dc64bfa4c380d845d218e73Havoc Pennington int max_services_per_connection; /**< Max number of owned services for a single connection */ 62a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington int max_match_rules_per_connection; /**< Max number of match rules for a single connection */ 6364f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Pennington int max_replies_per_connection; /**< Max number of replies that can be pending for each connection */ 6464f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Pennington int reply_timeout; /**< How long to wait before timing out a reply */ 653185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington} BusLimits; 663185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington 67a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthentypedef enum 68a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen{ 69a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen FORK_FOLLOW_CONFIG_FILE, 70a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen FORK_ALWAYS, 71a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen FORK_NEVER 72a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen} ForceForkSetting; 73a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen 74a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusContext* bus_context_new (const DBusString *config_file, 75a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen ForceForkSetting force_fork, 769362aac398e3f2ec680e30c61ebfcb1e407eff72Havoc Pennington DBusPipe *print_addr_pipe, 779362aac398e3f2ec680e30c61ebfcb1e407eff72Havoc Pennington DBusPipe *print_pid_pipe, 78921bc585ca44b02684d368058a8df8300342dcd0Lennart Poettering const DBusString *address, 79b3ed8675a4eba35c6a7f43a86a89f706ffe07f84Lennart Poettering dbus_bool_t systemd_activation, 80a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusError *error); 81600e411f25082bcf82d610a4c71b0dc3435b5a42Jon Trowbridgedbus_bool_t bus_context_reload_config (BusContext *context, 82600e411f25082bcf82d610a4c71b0dc3435b5a42Jon Trowbridge DBusError *error); 83a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonvoid bus_context_shutdown (BusContext *context); 849f1a60dbba69844c0a04b3dd86280352736187ceMikael HallendalBusContext* bus_context_ref (BusContext *context); 85a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonvoid bus_context_unref (BusContext *context); 8654b943432c7c947db88066751dd36a372cc9a618Havoc Penningtondbus_bool_t bus_context_get_id (BusContext *context, 8754b943432c7c947db88066751dd36a372cc9a618Havoc Pennington DBusString *uuid); 88a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonconst char* bus_context_get_type (BusContext *context); 89a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonconst char* bus_context_get_address (BusContext *context); 906ceffb591878e3a806d340ab07fbb12a2f74e79fRichard Hughesconst char* bus_context_get_servicehelper (BusContext *context); 91b3ed8675a4eba35c6a7f43a86a89f706ffe07f84Lennart Poetteringdbus_bool_t bus_context_get_systemd_activation (BusContext *context); 92a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusRegistry* bus_context_get_registry (BusContext *context); 93a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusConnections* bus_context_get_connections (BusContext *context); 94a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusActivation* bus_context_get_activation (BusContext *context); 95a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusMatchmaker* bus_context_get_matchmaker (BusContext *context); 96a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonDBusLoop* bus_context_get_loop (BusContext *context); 977be5fd95cdccdca28937804f32ca8b1308887d09Havoc Penningtondbus_bool_t bus_context_allow_unix_user (BusContext *context, 98a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington unsigned long uid); 997be5fd95cdccdca28937804f32ca8b1308887d09Havoc Penningtondbus_bool_t bus_context_allow_windows_user (BusContext *context, 1007be5fd95cdccdca28937804f32ca8b1308887d09Havoc Pennington const char *windows_sid); 1011e9b185b0c274ef0d684b1e43418388225321e72Havoc PenningtonBusPolicy* bus_context_get_policy (BusContext *context); 1021e9b185b0c274ef0d684b1e43418388225321e72Havoc Pennington 103a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusClientPolicy* bus_context_create_client_policy (BusContext *context, 104a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusConnection *connection, 105a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusError *error); 106a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_activation_timeout (BusContext *context); 107a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_auth_timeout (BusContext *context); 108a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_completed_connections (BusContext *context); 109a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_incomplete_connections (BusContext *context); 110a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_connections_per_user (BusContext *context); 111a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_pending_activations (BusContext *context); 112a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_services_per_connection (BusContext *context); 113a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_match_rules_per_connection (BusContext *context); 11464f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Penningtonint bus_context_get_max_replies_per_connection (BusContext *context); 11564f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Penningtonint bus_context_get_reply_timeout (BusContext *context); 11604cf3166002a86b9a22851be4e243c87b5b3048dColin Waltersvoid bus_context_log (BusContext *context, 11704cf3166002a86b9a22851be4e243c87b5b3048dColin Walters DBusSystemLogSeverity severity, 11804cf3166002a86b9a22851be4e243c87b5b3048dColin Walters const char *msg, 119bb2a464067c6843320f367b590b0e4cb00225e50Colin Walters ...); 120a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtondbus_bool_t bus_context_check_security_policy (BusContext *context, 12164f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Pennington BusTransaction *transaction, 122a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusConnection *sender, 123a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusConnection *addressed_recipient, 124a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusConnection *proposed_recipient, 125a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusMessage *message, 126a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusError *error); 127e8d396efef695b9868b0112c4a6266c97678fa8aHavoc Pennington 1286ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington#endif /* BUS_BUS_H */ 129