mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08:00
Merge pull request #21436 from yuwata/network-bus-introspect
network: add --bus-introspect option
This commit is contained in:
507
man/org.freedesktop.network1.xml
Normal file
507
man/org.freedesktop.network1.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -57,6 +57,7 @@ manpages = [
|
||||
['org.freedesktop.locale1', '5', [], 'ENABLE_LOCALED'],
|
||||
['org.freedesktop.login1', '5', [], 'ENABLE_LOGIND'],
|
||||
['org.freedesktop.machine1', '5', [], 'ENABLE_MACHINED'],
|
||||
['org.freedesktop.network1', '5', [], 'ENABLE_NETWORKD'],
|
||||
['org.freedesktop.oom1', '5', [], 'ENABLE_OOMD'],
|
||||
['org.freedesktop.portable1', '5', [], 'ENABLE_PORTABLED'],
|
||||
['org.freedesktop.resolve1', '5', [], 'ENABLE_RESOLVE'],
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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),
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -7,13 +7,16 @@
|
||||
#include "sd-daemon.h"
|
||||
#include "sd-event.h"
|
||||
|
||||
#include "bus-log-control-api.h"
|
||||
#include "capability-util.h"
|
||||
#include "daemon-util.h"
|
||||
#include "firewall-util.h"
|
||||
#include "main-func.h"
|
||||
#include "mkdir-label.h"
|
||||
#include "networkd-conf.h"
|
||||
#include "networkd-manager-bus.h"
|
||||
#include "networkd-manager.h"
|
||||
#include "service-util.h"
|
||||
#include "signal-util.h"
|
||||
#include "user-util.h"
|
||||
|
||||
@@ -24,6 +27,13 @@ static int run(int argc, char *argv[]) {
|
||||
|
||||
log_setup();
|
||||
|
||||
r = service_parse_argv("systemd-networkd.service",
|
||||
"Manage and configure network devices, create virtual network devices",
|
||||
BUS_IMPLEMENTATIONS(&manager_object, &log_control_object),
|
||||
argc, argv);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
umask(0022);
|
||||
|
||||
if (argc != 1)
|
||||
|
||||
Reference in New Issue
Block a user