diff options
author | Havoc Pennington <hp@redhat.com> | 2003-03-19 23:48:17 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2003-03-19 23:48:17 +0000 |
commit | a284a148e40551a2e6e5d0e54c2e04d2b679aaad (patch) | |
tree | fb99dfd253c6bccedaf16e280f1e51b8d0de8d7d /bus/policy.h | |
parent | b052524195a48f9b5e55cc7a456e0e1cc318f98b (diff) |
2003-03-19 Havoc Pennington <hp@redhat.com>
* bus/policy.c: start sketching code for policy restrictions on
what connections can do.
Diffstat (limited to 'bus/policy.h')
-rw-r--r-- | bus/policy.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/bus/policy.h b/bus/policy.h new file mode 100644 index 00000000..f146c528 --- /dev/null +++ b/bus/policy.h @@ -0,0 +1,93 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* policy.h Policies for what a connection can do + * + * Copyright (C) 2003 Red Hat, Inc. + * + * Licensed under the Academic Free License version 1.2 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef BUS_POLICY_H +#define BUS_POLICY_H + +#include <dbus/dbus.h> +#include "bus.h" + +typedef struct BusPolicy BusPolicy; +typedef struct BusPolicyRule BusPolicyRule; + +typedef enum +{ + DBUS_POLICY_RULE_SEND, + DBUS_POLICY_RULE_RECEIVE, + DBUS_POLICY_RULE_OWN +} BusPolicyRuleType; + +struct BusPolicyRule +{ + int refcount; + + BusPolicyRuleType type; + + unsigned int allow : 1; /**< #TRUE if this allows, #FALSE if it denies */ + + union + { + struct + { + /* either can be NULL meaning "any" */ + char *message_name; + char *destination; + } send; + + struct + { + /* either can be NULL meaning "any" */ + char *message_name; + char *origin; + } receive; + + struct + { + /* can be NULL meaning "any" */ + char *service_name; + } own; + + } d; +}; + +BusPolicyRule* bus_policy_rule_new (BusPolicyRuleType type, + dbus_bool_t allow); +void bus_policy_rule_ref (BusPolicyRule *rule); +void bus_policy_rule_unref (BusPolicyRule *rule); + +BusPolicy* bus_policy_new (void); +void bus_policy_ref (BusPolicy *policy); +void bus_policy_unref (BusPolicy *policy); +dbus_bool_t bus_policy_check_can_send (BusPolicy *policy, + DBusConnection *sender, + DBusMessage *message); +dbus_bool_t bus_policy_check_can_receive (BusPolicy *policy, + DBusConnection *receiver, + DBusMessage *message); +dbus_bool_t bus_policy_check_can_own (BusPolicy *policy, + DBusConnection *connection, + const char *service_name); + + + +#endif /* BUS_POLICY_H */ |