From 210ae903e7f5e4813feaea9bbac1f03fa3be42cc Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@users.noreply.github.com>
Date: Tue, 24 Aug 2021 14:59:40 +0200
Subject: [PATCH 2/9] network: Add varlink server

Add a varlink server. In the next commits, we will implement a method
that queries the LLDP neighbors.
---
 src/network/meson.build        |  2 ++
 src/network/networkd-manager.c |  7 +++++++
 src/network/networkd-manager.h |  3 +++
 src/network/networkd-varlink.c | 34 ++++++++++++++++++++++++++++++++++
 src/network/networkd-varlink.h |  7 +++++++
 5 files changed, 53 insertions(+)
 create mode 100644 src/network/networkd-varlink.c
 create mode 100644 src/network/networkd-varlink.h

diff --git a/src/network/meson.build b/src/network/meson.build
index 48d185195c..d93e815fdf 100644
--- a/src/network/meson.build
+++ b/src/network/meson.build
@@ -137,6 +137,8 @@ sources = files(
         'networkd-sysctl.h',
         'networkd-util.c',
         'networkd-util.h',
+        'networkd-varlink.c',
+        'networkd-varlink.h',
         'networkd-wifi.c',
         'networkd-wifi.h',
         'tc/cake.c',
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
index 9d790224cc..5e4c5e38b4 100644
--- a/src/network/networkd-manager.c
+++ b/src/network/networkd-manager.c
@@ -41,6 +41,7 @@
 #include "networkd-routing-policy-rule.h"
 #include "networkd-speed-meter.h"
 #include "networkd-state-file.h"
+#include "networkd-varlink.h"
 #include "networkd-wifi.h"
 #include "ordered-set.h"
 #include "path-lookup.h"
@@ -544,6 +545,8 @@ Manager* manager_free(Manager *m) {
 
         m->fw_ctx = fw_ctx_free(m->fw_ctx);
 
+        manager_varlink_done(m);
+
         return mfree(m);
 }
 
@@ -553,6 +556,10 @@ int manager_start(Manager *m) {
 
         assert(m);
 
+        r = manager_varlink_init(m);
+        if (r < 0)
+                return r;
+
         r = manager_start_speed_meter(m);
         if (r < 0)
                 return log_error_errno(r, "Failed to initialize speed meter: %m");
diff --git a/src/network/networkd-manager.h b/src/network/networkd-manager.h
index 36313589a3..a0c0336ce5 100644
--- a/src/network/networkd-manager.h
+++ b/src/network/networkd-manager.h
@@ -16,6 +16,7 @@
 #include "ordered-set.h"
 #include "set.h"
 #include "time-util.h"
+#include "varlink.h"
 
 struct Manager {
         sd_netlink *rtnl;
@@ -95,6 +96,8 @@ struct Manager {
         FirewallContext *fw_ctx;
 
         OrderedSet *request_queue;
+
+        VarlinkServer *varlink_server;
 };
 
 int manager_new(Manager **ret, bool test_mode);
diff --git a/src/network/networkd-varlink.c b/src/network/networkd-varlink.c
new file mode 100644
index 0000000000..57d8acb967
--- /dev/null
+++ b/src/network/networkd-varlink.c
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "networkd-varlink.h"
+
+int manager_varlink_init(Manager *m) {
+        _cleanup_(varlink_server_unrefp) VarlinkServer *s = NULL;
+        int r;
+
+        assert(m);
+
+        if (m->varlink_server)
+                return 0;
+
+        r = varlink_server_new(&s, VARLINK_SERVER_ACCOUNT_UID);
+        if (r < 0)
+                return log_error_errno(r, "Failed to allocate varlink server object: %m");
+
+        r = varlink_server_listen_address(s, "/run/systemd/netif/io.systemd.Network", 0666);
+        if (r < 0)
+                return log_error_errno(r, "Failed to bind to varlink socket: %m");
+
+        r = varlink_server_attach_event(s, m->event, SD_EVENT_PRIORITY_NORMAL);
+        if (r < 0)
+                return log_error_errno(r, "Failed to attach varlink connection to event loop: %m");
+
+        m->varlink_server = TAKE_PTR(s);
+        return 0;
+}
+
+void manager_varlink_done(Manager *m) {
+        assert(m);
+
+        m->varlink_server = varlink_server_unref(m->varlink_server);
+}
diff --git a/src/network/networkd-varlink.h b/src/network/networkd-varlink.h
new file mode 100644
index 0000000000..657e054a51
--- /dev/null
+++ b/src/network/networkd-varlink.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+#include "networkd-manager.h"
+
+int manager_varlink_init(Manager *m);
+void manager_varlink_done(Manager *m);
-- 
2.35.1

