]> git.ipfire.org Git - network.git/commitdiff
networkd: Call function when we are connected to dbus
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 30 Jan 2023 20:55:42 +0000 (20:55 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 30 Jan 2023 20:55:42 +0000 (20:55 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/networkd/bus.c

index 95862d2dcfe5faa15bdf4e628c746ebc7d1dadd2..36ae7c99a31523c1073471eb02d6778dbb0db790 100644 (file)
 #include "daemon.h"
 #include "logging.h"
 
-static int nw_bus_daemon_reload(sd_bus_message* m, void* data, sd_bus_error* ret_error) {
+static int nw_bus_daemon_reload(sd_bus_message* m, void* data, sd_bus_error* error) {
        return 1;
 }
 
+static int nw_bus_on_connect(sd_bus_message* m, void* data, sd_bus_error* error) {
+       struct nw_daemon* daemon = (struct nw_daemon*)data;
+
+       DEBUG("Connected to D-Bus\n");
+
+       return 0;
+}
+
 static const sd_bus_vtable daemon_vtable[] = {
         SD_BUS_VTABLE_START(0),
         SD_BUS_METHOD("Reload", SD_BUS_NO_ARGS, SD_BUS_NO_RESULT,
@@ -127,5 +135,13 @@ int nw_bus_connect(sd_bus* bus, sd_event* loop) {
                return 1;
        }
 
+       // Request receiving a connect signal
+       r = sd_bus_match_signal_async(bus, NULL, "org.freedesktop.DBus.Local",
+               NULL, "org.freedesktop.DBus.Local", "Connected", nw_bus_on_connect, NULL, NULL);
+       if (r < 0) {
+               ERROR("Could not request match on Connected signal: %s\n", strerror(-r));
+               return 1;
+       }
+
        return 0;
 }