From: Ondrej Zajicek Date: Fri, 2 Apr 2010 09:36:38 +0000 (+0200) Subject: Fixes link-local addresses on BSD. X-Git-Tag: v1.2.2~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=97ab4c34986139b2419c563a3de7ddfe41727d07;p=thirdparty%2Fbird.git Fixes link-local addresses on BSD. --- diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c index 1dd09ae9b..1a2cc9f27 100644 --- a/sysdep/bsd/krt-sock.c +++ b/sysdep/bsd/krt-sock.c @@ -515,6 +515,14 @@ krt_read_addr(struct ks_msg *msg) } ifa.scope = scope & IADDR_SCOPE_MASK; + /* BSD returns some scope/interface ID as a part of link-local address */ + if (scope == (IADDR_HOST | SCOPE_LINK)) + { + /* Clean up that */ + _I0(ifa.ip) = 0xfe800000; + _I1(ifa.ip) = 0x00000000; + } + if (iface->flags & IF_MULTIACCESS) ifa.prefix = ipa_and(ifa.ip, ipa_mkmask(masklen)); else /* PtP iface */