svn commit: r204078 - user/kmacy/head_flowtable_v6/sys/net

Kip Macy kmacy at FreeBSD.org
Fri Feb 19 01:09:08 UTC 2010


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;
 			


More information about the svn-src-user mailing list