]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: expose DHCPServer interface on links
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Fri, 22 May 2020 09:56:59 +0000 (11:56 +0200)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Thu, 4 Jun 2020 09:16:15 +0000 (11:16 +0200)
src/network/networkd-link-bus.c
src/network/networkd-manager.c

index 54d6bb2330d7e752b02741aad014e7a2f928aad7..76daee69e84c98f7da511d3c713a88cea6948334 100644 (file)
@@ -760,6 +760,9 @@ int link_object_find(sd_bus *bus, const char *path, const char *interface, void
         if (r < 0)
                 return 0;
 
+        if (streq(interface, "org.freedesktop.network1.DHCPServer") && !link->dhcp_server)
+                return 0;
+
         *found = link;
 
         return 1;
index 0f67c106c3efb11409fe196287a4b13414d5d95e..abfdf7ff749739d342864509ec27e20fa7993dff 100644 (file)
@@ -24,6 +24,7 @@
 #include "local-addresses.h"
 #include "netlink-util.h"
 #include "network-internal.h"
+#include "networkd-dhcp-server-bus.h"
 #include "networkd-dhcp6.h"
 #include "networkd-link-bus.h"
 #include "networkd-manager-bus.h"
@@ -154,6 +155,10 @@ int manager_connect_bus(Manager *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");