Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Feb 2010 05:06:48 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r203647 - user/kmacy/head_flowtable_v6/sys/net
Message-ID:  <201002080506.o1856mQm040608@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Mon Feb  8 05:06:47 2010
New Revision: 203647
URL: http://svn.freebsd.org/changeset/base/203647

Log:
  - reduce debugging noise
  - create separate flow to route routines for INET and INET6

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

Modified: user/kmacy/head_flowtable_v6/sys/net/flowtable.c
==============================================================================
--- user/kmacy/head_flowtable_v6/sys/net/flowtable.c	Mon Feb  8 04:12:10 2010	(r203646)
+++ user/kmacy/head_flowtable_v6/sys/net/flowtable.c	Mon Feb  8 05:06:47 2010	(r203647)
@@ -186,7 +186,6 @@ static struct cv 	flowclean_cv;
 static struct mtx	flowclean_lock;
 static uint32_t		flowclean_cycles;
 
-#define FLOWTABLE_DEBUG
 #ifdef FLOWTABLE_DEBUG
 #define FLDPRINTF(ft, flags, fmt, ...) 		\
 do {		  				\
@@ -417,40 +416,6 @@ flags_to_proto(int flags)
 	return (proto);
 }
 
-void
-flow_to_route(struct flentry *fle, struct route *ro)
-{
-	uint32_t *hashkey = NULL;
-	
-#ifdef INET6
-	if (fle->f_flags & FL_IPV6) {
-		struct sockaddr_in6 *sin6;
-
-		sin6 = (struct sockaddr_in6 *)&ro->ro_dst;
-
-		sin6->sin6_family = AF_INET6;
-		sin6->sin6_len = sizeof(*sin6);
-		hashkey = ((struct flentry_v6 *)fle)->fl_flow.ipf_key;
-		memcpy(&sin6->sin6_addr, &hashkey[2], sizeof (struct in6_addr));
-	} else
-#endif
-#ifdef INET		
-	{
-		struct sockaddr_in *sin;
-
-		sin = (struct sockaddr_in *)&ro->ro_dst;
-
-		sin->sin_family = AF_INET;
-		sin->sin_len = sizeof(*sin);
-		hashkey = ((struct flentry_v4 *)fle)->fl_flow.ipf_key;
-		sin->sin_addr.s_addr = hashkey[2];
-	}
-#endif	
-	; /* terminate INET6 else if no INET4 */
-	ro->ro_rt = __DEVOLATILE(struct rtentry *, fle->f_rt);
-	ro->ro_lle = __DEVOLATILE(struct llentry *, fle->f_lle);
-}
-
 #ifdef INET
 #ifdef FLOWTABLE_DEBUG
 static void
@@ -583,6 +548,21 @@ flowtable_lookup_mbuf4(struct flowtable 
 
 	return (flowtable_lookup(ft, &ssa, &dsa, M_GETFIB(m), flags));
 }
+
+void
+flow_to_route(struct flentry *fle, struct route *ro)
+{
+	uint32_t *hashkey = NULL;
+	struct sockaddr_in *sin;
+
+	sin = (struct sockaddr_in *)&ro->ro_dst;
+	sin->sin_family = AF_INET;
+	sin->sin_len = sizeof(*sin);
+	hashkey = ((struct flentry_v4 *)fle)->fl_flow.ipf_key;
+	sin->sin_addr.s_addr = hashkey[2];
+	ro->ro_rt = __DEVOLATILE(struct rtentry *, fle->f_rt);
+	ro->ro_lle = __DEVOLATILE(struct llentry *, fle->f_lle);
+}
 #endif /* INET */
 
 #ifdef INET6
@@ -772,6 +752,23 @@ flowtable_lookup_mbuf6(struct flowtable 
 
 	return (flowtable_lookup(ft, &ssa, &dsa, M_GETFIB(m), flags));
 }
