]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
nspawn: add helper settings_network_configured()
authorLennart Poettering <lennart@poettering.net>
Tue, 9 Nov 2021 17:21:15 +0000 (18:21 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 9 Nov 2021 17:32:10 +0000 (18:32 +0100)
The new helper returns whether the settings file had *any* networking
setting configured at all. We already have a similar helper
settings_private_network() which returns a similar result. The
difference is that the new helper will return true when the private
network was explicitly turned off, while the old one will only return
true if configured and enabled.

We'll reuse the helper a 2nd time later on, but even without it it makes
things a bit more readable.

src/nspawn/nspawn-settings.c
src/nspawn/nspawn-settings.h
src/nspawn/nspawn.c

index fc9e9fc54f2ad8a33fd613880de9d71bc03bcc7d..c63b8da23ae65637d70f686be214a33117747fec 100644 (file)
@@ -170,6 +170,8 @@ Settings* settings_free(Settings *s) {
 bool settings_private_network(Settings *s) {
         assert(s);
 
+        /* Determines whether we shall open up our own private network */
+
         return
                 s->private_network > 0 ||
                 s->network_veth > 0 ||
@@ -190,6 +192,25 @@ bool settings_network_veth(Settings *s) {
                 s->network_zone;
 }
 
+bool settings_network_configured(Settings *s) {
+        assert(s);
+
+        /* Determines whether any network configuration setting was used. (i.e. in contrast to
+         * settings_private_network() above this might also indicate if private networking was explicitly
+         * turned off.) */
+
+        return
+                s->private_network >= 0 ||
+                s->network_veth >= 0 ||
+                s->network_bridge ||
+                s->network_zone ||
+                s->network_interfaces ||
+                s->network_macvlan ||
+                s->network_ipvlan ||
+                s->network_veth_extra ||
+                s->network_namespace_path;
+}
+
 int settings_allocate_properties(Settings *s) {
         _cleanup_(sd_bus_unrefp) sd_bus *bus = NULL;
         int r;
index 1b3ace5f8fa0dc783797da308202510c2fb57419..797e383401b3734d3a3b3c967a5d9c033567f355 100644 (file)
@@ -242,6 +242,8 @@ Settings* settings_free(Settings *s);
 
 bool settings_network_veth(Settings *s);
 bool settings_private_network(Settings *s);
+bool settings_network_configured(Settings *s);
+
 int settings_allocate_properties(Settings *s);
 
 DEFINE_TRIVIAL_CLEANUP_FUNC(Settings*, settings_free);
index 1f327b09524070227bdc544cdaf7bab0faf51abd..f8f9e7242145c39a00ae61331614fc35bb60ab69 100644 (file)
@@ -4407,15 +4407,7 @@ static int merge_settings(Settings *settings, const char *path) {
         }
 
         if ((arg_settings_mask & SETTING_NETWORK) == 0 &&
-            (settings->private_network >= 0 ||
-             settings->network_veth >= 0 ||
-             settings->network_bridge ||
-             settings->network_zone ||
-             settings->network_interfaces ||
-             settings->network_macvlan ||
-             settings->network_ipvlan ||
-             settings->network_veth_extra ||
-             settings->network_namespace_path)) {
+            settings_network_configured(settings)) {
 
                 if (!arg_settings_trusted)
                         log_warning("Ignoring network settings, file %s is not trusted.", path);