From 00b203ad445b40faf5836a3ca9a6c1ec89165c23 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/7] 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 | 11 +++++++----
 src/network/networkd-varlink.c | 34 ++++++++++++++++++++++++++++++++++
 src/network/networkd-varlink.h |  7 +++++++
 5 files changed, 57 insertions(+), 4 deletions(-)
 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 b09c18dbbd..90ae4ed238 100644
--- a/src/network/meson.build
+++ b/src/network/meson.build
@@ -145,6 +145,8 @@ sources = files(
         'networkd-sysctl.h',
         'networkd-util.c',
         'networkd-util.h',
+        'networkd-varlink.c',
+        'networkd-varlink.h',
         'networkd-wifi.c',
         'networkd-wifi.h',
         'networkd-wiphy.c',
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
index cdfd29bc0e..9f859408a1 100644
--- a/src/network/networkd-manager.c
+++ b/src/network/networkd-manager.c
@@ -44,6 +44,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 "networkd-wiphy.h"
 #include "ordered-set.h"
@@ -667,6 +668,8 @@ Manager* manager_free(Manager *m) {
 
         m->fw_ctx = fw_ctx_free(m->fw_ctx);
 
+        manager_varlink_done(m);
+
         return mfree(m);
 }
 
@@ -676,6 +679,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 40e6092f85..dfdd44baf8 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;
@@ -62,8 +63,8 @@ struct Manager {
         bool has_product_uuid;
         bool product_uuid_requested;
 
-        char* dynamic_hostname;
-        char* dynamic_timezone;
+        char *dynamic_hostname;
+        char *dynamic_timezone;
 
         Set *rules;
 
@@ -100,10 +101,12 @@ struct Manager {
         OrderedSet *request_queue;
 
         Hashmap *tuntap_fds_by_name;
+
+        VarlinkServer *varlink_server;
 };
 
 int manager_new(Manager **ret, bool test_mode);
-Manager* manager_free(Manager *m);
+Manager *manager_free(Manager *m);
 
 int manager_setup(Manager *m);
 int manager_start(Manager *m);
@@ -115,4 +118,4 @@ int manager_enumerate(Manager *m);
 int manager_set_hostname(Manager *m, const char *hostname);
 int manager_set_timezone(Manager *m, const char *timezone);
 
-DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
+DEFINE_TRIVIAL_CLEANUP_FUNC(Manager *, manager_free);
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.41.0

