]> git.proxmox.com Git - qemu.git/blobdiff - slirp/udp.c
vhost build fix for i386
[qemu.git] / slirp / udp.c
index 02b3793e9f1dace1de9101780e448c3619dff0ff..5b060f397bbb25b88e39f0557b265a11969ed406 100644 (file)
@@ -120,23 +120,26 @@ udp_input(register struct mbuf *m, int iphlen)
         /*
          *  handle DHCP/BOOTP
          */
-        if (ntohs(uh->uh_dport) == BOOTP_SERVER) {
-            bootp_input(m);
-            goto bad;
-        }
-
-        if (slirp->restricted) {
-            goto bad;
-        }
+        if (ntohs(uh->uh_dport) == BOOTP_SERVER &&
+            (ip->ip_dst.s_addr == slirp->vhost_addr.s_addr ||
+             ip->ip_dst.s_addr == 0xffffffff)) {
+                bootp_input(m);
+                goto bad;
+            }
 
         /*
          *  handle TFTP
          */
-        if (ntohs(uh->uh_dport) == TFTP_SERVER) {
+        if (ntohs(uh->uh_dport) == TFTP_SERVER &&
+            ip->ip_dst.s_addr == slirp->vhost_addr.s_addr) {
             tftp_input(m);
             goto bad;
         }
 
+        if (slirp->restricted) {
+            goto bad;
+        }
+
        /*
         * Locate pcb for datagram.
         */
@@ -219,7 +222,7 @@ udp_input(register struct mbuf *m, int iphlen)
 
        return;
 bad:
-       m_freem(m);
+       m_free(m);
        return;
 }