ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/slirp/udp.c
(Generate patch)

Comparing BasiliskII/src/slirp/udp.c (file contents):
Revision 1.4 by gbeauche, 2006-03-25T07:57:38Z vs.
Revision 1.5 by gbeauche, 2007-11-03T11:11:42Z

# Line 312 | Line 312 | int udp_output(struct socket *so, struct
312      struct sockaddr_in saddr, daddr;
313  
314      saddr = *addr;
315 <    if ((so->so_faddr.s_addr & htonl(0xffffff00)) == special_addr.s_addr)
315 >    if ((so->so_faddr.s_addr & htonl(0xffffff00)) == special_addr.s_addr) {
316          saddr.sin_addr.s_addr = so->so_faddr.s_addr;
317 +        if ((so->so_faddr.s_addr & htonl(0x000000ff)) == htonl(0xff))
318 +            saddr.sin_addr.s_addr = alias_addr.s_addr;
319 +    }
320      daddr.sin_addr = so->so_laddr;
321      daddr.sin_port = so->so_lport;
322      
# Line 658 | Line 661 | udp_listen(port, laddr, lport, flags)
661          getsockname(so->s,(struct sockaddr *)&addr,&addrlen);
662          so->so_fport = addr.sin_port;
663          if (addr.sin_addr.s_addr == 0 || addr.sin_addr.s_addr == loopback_addr.s_addr)
664 <           so->so_faddr = our_addr;
664 >           so->so_faddr = alias_addr;
665          else
666             so->so_faddr = addr.sin_addr;
667          

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines