]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: use BusObjectImplementation
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 18 Nov 2021 21:49:25 +0000 (06:49 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 18 Nov 2021 21:49:25 +0000 (06:49 +0900)
src/network/networkd-dhcp-server-bus.c
src/network/networkd-dhcp-server-bus.h
src/network/networkd-link-bus.c
src/network/networkd-link-bus.h
src/network/networkd-manager-bus.c
src/network/networkd-manager-bus.h
src/network/networkd-manager.c
src/network/networkd-network-bus.c
src/network/networkd-network-bus.h

index 81f4a6706bb9cc2486f05321212ef8e8452e4903..cc132da8b7697b2fed53adf6a5c8e451881e4ae3 100644 (file)
@@ -1,7 +1,5 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
-#include "sd-dhcp-server.h"
-
 #include "alloc-util.h"
 #include "bus-common-errors.h"
 #include "bus-util.h"
@@ -106,11 +104,17 @@ void dhcp_server_callback(sd_dhcp_server *s, uint64_t event, void *data) {
                 (void) dhcp_server_emit_changed(l, "Leases", NULL);
 }
 
-
-const sd_bus_vtable dhcp_server_vtable[] = {
+static const sd_bus_vtable dhcp_server_vtable[] = {
         SD_BUS_VTABLE_START(0),
 
         SD_BUS_PROPERTY("Leases", "a(uayayayayt)", property_get_leases, 0, SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
 
         SD_BUS_VTABLE_END
 };
+
+const BusObjectImplementation dhcp_server_object = {
+        "/org/freedesktop/network1/link",
+        "org.freedesktop.network1.DHCPServer",
+        .fallback_vtables = BUS_FALLBACK_VTABLES({dhcp_server_vtable, link_object_find}),
+        .node_enumerator = link_node_enumerator,
+};
index 7191478200229560baca13fa75f9a5ebd80cde4c..f52be8253e1227d85063977fcb626d314d16008a 100644 (file)
@@ -2,8 +2,10 @@
 #pragma once
 
 #include "sd-bus.h"
-#include "networkd-link.h"
+#include "sd-dhcp-server.h"
 
-extern const sd_bus_vtable dhcp_server_vtable[];
+#include "bus-object.h"
+
+extern const BusObjectImplementation dhcp_server_object;
 
 void dhcp_server_callback(sd_dhcp_server *server, uint64_t event, void *data);
index f4e355651744c5ddb9869b784d75aa4d56ffd02e..47e0d40d5768674734d9eddc1547711ebe891bda 100644 (file)
@@ -709,7 +709,7 @@ int bus_link_method_describe(sd_bus_message *message, void *userdata, sd_bus_err
         return sd_bus_send(NULL, reply, NULL);
 }
 
-const sd_bus_vtable link_vtable[] = {
+static const sd_bus_vtable link_vtable[] = {
         SD_BUS_VTABLE_START(0),
 
         SD_BUS_PROPERTY("OperationalState", "s", property_get_operational_state, offsetof(Link, operstate), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
@@ -914,3 +914,10 @@ int link_send_changed(Link *link, const char *property, ...) {
 
         return link_send_changed_strv(link, properties);
 }
+
+const BusObjectImplementation link_object = {
+        "/org/freedesktop/network1/link",
+        "org.freedesktop.network1.Link",
+        .fallback_vtables = BUS_FALLBACK_VTABLES({link_vtable, link_object_find}),
+        .node_enumerator = link_node_enumerator,
+};
index e8fa84b4e52ec565d85e00bbcb483586258e4466..924d9976b5ab57444ae05af886a5ece18b165f43 100644 (file)
@@ -3,11 +3,12 @@
 
 #include "sd-bus.h"
 
+#include "bus-object.h"
 #include "macro.h"
 
 typedef struct Link Link;
 
-extern const sd_bus_vtable link_vtable[];
+extern const BusObjectImplementation link_object;
 
 char *link_bus_path(Link *link);
 int link_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error);
index 8a5ad8eac3e6bd9647d2b142962e7c741b18ecbf..4c517d829aa1108457e562043a9b8707f4b47508 100644 (file)
@@ -8,11 +8,13 @@
 #include "bus-common-errors.h"
 #include "bus-message-util.h"
 #include "bus-polkit.h"
+#include "networkd-dhcp-server-bus.h"
 #include "networkd-json.h"
 #include "networkd-link-bus.h"
 #include "networkd-link.h"
 #include "networkd-manager-bus.h"
 #include "networkd-manager.h"
+#include "networkd-network-bus.h"
 #include "path-util.h"
 #include "strv.h"
 #include "user-util.h"
@@ -285,7 +287,7 @@ static int property_get_namespace_id(
         return sd_bus_message_append(reply, "t", id);
 }
 
-const sd_bus_vtable manager_vtable[] = {
+static const sd_bus_vtable manager_vtable[] = {
         SD_BUS_VTABLE_START(0),
 
         SD_BUS_PROPERTY("OperationalState", "s", property_get_operational_state, offsetof(Manager, operational_state), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
@@ -418,3 +420,10 @@ int manager_send_changed_strv(Manager *manager, char **properties) {
                         "org.freedesktop.network1.Manager",
                         properties);
 }
+
+const BusObjectImplementation manager_object = {
+        "/org/freedesktop/network1",
+        "org.freedesktop.network1.Manager",
+        .vtables = BUS_VTABLES(manager_vtable),
+        .children = BUS_IMPLEMENTATIONS(&dhcp_server_object, &link_object, &network_object),
+};
index 08ddfbdb73b5368b95afd31e8bbb991df72c386b..5cd7f16761ed014e6b96ad4eeafe7c93d4274c5d 100644 (file)
@@ -3,8 +3,10 @@
 
 #include "sd-bus.h"
 
+#include "bus-object.h"
+
 typedef struct Manager Manager;
 
-extern const sd_bus_vtable manager_vtable[];
+extern const BusObjectImplementation manager_object;
 
 int manager_send_changed_strv(Manager *m, char **properties);
index e25092058b77159ae3d8e5e1fc320d7dff76908d..2141e2062246528f58d70f5094a7e1460fce28db 100644 (file)
@@ -123,29 +123,9 @@ static int manager_connect_bus(Manager *m) {
         if (r < 0)
                 return log_error_errno(r, "Failed to connect to bus: %m");
 
-        r = sd_bus_add_object_vtable(m->bus, NULL, "/org/freedesktop/network1", "org.freedesktop.network1.Manager", manager_vtable, m);
+        r = bus_add_implementation(m->bus, &manager_object, m);
         if (r < 0)
-                return log_error_errno(r, "Failed to add manager object vtable: %m");
-
-        r = sd_bus_add_fallback_vtable(m->bus, NULL, "/org/freedesktop/network1/link", "org.freedesktop.network1.Link", link_vtable, link_object_find, m);
-        if (r < 0)
-               return log_error_errno(r, "Failed to add link object vtable: %m");
-
-        r = sd_bus_add_fallback_vtable(m->bus, NULL, "/org/freedesktop/network1/link", "org.freedesktop.network1.DHCPServer", dhcp_server_vtable, link_object_find, m);
-        if (r < 0)
-               return log_error_errno(r, "Failed to add link object vtable: %m");
-
-        r = sd_bus_add_node_enumerator(m->bus, NULL, "/org/freedesktop/network1/link", link_node_enumerator, m);
-        if (r < 0)
-                return log_error_errno(r, "Failed to add link enumerator: %m");
-
-        r = sd_bus_add_fallback_vtable(m->bus, NULL, "/org/freedesktop/network1/network", "org.freedesktop.network1.Network", network_vtable, network_object_find, m);
-        if (r < 0)
-               return log_error_errno(r, "Failed to add network object vtable: %m");
-
-        r = sd_bus_add_node_enumerator(m->bus, NULL, "/org/freedesktop/network1/network", network_node_enumerator, m);
-        if (r < 0)
-                return log_error_errno(r, "Failed to add network enumerator: %m");
+                return r;
 
         r = bus_log_control_api_register(m->bus);
         if (r < 0)
index e265277f60358d5f644bbd39e44f7457eb408983..4f141c3c2967e94e364b48f90e2130b9909bffdf 100644 (file)
@@ -39,7 +39,7 @@ static int property_get_ether_addrs(
         return sd_bus_message_close_container(reply);
 }
 
-const sd_bus_vtable network_vtable[] = {
+static const sd_bus_vtable network_vtable[] = {
         SD_BUS_VTABLE_START(0),
 
         SD_BUS_PROPERTY("Description", "s", NULL, offsetof(Network, description), SD_BUS_VTABLE_PROPERTY_CONST),
@@ -134,3 +134,10 @@ int network_object_find(sd_bus *bus, const char *path, const char *interface, vo
 
         return 1;
 }
+
+const BusObjectImplementation network_object = {
+        "/org/freedesktop/network1/network",
+        "org.freedesktop.network1.Network",
+        .fallback_vtables = BUS_FALLBACK_VTABLES({network_vtable, network_object_find}),
+        .node_enumerator = network_node_enumerator,
+};
index cca1e0af33f8bf3ee67b94735a13a38bd09df5aa..68ed951425b917d9a7cbe93eb06d3398a728c05a 100644 (file)
@@ -3,9 +3,11 @@
 
 #include "sd-bus.h"
 
+#include "bus-object.h"
+
 typedef struct Link Link;
 
-extern const sd_bus_vtable network_vtable[];
+extern const BusObjectImplementation network_object;
 
 int network_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error);
 int network_object_find(sd_bus *bus, const char *path, const char *interface, void *userdata, void **found, sd_bus_error *error);