1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-06 00:58:29 +03:00

Merge pull request #21436 from yuwata/network-bus-introspect

network: add --bus-introspect option
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2021-11-19 09:42:46 +01:00 committed by GitHub
commit 39c37ca2d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 566 additions and 34 deletions

View File

@ -0,0 +1,507 @@
<?xml version="1.0"?>
<!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.network1" conditional='ENABLE_NETWORKD'
xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
<title>org.freedesktop.network1</title>
<productname>systemd</productname>
</refentryinfo>
<refmeta>
<refentrytitle>org.freedesktop.network1</refentrytitle>
<manvolnum>5</manvolnum>
</refmeta>
<refnamediv>
<refname>org.freedesktop.network1</refname>
<refpurpose>The D-Bus interface of systemd-networkd</refpurpose>
</refnamediv>
<refsect1>
<title>Introduction</title>
<para>
<citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
is a system service that manages and configures network interfaces. This page describes the D-Bus
interface.</para>
</refsect1>
<refsect1>
<title>The Manager Object</title>
<para>The service exposes the following interfaces on the Manager object on the bus:</para>
<programlisting executable="systemd-networkd" node="/org/freedesktop/network1" interface="org.freedesktop.network1.Manager">
node /org/freedesktop/network1 {
interface org.freedesktop.network1.Manager {
methods:
ListLinks(out a(iso) links);
GetLinkByName(in s name,
out i ifindex,
out o path);
GetLinkByIndex(in i ifindex,
out s name,
out o path);
SetLinkNTP(in i ifindex,
in as servers);
SetLinkDNS(in i ifindex,
in a(iay) addresses);
SetLinkDNSEx(in i ifindex,
in a(iayqs) addresses);
SetLinkDomains(in i ifindex,
in a(sb) domains);
SetLinkDefaultRoute(in i ifindex,
in b enable);
SetLinkLLMNR(in i ifindex,
in s mode);
SetLinkMulticastDNS(in i ifindex,
in s mode);
SetLinkDNSOverTLS(in i ifindex,
in s mode);
SetLinkDNSSEC(in i ifindex,
in s mode);
SetLinkDNSSECNegativeTrustAnchors(in i ifindex,
in as names);
RevertLinkNTP(in i ifindex);
RevertLinkDNS(in i ifindex);
RenewLink(in i ifindex);
ForceRenewLink(in i ifindex);
ReconfigureLink(in i ifindex);
Reload();
DescribeLink(in i ifindex,
out s json);
Describe(out s json);
properties:
readonly s OperationalState = '...';
readonly s CarrierState = '...';
readonly s AddressState = '...';
readonly s IPv4AddressState = '...';
readonly s IPv6AddressState = '...';
readonly s OnlineState = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly t NamespaceId = ...;
};
interface org.freedesktop.DBus.Peer { ... };
interface org.freedesktop.DBus.Introspectable { ... };
interface org.freedesktop.DBus.Properties { ... };
};
</programlisting>
<!--method ListLinks is not documented!-->
<!--method GetLinkByName is not documented!-->
<!--method GetLinkByIndex is not documented!-->
<!--method SetLinkNTP is not documented!-->
<!--method SetLinkDNS is not documented!-->
<!--method SetLinkDNSEx is not documented!-->
<!--method SetLinkDomains is not documented!-->
<!--method SetLinkDefaultRoute is not documented!-->
<!--method SetLinkLLMNR is not documented!-->
<!--method SetLinkMulticastDNS is not documented!-->
<!--method SetLinkDNSOverTLS is not documented!-->
<!--method SetLinkDNSSEC is not documented!-->
<!--method SetLinkDNSSECNegativeTrustAnchors is not documented!-->
<!--method RevertLinkNTP is not documented!-->
<!--method RevertLinkDNS is not documented!-->
<!--method RenewLink is not documented!-->
<!--method ForceRenewLink is not documented!-->
<!--method ReconfigureLink is not documented!-->
<!--method Reload is not documented!-->
<!--method DescribeLink is not documented!-->
<!--method Describe is not documented!-->
<!--property OperationalState is not documented!-->
<!--property CarrierState is not documented!-->
<!--property AddressState is not documented!-->
<!--property IPv4AddressState is not documented!-->
<!--property IPv6AddressState is not documented!-->
<!--property OnlineState is not documented!-->
<!--property NamespaceId is not documented!-->
<!--Autogenerated cross-references for systemd.directives, do not edit-->
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.network1.Manager"/>
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.network1.Manager"/>
<variablelist class="dbus-method" generated="True" extra-ref="ListLinks()"/>
<variablelist class="dbus-method" generated="True" extra-ref="GetLinkByName()"/>
<variablelist class="dbus-method" generated="True" extra-ref="GetLinkByIndex()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLinkNTP()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLinkDNS()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLinkDNSEx()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLinkDomains()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLinkDefaultRoute()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLinkLLMNR()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLinkMulticastDNS()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLinkDNSOverTLS()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLinkDNSSEC()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLinkDNSSECNegativeTrustAnchors()"/>
<variablelist class="dbus-method" generated="True" extra-ref="RevertLinkNTP()"/>
<variablelist class="dbus-method" generated="True" extra-ref="RevertLinkDNS()"/>
<variablelist class="dbus-method" generated="True" extra-ref="RenewLink()"/>
<variablelist class="dbus-method" generated="True" extra-ref="ForceRenewLink()"/>
<variablelist class="dbus-method" generated="True" extra-ref="ReconfigureLink()"/>
<variablelist class="dbus-method" generated="True" extra-ref="Reload()"/>
<variablelist class="dbus-method" generated="True" extra-ref="DescribeLink()"/>
<variablelist class="dbus-method" generated="True" extra-ref="Describe()"/>
<variablelist class="dbus-property" generated="True" extra-ref="OperationalState"/>
<variablelist class="dbus-property" generated="True" extra-ref="CarrierState"/>
<variablelist class="dbus-property" generated="True" extra-ref="AddressState"/>
<variablelist class="dbus-property" generated="True" extra-ref="IPv4AddressState"/>
<variablelist class="dbus-property" generated="True" extra-ref="IPv6AddressState"/>
<variablelist class="dbus-property" generated="True" extra-ref="OnlineState"/>
<variablelist class="dbus-property" generated="True" extra-ref="NamespaceId"/>
<!--End of Autogenerated section-->
<para>
Provides information about the manager.
</para>
</refsect1>
<refsect1>
<title>Link Object</title>
<programlisting executable="systemd-networkd" node="/org/freedesktop/network1/link/_1" interface="org.freedesktop.network1.Link">
node /org/freedesktop/network1/link/_1 {
interface org.freedesktop.network1.Link {
methods:
SetNTP(in as servers);
SetDNS(in a(iay) addresses);
SetDNSEx(in a(iayqs) addresses);
SetDomains(in a(sb) domains);
SetDefaultRoute(in b enable);
SetLLMNR(in s mode);
SetMulticastDNS(in s mode);
SetDNSOverTLS(in s mode);
SetDNSSEC(in s mode);
SetDNSSECNegativeTrustAnchors(in as names);
RevertNTP();
RevertDNS();
Renew();
ForceRenew();
Reconfigure();
Describe(out s json);
properties:
readonly s OperationalState = '...';
readonly s CarrierState = '...';
readonly s AddressState = '...';
readonly s IPv4AddressState = '...';
readonly s IPv6AddressState = '...';
readonly s OnlineState = '...';
readonly s AdministrativeState = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly (tt) BitRates = ...;
};
interface org.freedesktop.DBus.Peer { ... };
interface org.freedesktop.DBus.Introspectable { ... };
interface org.freedesktop.DBus.Properties { ... };
interface org.freedesktop.network1.DHCPServer { ... };
};
</programlisting>
<!--method SetNTP is not documented!-->
<!--method SetDNS is not documented!-->
<!--method SetDNSEx is not documented!-->
<!--method SetDomains is not documented!-->
<!--method SetDefaultRoute is not documented!-->
<!--method SetLLMNR is not documented!-->
<!--method SetMulticastDNS is not documented!-->
<!--method SetDNSOverTLS is not documented!-->
<!--method SetDNSSEC is not documented!-->
<!--method SetDNSSECNegativeTrustAnchors is not documented!-->
<!--method RevertNTP is not documented!-->
<!--method RevertDNS is not documented!-->
<!--method Renew is not documented!-->
<!--method ForceRenew is not documented!-->
<!--method Reconfigure is not documented!-->
<!--method Describe is not documented!-->
<!--property OperationalState is not documented!-->
<!--property CarrierState is not documented!-->
<!--property AddressState is not documented!-->
<!--property IPv4AddressState is not documented!-->
<!--property IPv6AddressState is not documented!-->
<!--property OnlineState is not documented!-->
<!--property AdministrativeState is not documented!-->
<!--property BitRates is not documented!-->
<!--Autogenerated cross-references for systemd.directives, do not edit-->
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.network1.DHCPServer"/>
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.network1.Link"/>
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.network1.DHCPServer"/>
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.network1.Link"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetNTP()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetDNS()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetDNSEx()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetDomains()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetDefaultRoute()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetLLMNR()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetMulticastDNS()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetDNSOverTLS()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetDNSSEC()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetDNSSECNegativeTrustAnchors()"/>
<variablelist class="dbus-method" generated="True" extra-ref="RevertNTP()"/>
<variablelist class="dbus-method" generated="True" extra-ref="RevertDNS()"/>
<variablelist class="dbus-method" generated="True" extra-ref="Renew()"/>
<variablelist class="dbus-method" generated="True" extra-ref="ForceRenew()"/>
<variablelist class="dbus-method" generated="True" extra-ref="Reconfigure()"/>
<variablelist class="dbus-method" generated="True" extra-ref="Describe()"/>
<variablelist class="dbus-property" generated="True" extra-ref="OperationalState"/>
<variablelist class="dbus-property" generated="True" extra-ref="CarrierState"/>
<variablelist class="dbus-property" generated="True" extra-ref="AddressState"/>
<variablelist class="dbus-property" generated="True" extra-ref="IPv4AddressState"/>
<variablelist class="dbus-property" generated="True" extra-ref="IPv6AddressState"/>
<variablelist class="dbus-property" generated="True" extra-ref="OnlineState"/>
<variablelist class="dbus-property" generated="True" extra-ref="AdministrativeState"/>
<variablelist class="dbus-property" generated="True" extra-ref="BitRates"/>
<!--End of Autogenerated section-->
<para>
Provides information about interfaces.
</para>
</refsect1>
<refsect1>
<title>Network Object</title>
<programlisting executable="systemd-networkd" node="/org/freedesktop/network1/network/_1" interface="org.freedesktop.network1.Network">
node /org/freedesktop/network1/network/_1 {
interface org.freedesktop.network1.Network {
properties:
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly s Description = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly s SourcePath = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly as MatchMAC = ['...', ...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly as MatchPath = ['...', ...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly as MatchDriver = ['...', ...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly as MatchType = ['...', ...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly as MatchName = ['...', ...];
};
interface org.freedesktop.DBus.Peer { ... };
interface org.freedesktop.DBus.Introspectable { ... };
interface org.freedesktop.DBus.Properties { ... };
};
</programlisting>
<!--property Description is not documented!-->
<!--property SourcePath is not documented!-->
<!--property MatchMAC is not documented!-->
<!--property MatchPath is not documented!-->
<!--property MatchDriver is not documented!-->
<!--property MatchType is not documented!-->
<!--property MatchName is not documented!-->
<!--Autogenerated cross-references for systemd.directives, do not edit-->
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.network1.Network"/>
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.network1.Network"/>
<variablelist class="dbus-property" generated="True" extra-ref="Description"/>
<variablelist class="dbus-property" generated="True" extra-ref="SourcePath"/>
<variablelist class="dbus-property" generated="True" extra-ref="MatchMAC"/>
<variablelist class="dbus-property" generated="True" extra-ref="MatchPath"/>
<variablelist class="dbus-property" generated="True" extra-ref="MatchDriver"/>
<variablelist class="dbus-property" generated="True" extra-ref="MatchType"/>
<variablelist class="dbus-property" generated="True" extra-ref="MatchName"/>
<!--End of Autogenerated section-->
<para>
Provides information about .network files.
</para>
</refsect1>
<refsect1>
<title>DHCP Server Object</title>
<programlisting executable="systemd-networkd" node="/org/freedesktop/network1/link/_1" interface="org.freedesktop.network1.DHCPServer">
node /org/freedesktop/network1/link/_1 {
interface org.freedesktop.network1.DHCPServer {
properties:
readonly a(uayayayayt) Leases = [...];
};
interface org.freedesktop.DBus.Peer { ... };
interface org.freedesktop.DBus.Introspectable { ... };
interface org.freedesktop.DBus.Properties { ... };
};
</programlisting>
<!--property Leases is not documented!-->
<!--Autogenerated cross-references for systemd.directives, do not edit-->
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.network1.DHCPServer"/>
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.network1.DHCPServer"/>
<variablelist class="dbus-property" generated="True" extra-ref="Leases"/>
<!--End of Autogenerated section-->
<para>
Provides information about leases.
</para>
</refsect1>
<refsect1>
<title>Examples</title>
<example>
<title>Introspect <interfacename>org.freedesktop.network1.Manager</interfacename> on the bus</title>
<programlisting>
$ gdbus introspect --system \
--dest org.freedesktop.network1 \
--object-path /org/freedesktop/network1
</programlisting>
</example>
<example>
<title>Introspect <interfacename>org.freedesktop.network1.Link</interfacename> on the bus</title>
<programlisting>
$ gdbus introspect --system \
--dest org.freedesktop.network1 \
--object-path /org/freedesktop/network1/link/_11
</programlisting>
</example>
</refsect1>
<refsect1>
<title>Versioning</title>
<para>These D-Bus interfaces follow <ulink url="http://0pointer.de/blog/projects/versioning-dbus.html">
the usual interface versioning guidelines</ulink>.</para>
</refsect1>
</refentry>

View File

@ -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'],

View 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,
};

View 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);

View 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,
};

View 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);

View 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),
};

View 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);

View 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)

View 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,
};

View 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);

View File

@ -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)