diff options
author | brian <brian@FreeBSD.org> | 2002-08-29 02:44:58 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 2002-08-29 02:44:58 +0000 |
commit | 4a8007c87f865d6a7f92065a9a25755b840eb822 (patch) | |
tree | 3d3c39c0a4951159b05970965109d47aca8f77d7 /usr.sbin/ppp/ncpaddr.c | |
parent | 538db5220dfdbc2d35657e701341c46eba4116e0 (diff) | |
download | FreeBSD-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.c | 12 |
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; |