+
+void
+flow_to_route_in6(struct flentry *fle, struct route_in6 *ro)
+{
+	uint32_t *hashkey = NULL;
+	struct sockaddr_in6 *sin6;
+
+	sin6 = (struct sockaddr_in6 *)&ro->ro_dst;
+
+	sin6->sin6_family = AF_INET6;
+	sin6->sin6_len = sizeof(*sin6);
+	hashkey = ((struct flentry_v6 *)fle)->fl_flow.ipf_key;
+	memcpy(&sin6->sin6_addr, &hashkey[5], sizeof (struct in6_addr));
+	ro->ro_rt = __DEVOLATILE(struct rtentry *, fle->f_rt);
+	ro->ro_lle = __DEVOLATILE(struct llentry *, fle->f_lle);
+
+}
 #endif /* INET6 */
 
 static bitstr_t *
@@ -967,11 +964,6 @@ kern_flowtable_insert(struct flowtable *
 	FLDPRINTF(ft, FL_DEBUG,
 	    "kern_flowtable_insert: key=%x:%x:%x hash=%x fibnum=%d flags=%x\n",
 	    key[0], key[1], key[2], hash, fibnum, flags);
-#ifdef FLOWTABLE_DEBUG
-	if (flags & FL_DEBUG)
-		ipv4_flow_print_tuple(flags, flags_to_proto(flags),
-		    (struct sockaddr_in *)ssa, (struct sockaddr_in *)dsa);
-#endif	
 	return (flowtable_insert(ft, hash, key, fibnum, ro, flags));
 }
 
@@ -1071,18 +1063,6 @@ flowtable_lookup(struct flowtable *ft, s
 		goto uncached;
 	}
 keycheck:	
-#ifdef FLOWTABLE_DEBUG
-	if (flags & FL_DEBUG){
-		printf("keycheck: key=%x:%x:%x hash=%x fibnum=%02d "
-		    "keyequal=%d hashequal=%d",
-		    key[0], key[1], key[2], hash, fibnum,
-		    flowtable_key_equal(fle, key),
-		    (fle->f_fhash == hash));
-		ipv4_flow_print_tuple(flags, proto,
-		    (struct sockaddr_in *)ssa,
-		    (struct sockaddr_in *)dsa);
-	}
-#endif		
 	rt = __DEVOLATILE(struct rtentry *, fle->f_rt);
 	lle = __DEVOLATILE(struct llentry *, fle->f_lle);
 	if ((rt != NULL)

Modified: user/kmacy/head_flowtable_v6/sys/net/flowtable.h
==============================================================================
--- user/kmacy/head_flowtable_v6/sys/net/flowtable.h	Mon Feb  8 04:12:10 2010	(r203646)
+++ user/kmacy/head_flowtable_v6/sys/net/flowtable.h	Mon Feb  8 05:06:47 2010	(r203647)
@@ -50,6 +50,9 @@ struct flentry;
 VNET_DECLARE(struct flowtable *, ip_ft);
 #define	V_ip_ft			VNET(ip_ft)
 
+VNET_DECLARE(struct flowtable *, ip6_ft);
+#define	V_ip6_ft		VNET(ip6_ft)
+
 struct flowtable *flowtable_alloc(char *name, int nentry, int flags);
 
 /*
@@ -66,10 +69,16 @@ int kern_flowtable_insert(struct flowtab
     struct sockaddr *dsa, struct route *ro, uint32_t fibnum, int flags);
 
 void flow_invalidate(struct flentry *fl);
+void flowtable_route_flush(struct flowtable *ft, struct rtentry *rt);
 
+#ifdef INET
 void flow_to_route(struct flentry *fl, struct route *ro);
+#endif
+
+#ifdef INET6
+void flow_to_route_in6(struct flentry *fl, struct route_in6 *ro);
+#endif
 
-void flowtable_route_flush(struct flowtable *ft, struct rtentry *rt);
 
 #endif /* _KERNEL */
 #endif



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