From 97ab4c34986139b2419c563a3de7ddfe41727d07 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Fri, 2 Apr 2010 11:36:38 +0200 Subject: Fixes link-local addresses on BSD. --- sysdep/bsd/krt-sock.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'sysdep/bsd') diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c index 1dd09ae..1a2cc9f 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 */ -- cgit v1.2.3