summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-02-03 13:53:01 +0100
committerLennart Poettering <lennart@poettering.net>2015-02-03 13:53:01 +0100
commit8f084002eaf43e535f3697a31aeffb14946f9ab2 (patch)
tree27356bc1929893388e12f03de5a1f9eb1ecee8aa /src
parent9ca903cceb9b0c9148e3050e800b3f422ab6aab8 (diff)
loopback-setup: simplify code a bit
Diffstat (limited to 'src')
-rw-r--r--src/core/loopback-setup.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/core/loopback-setup.c b/src/core/loopback-setup.c
index e5c0c0c1f5..67ce160c19 100644
--- a/src/core/loopback-setup.c
+++ b/src/core/loopback-setup.c
@@ -83,12 +83,17 @@ int loopback_setup(void) {
return r;
r = start_loopback(rtnl);
- if (r == -EPERM) {
- if (!check_loopback(rtnl))
- return log_warning_errno(EPERM, "Failed to configure loopback device: %m");
- } else if (r < 0)
- return log_warning_errno(r, "Failed to configure loopback device: %m");
+ if (r < 0) {
+
+ /* If we lack the permissions to configure the
+ * loopback device, but we find it to be already
+ * configured, let's exit cleanly, in order to
+ * supported unprivileged containers. */
+ if (r == -EPERM && check_loopback(rtnl))
+ return 0;
+ return log_warning_errno(r, "Failed to configure loopback device: %m");
+ }
return 0;
}