summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/ncpaddr.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>2002-08-29 02:44:58 +0000
committerbrian <brian@FreeBSD.org>2002-08-29 02:44:58 +0000
commit4a8007c87f865d6a7f92065a9a25755b840eb822 (patch)
tree3d3c39c0a4951159b05970965109d47aca8f77d7 /usr.sbin/ppp/ncpaddr.c
parent538db5220dfdbc2d35657e701341c46eba4116e0 (diff)
downloadFreeBSD-src-4a8007c87f865d6a7f92065a9a25755b840eb822.zip
FreeBSD-src-4a8007c87f865d6a7f92065a9a25755b840eb822.tar.gz
- made ppp compliant to RFC 2472 (based on a patch from another
contributor) - support ipv6cpretry and ipv6cpretries, which are IPv6 versions of ipcpretry and ipcpretries. - improve handling of IPv6 link-local addresses Submitted by: JINMEI Tatuya <jinmei@isl.rdc.toshiba.co.jp>
Diffstat (limited to 'usr.sbin/ppp/ncpaddr.c')
-rw-r--r--usr.sbin/ppp/ncpaddr.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/usr.sbin/ppp/ncpaddr.c b/usr.sbin/ppp/ncpaddr.c
index 3d2d356..5b19d25 100644
--- a/usr.sbin/ppp/ncpaddr.c
+++ b/usr.sbin/ppp/ncpaddr.c
@@ -163,12 +163,19 @@ static void
adjust_linklocal(struct sockaddr_in6 *sin6)
{
/* XXX: ?????!?!?!!!!! This is horrible ! */
+#if 0
+ /*
+ * The kernel does not understand sin6_scope_id for routing at this moment.
+ * We should rather keep the embedded ID.
+ * jinmei@kame.net, 20011026
+ */
if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr) ||
IN6_IS_ADDR_MC_LINKLOCAL(&sin6->sin6_addr)) {
sin6->sin6_scope_id =
ntohs(*(u_short *)&sin6->sin6_addr.s6_addr[2]);
*(u_short *)&sin6->sin6_addr.s6_addr[2] = 0;
}
+#endif
}
#endif
@@ -379,8 +386,13 @@ ncpaddr_ntowa(const struct ncpaddr *addr)
sin6.sin6_family = AF_INET6;
sin6.sin6_addr = addr->ncpaddr_ip6addr;
adjust_linklocal(&sin6);
+#ifdef NI_WITHSCOPEID
if (getnameinfo((struct sockaddr *)&sin6, sizeof sin6, res, sizeof(res),
NULL, 0, NI_WITHSCOPEID | NI_NUMERICHOST) != 0)
+#else
+ if (getnameinfo((struct sockaddr *)&sin6, sizeof sin6, res, sizeof(res),
+ NULL, 0, NI_NUMERICHOST) != 0)
+#endif
break;
return res;
OpenPOWER on IntegriCloud