From cf72a786609f8130466014fb7efeaf042ab39d49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 22 May 2020 11:56:59 +0200 Subject: [PATCH] networkd: expose DHCPServer interface on links --- src/network/networkd-link-bus.c | 3 +++ src/network/networkd-manager.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/network/networkd-link-bus.c b/src/network/networkd-link-bus.c index 54d6bb2330..76daee69e8 100644 --- a/src/network/networkd-link-bus.c +++ b/src/network/networkd-link-bus.c @@ -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; diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index 0f67c106c3..abfdf7ff74 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -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");