]> Git Repo - qemu.git/blobdiff - slirp/ip_input.c
slirp: Rework internal configuration
[qemu.git] / slirp / ip_input.c
index c37412e8cf2ea40a710eec34c724f9bc0aa3f79e..7a3c88b5497471f6ec7ce9ec67bb3b734df06846 100644 (file)
@@ -134,18 +134,19 @@ ip_input(struct mbuf *m)
        }
 
     if (slirp_restrict) {
-        if (memcmp(&ip->ip_dst.s_addr, &special_addr, 3)) {
+        if ((ip->ip_dst.s_addr & vnetwork_mask.s_addr) ==
+            vnetwork_addr.s_addr) {
             if (ip->ip_dst.s_addr == 0xffffffff && ip->ip_p != IPPROTO_UDP)
                 goto bad;
         } else {
-            int host = ntohl(ip->ip_dst.s_addr) & 0xff;
             struct ex_list *ex_ptr;
 
-            if (host == 0xff)
+            if ((ip->ip_dst.s_addr & ~vnetwork_mask.s_addr) ==
+                ~vnetwork_mask.s_addr)
                 goto bad;
 
             for (ex_ptr = exec_list; ex_ptr; ex_ptr = ex_ptr->ex_next)
-                if (ex_ptr->ex_addr == host)
+                if (ex_ptr->ex_addr.s_addr == ip->ip_dst.s_addr)
                     break;
 
             if (!ex_ptr)
This page took 0.024381 seconds and 4 git commands to generate.