VirtualBox

Ignore:
Timestamp:
Nov 13, 2007 4:47:27 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
26086
Message:

Fix UDP forwarding in the NAT code. Was completely broken.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/slirp/udp.c

    r1824 r5723  
    307307            saddr.sin_addr.s_addr = alias_addr.s_addr;
    308308    }
     309    /* Any UDP packet to the loopback address must be translated to be from
     310     * the forwarding address, i.e. 10.0.2.2. */
     311    if (   (saddr.sin_addr.s_addr & htonl(IN_CLASSA_NET))
     312        == htonl(INADDR_LOOPBACK & IN_CLASSA_NET))
     313        saddr.sin_addr.s_addr = alias_addr.s_addr;
     314
    309315    daddr.sin_addr = so->so_laddr;
    310316    daddr.sin_port = so->so_lport;
     
    647653        getsockname(so->s,(struct sockaddr *)&addr,&addrlen);
    648654        so->so_fport = addr.sin_port;
    649         if (addr.sin_addr.s_addr == 0 || addr.sin_addr.s_addr == loopback_addr.s_addr)
     655        /* The original check was completely broken, as the commented out
     656         * if statement was always true (INADDR_ANY=0). */
     657        /* if (addr.sin_addr.s_addr == 0 || addr.sin_addr.s_addr == loopback_addr.s_addr) */
     658        if (1 == 0)                 /* always use the else part */
    650659           so->so_faddr = alias_addr;
    651660        else
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette