diff -wurb qemu/slirp/udp.c qemu-patched/slirp/udp.c --- qemu/slirp/udp.c 2005-07-03 19:08:43.000000000 +0200 +++ qemu-patched/slirp/udp.c 2006-05-02 12:19:22.000000000 +0200 @@ -312,8 +312,11 @@ struct sockaddr_in saddr, daddr; saddr = *addr; - if ((so->so_faddr.s_addr & htonl(0xffffff00)) == special_addr.s_addr) + if ((so->so_faddr.s_addr & htonl(0xffffff00)) == special_addr.s_addr) { saddr.sin_addr.s_addr = so->so_faddr.s_addr; + if ((so->so_faddr.s_addr & htonl(0x000000ff)) == htonl(0xff)) + saddr.sin_addr.s_addr = special_addr.s_addr | htonl(CTL_ALIAS); + } daddr.sin_addr = so->so_laddr; daddr.sin_port = so->so_lport;