diff options
author | qingli <qingli@FreeBSD.org> | 2009-08-12 19:15:26 +0000 |
---|---|---|
committer | qingli <qingli@FreeBSD.org> | 2009-08-12 19:15:26 +0000 |
commit | d7ddc7ccbe531019ee08753204ac3d9210ea215f (patch) | |
tree | 3810b66a002c0d5ef0d1c5a22e03ea0563c235ac /sys/netinet6 | |
parent | cda13d6d86bd52b9bdbe8d98d739aeccaf6ddff9 (diff) | |
download | FreeBSD-src-d7ddc7ccbe531019ee08753204ac3d9210ea215f.zip FreeBSD-src-d7ddc7ccbe531019ee08753204ac3d9210ea215f.tar.gz |
A piece of code was added to install a host route when an IPv6 interface
address is configured with a /128 prefix. This is no longer necessary due
to r192011. In fact that code conflicts with r192011. This patch removes
the host route installation when detecting the /128 prefix, and instead
let the code added by r192011 to install the loopback route for that IPv6
interface address.
Reviewed by: bz
Approved by: re
Diffstat (limited to 'sys/netinet6')
-rw-r--r-- | sys/netinet6/in6.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c index c099da7..c4333ed 100644 --- a/sys/netinet6/in6.c +++ b/sys/netinet6/in6.c @@ -1750,21 +1750,12 @@ in6_ifinit(struct ifnet *ifp, struct in6_ifaddr *ia, * interface that share the same destination. */ plen = in6_mask2len(&ia->ia_prefixmask.sin6_addr, NULL); /* XXX */ - if (!(ia->ia_flags & IFA_ROUTE) && plen == 128) { - struct sockaddr *dstaddr; + if (!(ia->ia_flags & IFA_ROUTE) && plen == 128 && + ia->ia_dstaddr.sin6_family == AF_INET6) { int rtflags = RTF_UP | RTF_HOST; - /* - * use the interface address if configuring an - * interface address with a /128 prefix len - */ - if (ia->ia_dstaddr.sin6_family == AF_INET6) - dstaddr = (struct sockaddr *)&ia->ia_dstaddr; - else - dstaddr = (struct sockaddr *)&ia->ia_addr; - error = rtrequest(RTM_ADD, - (struct sockaddr *)dstaddr, + (struct sockaddr *)&ia->ia_dstaddr, (struct sockaddr *)&ia->ia_addr, (struct sockaddr *)&ia->ia_prefixmask, ia->ia_flags | rtflags, NULL); |