summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2011-12-07 22:50:55 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2011-12-29 21:41:34 +0100
commit484e03a6864c4476814acc93e5b810cb12fa994f (patch)
tree6a17a5ce90c2efdc84079781c9cb69fd41072c71
parentc32c3f88f0c8788118ed3701c11a5aea2aaf9356 (diff)
downloadbird-484e03a6864c4476814acc93e5b810cb12fa994f.tar
bird-484e03a6864c4476814acc93e5b810cb12fa994f.zip
BSD: Correctly read numbered v6 addresses on ptp interfaces
When using IPv6, unnumbered interfaces can have numbered IP addresses; one example are link-local addresses, which always have a prefix length of 64.
-rw-r--r--sysdep/bsd/krt-sock.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c
index 1647c5e..b70f166 100644
--- a/sysdep/bsd/krt-sock.c
+++ b/sysdep/bsd/krt-sock.c
@@ -544,7 +544,11 @@ krt_read_addr(struct ks_msg *msg)
_I0(ifa.ip) = 0xfe800000;
#endif
+#ifdef IPV6
+ if ((iface->flags & IF_MULTIACCESS) || (masklen != BITS_PER_IP_ADDRESS))
+#else
if (iface->flags & IF_MULTIACCESS)
+#endif
{
ifa.prefix = ipa_and(ifa.ip, ipa_mkmask(masklen));