diff options
author | Alban Crequy <alban.crequy@collabora.co.uk> | 2012-05-31 16:08:30 +0000 |
---|---|---|
committer | Rodrigo Moya <rodrigo@gnome-db.org> | 2012-06-01 13:41:08 +0200 |
commit | e5b653b3487810e3126b4d17ccbd0d13b53574d5 (patch) | |
tree | 5c26f277591bf7967d94a5128038c48df39c2fab | |
parent | 9a84cd6a72420604003e0fac5dab6c147c8c7fbd (diff) | |
download | dbus-e5b653b3487810e3126b4d17ccbd0d13b53574d5.tar.gz |
afbus: implement RemoveMatch
-rw-r--r-- | bus/driver-afbus.c | 24 | ||||
-rw-r--r-- | bus/driver-afbus.h | 15 | ||||
-rw-r--r-- | bus/driver.c | 5 |
3 files changed, 39 insertions, 5 deletions
diff --git a/bus/driver-afbus.c b/bus/driver-afbus.c index 8227b7be..bf18781f 100644 --- a/bus/driver-afbus.c +++ b/bus/driver-afbus.c @@ -117,9 +117,10 @@ static int netlink_send(int nlsock, struct cn_msg *msg, int seq) return send(nlsock, nlh, size, 0); } -dbus_bool_t +static dbus_bool_t bus_driver_afbus_upload_match_rule (DBusConnection *connection, const char *rule, + dbus_bool_t add, DBusError *error) { static int seq; @@ -159,7 +160,10 @@ bus_driver_afbus_upload_match_rule (DBusConnection *connection, data->len = sizeof(struct nfdbus_nl_cfg_req) + strlen(rule) + 1; req = (struct nfdbus_nl_cfg_req *) data->data; - req->cmd = NFDBUS_CMD_ADDMATCH; + if (add) + req->cmd = NFDBUS_CMD_ADDMATCH; + else + req->cmd = NFDBUS_CMD_REMOVEMATCH; req->len = strlen(rule) + 1; req->addr = address; strcpy((char *)req->data, rule); @@ -184,6 +188,22 @@ bus_driver_afbus_upload_match_rule (DBusConnection *connection, } dbus_bool_t +bus_driver_afbus_add_match_rule (DBusConnection *connection, + const char *rule, + DBusError *error) +{ + return bus_driver_afbus_upload_match_rule (connection, rule, TRUE, error); +} + +dbus_bool_t +bus_driver_afbus_remove_match_rule (DBusConnection *connection, + const char *rule, + DBusError *error) +{ + return bus_driver_afbus_upload_match_rule (connection, rule, FALSE, error); +} + +dbus_bool_t bus_driver_afbus_append_unique_name (DBusConnection *connection, DBusString *str) { diff --git a/bus/driver-afbus.h b/bus/driver-afbus.h index 560f543a..5135b143 100644 --- a/bus/driver-afbus.h +++ b/bus/driver-afbus.h @@ -29,7 +29,10 @@ #include "connection.h" #if HAVE_AFBUS -dbus_bool_t bus_driver_afbus_upload_match_rule (DBusConnection *connection, +dbus_bool_t bus_driver_afbus_add_match_rule (DBusConnection *connection, + const char *rule, + DBusError *error); +dbus_bool_t bus_driver_afbus_remove_match_rule (DBusConnection *connection, const char *rule, DBusError *error); dbus_bool_t bus_driver_afbus_append_unique_name (DBusConnection *connection, @@ -40,7 +43,15 @@ dbus_bool_t bus_driver_afbus_emit_forwarded (BusTransaction *transaction, const char *service_name); #else inline -dbus_bool_t bus_driver_afbus_upload_match_rule (DBusConnection *connection, +dbus_bool_t bus_driver_afbus_add_match_rule (DBusConnection *connection, + const char *rule, + DBusError *error) +{ + return TRUE; +} + +inline +dbus_bool_t bus_driver_afbus_remove_match_rule (DBusConnection *connection, const char *rule, DBusError *error) { diff --git a/bus/driver.c b/bus/driver.c index cae4aaa4..740d8963 100644 --- a/bus/driver.c +++ b/bus/driver.c @@ -994,7 +994,7 @@ bus_driver_handle_add_match (DBusConnection *connection, if (rule == NULL) goto failed; - if (!bus_driver_afbus_upload_match_rule (connection, text, error)) + if (!bus_driver_afbus_add_match_rule (connection, text, error)) goto failed; matchmaker = bus_connection_get_matchmaker (connection); @@ -1060,6 +1060,9 @@ bus_driver_handle_remove_match (DBusConnection *connection, message, error)) goto failed; + if (!bus_driver_afbus_remove_match_rule (connection, text, error)) + goto failed; + matchmaker = bus_connection_get_matchmaker (connection); if (!bus_matchmaker_remove_rule_by_value (matchmaker, rule, error)) |