chiark / gitweb /
Fix check_loopback()
[elogind.git] / src / core / loopback-setup.c
index ca8ac4ea6170ee73491b64a4fddd332c496e6e1c..ab6335c0ceb576198b03630ac7288b90dae25dd7 100644 (file)
@@ -64,7 +64,7 @@ static int check_loopback(void) {
                 struct sockaddr_in in;
         } sa = {
                 .in.sin_family = AF_INET,
-                .in.sin_addr.s_addr = INADDR_LOOPBACK,
+                .in.sin_addr.s_addr = htonl(INADDR_LOOPBACK),
         };
 
         /* If we failed to set up the loop back device, check whether
@@ -92,14 +92,10 @@ int loopback_setup(void) {
 
         r = start_loopback(rtnl);
         if (r == -EPERM) {
-                if (check_loopback() < 0) {
-                        log_warning_errno(EPERM, "Failed to configure loopback device: %m");
-                        return -EPERM;
-                }
-        } else if (r < 0) {
-                log_warning_errno(r, "Failed to configure loopback device: %m");
-                return r;
-        }
+                if (check_loopback() < 0)
+                        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");
 
 
         return 0;