Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Feb 2010 01:09:08 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r204078 - user/kmacy/head_flowtable_v6/sys/net
Message-ID:  <201002190109.o1J1984Z032703@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Fri Feb 19 01:09:08 2010
New Revision: 204078
URL: http://svn.freebsd.org/changeset/base/204078

Log:
  - move in6_localaddr check out of the fast path and only check destination
    the source will of course be local if we're not forwarding

Modified:
  user/kmacy/head_flowtable_v6/sys/net/flowtable.c

Modified: user/kmacy/head_flowtable_v6/sys/net/flowtable.c
==============================================================================
--- user/kmacy/head_flowtable_v6/sys/net/flowtable.c	Thu Feb 18 23:20:15 2010	(r204077)
+++ user/kmacy/head_flowtable_v6/sys/net/flowtable.c	Fri Feb 19 01:09:08 2010	(r204078)
@@ -1053,10 +1053,6 @@ flowtable_lookup(struct flowtable *ft, s
 		dsin6 = (struct sockaddr_in6 *)dsa;
 		ssin6 = (struct sockaddr_in6 *)ssa;
 
-		if (in6_localaddr(&dsin6->sin6_addr) ||
-		    in6_localaddr(&ssin6->sin6_addr))
-			return (NULL);
-
 		flags |= FL_IPV6;
 		hash = ipv6_flow_lookup_hash_internal(ssin6, dsin6, key, flags);
 	}
@@ -1133,6 +1129,15 @@ uncached:
 		}
 #ifdef INET6
 		if (ssa->ss_family == AF_INET6) {
+			struct sockaddr_in6 *dsin6;
+
+			dsin6 = (struct sockaddr_in6 *)dsa;			
+			if (in6_localaddr(&dsin6->sin6_addr)) {
+				RTFREE(rt);
+				ro->ro_rt = NULL;
+				return (NULL);				
+			}
+
 			if (rt->rt_flags & RTF_GATEWAY)
 				l3addr = (struct sockaddr_storage *)rt->rt_gateway;
 			



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002190109.o1J1984Z032703>