Due to this patch, 'busctl monitor' prints all method calls, method errors and signals both for dbus and kdbus. --- src/libsystemd-bus/bus-control.c | 6 ++++++ src/libsystemd-bus/bus-match.c | 10 ++++++++++ src/libsystemd-bus/bus-match.h | 1 + src/libsystemd-bus/busctl.c | 2 +- 4 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c index 2682439..525e452 100644 --- a/src/libsystemd-bus/bus-control.c +++ b/src/libsystemd-bus/bus-control.c @@ -958,6 +958,12 @@ static int bus_add_match_internal_kernel( } break; + case BUS_MATCH_EAVESDROP: + if (streq(c->value_str, "true")) { + bus_kernel_monitor(bus); + } + break; + case BUS_MATCH_ARG...BUS_MATCH_ARG_LAST: { char buf[sizeof("arg")-1 + 2 + 1]; diff --git a/src/libsystemd-bus/bus-match.c b/src/libsystemd-bus/bus-match.c index f7fca5f..3da401c 100644 --- a/src/libsystemd-bus/bus-match.c +++ b/src/libsystemd-bus/bus-match.c @@ -163,6 +163,7 @@ static bool value_node_test( case BUS_MATCH_INTERFACE: case BUS_MATCH_MEMBER: case BUS_MATCH_PATH: + case BUS_MATCH_EAVESDROP: case BUS_MATCH_ARG ... BUS_MATCH_ARG_LAST: return streq_ptr(node->value.str, value_str); @@ -203,6 +204,7 @@ static bool value_node_same( case BUS_MATCH_INTERFACE: case BUS_MATCH_MEMBER: case BUS_MATCH_PATH: + case BUS_MATCH_EAVESDROP: case BUS_MATCH_ARG ... BUS_MATCH_ARG_LAST: case BUS_MATCH_ARG_NAMESPACE ... BUS_MATCH_ARG_NAMESPACE_LAST: case BUS_MATCH_PATH_NAMESPACE: @@ -310,6 +312,9 @@ int bus_match_run( test_str = m->path; break; + case BUS_MATCH_EAVESDROP: + break; + case BUS_MATCH_ARG ... BUS_MATCH_ARG_LAST: test_str = bus_message_get_arg(m, node->type - BUS_MATCH_ARG); break; @@ -590,6 +595,8 @@ enum bus_match_node_type bus_match_node_type_from_string(const char *k, size_t n return BUS_MATCH_PATH; if (n == 14 && startswith(k, "path_namespace")) return BUS_MATCH_PATH_NAMESPACE; + if (n == 9 && startswith(k, "eavesdrop")) + return BUS_MATCH_EAVESDROP; if (n == 4 && startswith(k, "arg")) { int j; @@ -949,6 +956,9 @@ const char* bus_match_node_type_to_string(enum bus_match_node_type t, char buf[] case BUS_MATCH_PATH_NAMESPACE: return "path_namespace"; + case BUS_MATCH_EAVESDROP: + return "eavesdrop"; + case BUS_MATCH_ARG ... BUS_MATCH_ARG_LAST: snprintf(buf, l, "arg%i", t - BUS_MATCH_ARG); return buf; diff --git a/src/libsystemd-bus/bus-match.h b/src/libsystemd-bus/bus-match.h index 1d38126..17b50cb 100644 --- a/src/libsystemd-bus/bus-match.h +++ b/src/libsystemd-bus/bus-match.h @@ -38,6 +38,7 @@ enum bus_match_node_type { BUS_MATCH_MEMBER, BUS_MATCH_PATH, BUS_MATCH_PATH_NAMESPACE, + BUS_MATCH_EAVESDROP, BUS_MATCH_ARG, BUS_MATCH_ARG_LAST = BUS_MATCH_ARG + 63, BUS_MATCH_ARG_PATH, diff --git a/src/libsystemd-bus/busctl.c b/src/libsystemd-bus/busctl.c index 57bc83d..5f86e0d 100644 --- a/src/libsystemd-bus/busctl.c +++ b/src/libsystemd-bus/busctl.c @@ -206,7 +206,7 @@ static int monitor(sd_bus *bus, char *argv[]) { } if (!added_something) { - r = sd_bus_add_match(bus, "", NULL, NULL); + r = sd_bus_add_match(bus, "eavesdrop='true'", NULL, NULL); if (r < 0) { log_error("Failed to add match: %s", strerror(-r)); return r; -- 1.8.3.2 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel