mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 10:18:25 +00:00
Add collection of metrics
Data can be retreived via D-Bus und U-Bus
This commit is contained in:
committed by
Simon Kelley
parent
caf4d571e6
commit
aba8bbb6e3
31
src/dbus.c
31
src/dbus.c
@@ -85,6 +85,9 @@ const char* introspection_xml_template =
|
||||
" <arg name=\"success\" type=\"b\" direction=\"out\"/>\n"
|
||||
" </method>\n"
|
||||
#endif
|
||||
" <method name=\"GetMetrics\">\n"
|
||||
" <arg name=\"metrics\" direction=\"out\" type=\"a{su}\"/>\n"
|
||||
" </method>\n"
|
||||
" </interface>\n"
|
||||
"</node>\n";
|
||||
|
||||
@@ -613,6 +616,30 @@ static DBusMessage *dbus_del_lease(DBusMessage* message)
|
||||
}
|
||||
#endif
|
||||
|
||||
static DBusMessage *dbus_get_metrics(DBusMessage* message)
|
||||
{
|
||||
DBusMessage *reply = dbus_message_new_method_return(message);
|
||||
DBusMessageIter array, dict, iter;
|
||||
int i;
|
||||
|
||||
dbus_message_iter_init_append(reply, &iter);
|
||||
dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{su}", &array);
|
||||
|
||||
for (i = 0; i < __METRIC_MAX; i++) {
|
||||
const char *key = get_metric_name(i);
|
||||
dbus_uint32_t value = daemon->metrics[i];
|
||||
|
||||
dbus_message_iter_open_container(&array, DBUS_TYPE_DICT_ENTRY, NULL, &dict);
|
||||
dbus_message_iter_append_basic(&dict, DBUS_TYPE_STRING, &key);
|
||||
dbus_message_iter_append_basic(&dict, DBUS_TYPE_UINT32, &value);
|
||||
dbus_message_iter_close_container(&array, &dict);
|
||||
}
|
||||
|
||||
dbus_message_iter_close_container(&iter, &array);
|
||||
|
||||
return reply;
|
||||
}
|
||||
|
||||
DBusHandlerResult message_handler(DBusConnection *connection,
|
||||
DBusMessage *message,
|
||||
void *user_data)
|
||||
@@ -680,6 +707,10 @@ DBusHandlerResult message_handler(DBusConnection *connection,
|
||||
reply = dbus_del_lease(message);
|
||||
}
|
||||
#endif
|
||||
else if (strcmp(method, "GetMetrics") == 0)
|
||||
{
|
||||
reply = dbus_get_metrics(message);
|
||||
}
|
||||
else if (strcmp(method, "ClearCache") == 0)
|
||||
clear_cache = 1;
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user