Date: Fri, 25 Oct 2013 06:15:24 +0000 (UTC) From: "Andrey V. Elsukov" <ae@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r257104 - user/ae/inet6/sys/netinet6 Message-ID: <201310250615.r9P6FOV1024436@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ae Date: Fri Oct 25 06:15:23 2013 New Revision: 257104 URL: http://svnweb.freebsd.org/changeset/base/257104 Log: Don't do route lookup for link-local addresses. Modified: user/ae/inet6/sys/netinet6/in6.c Modified: user/ae/inet6/sys/netinet6/in6.c ============================================================================== --- user/ae/inet6/sys/netinet6/in6.c Fri Oct 25 06:11:12 2013 (r257103) +++ user/ae/inet6/sys/netinet6/in6.c Fri Oct 25 06:15:23 2013 (r257104) @@ -2381,16 +2381,17 @@ in6_lltable_prefix_free(struct lltable * } static int -in6_lltable_rtcheck(struct ifnet *ifp, - u_int flags, - const struct sockaddr *l3addr) +in6_lltable_rtcheck(struct ifnet *ifp, u_int flags, + const struct sockaddr_in6 *l3addr) { struct rtentry *rt; char ip6buf[INET6_ADDRSTRLEN]; - KASSERT(l3addr->sa_family == AF_INET6, - ("sin_family %d", l3addr->sa_family)); + KASSERT(l3addr->sin6_family == AF_INET6, + ("sin_family %d", l3addr->sin6_family)); + if (IN6_IS_ADDR_LINKLOCAL(&l3addr->sin6_addr)) + return (0); /* Our local addresses are always only installed on the default FIB. */ /* XXX rtalloc1 should take a const param */ rt = in6_rtalloc1(__DECONST(struct sockaddr *, l3addr), 0, 0, @@ -2410,7 +2411,7 @@ in6_lltable_rtcheck(struct ifnet *ifp, return 0; } log(LOG_INFO, "IPv6 address: \"%s\" is not on the network\n", - ip6_sprintf(ip6buf, &((const struct sockaddr_in6 *)l3addr)->sin6_addr)); + ip6_sprintf(ip6buf, &l3addr->sin6_addr)); if (rt != NULL) RTFREE_LOCKED(rt); return EINVAL; @@ -2453,7 +2454,7 @@ in6_lltable_lookup(struct lltable *llt, * verify this. */ if (!(flags & LLE_IFADDR) && - in6_lltable_rtcheck(ifp, flags, l3addr) != 0) + in6_lltable_rtcheck(ifp, flags, sin6) != 0) return NULL; lle = in6_lltable_new(l3addr, flags);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201310250615.r9P6FOV1024436>