diff -ur orig/linux-2.5.75/net/ipv6/addrconf.c linux-2.5.75/net/ipv6/addrconf.c --- orig/linux-2.5.75/net/ipv6/addrconf.c 2003-07-10 23:14:49.000000000 +0300 +++ linux-2.5.75/net/ipv6/addrconf.c 2003-07-12 10:01:57.000000000 +0300 @@ -208,16 +208,15 @@ break; }; return type; - } + } else + type = IPV6_ADDR_UNICAST; + /* check for reserved anycast addresses */ - if ((st & htonl(0xE0000000)) && ((addr->s6_addr32[2] == htonl(0xFDFFFFFF) && (addr->s6_addr32[3] | htonl(0x7F)) == (u32)~0) || (addr->s6_addr32[2] == 0 && addr->s6_addr32[3] == 0))) - type = IPV6_ADDR_ANYCAST; - else - type = IPV6_ADDR_UNICAST; + type |= IPV6_ADDR_ANYCAST; /* Consider all addresses with the first three bits different of 000 and 111 as finished.