diff --git a/src/ip_utils.cpp b/src/ip_utils.cpp
index c4d6d29cb95f5731b5405c39bff924800f988a64..67417637f8c799ba92f0a4b4a9e31530cdab8113 100644
--- a/src/ip_utils.cpp
+++ b/src/ip_utils.cpp
@@ -333,7 +333,8 @@ IpAddr::isLoopback() const
 {
     switch (addr.addr.sa_family) {
     case AF_INET: {
-        uint8_t b1 = (uint8_t)(addr.ipv4.sin_addr.s_addr >> 24);
+        auto addr_host = ntohl(addr.ipv4.sin_addr.s_addr);
+        uint8_t b1 = (uint8_t)(addr_host >> 24);
         return b1 == 127;
     }
     case AF_INET6:
@@ -350,10 +351,11 @@ IpAddr::isPrivate() const
         return true;
     }
     switch (addr.addr.sa_family) {
-    case AF_INET:
+    case AF_INET: {
+        auto addr_host = ntohl(addr.ipv4.sin_addr.s_addr);
         uint8_t b1, b2;
-        b1 = (uint8_t)(addr.ipv4.sin_addr.s_addr >> 24);
-        b2 = (uint8_t)((addr.ipv4.sin_addr.s_addr >> 16) & 0x0ff);
+        b1 = (uint8_t)(addr_host >> 24);
+        b2 = (uint8_t)((addr_host >> 16) & 0x0ff);
         // 10.x.y.z
         if (b1 == 10)
             return true;
@@ -364,6 +366,7 @@ IpAddr::isPrivate() const
         if ((b1 == 192) && (b2 == 168))
             return true;
         return false;
+    }
     case AF_INET6: {
         const pj_uint8_t* addr6 = reinterpret_cast<const pj_uint8_t*>(&addr.ipv6.sin6_addr);
         if (addr6[0] == 0xfc)