From owner-svn-src-user@FreeBSD.ORG Sat Feb 6 02:01:57 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 18CCC106566B; Sat, 6 Feb 2010 02:01:57 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 079B68FC15; Sat, 6 Feb 2010 02:01:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o1621uKS019314; Sat, 6 Feb 2010 02:01:56 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o1621uH3019310; Sat, 6 Feb 2010 02:01:56 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <201002060201.o1621uH3019310@svn.freebsd.org> From: Kip Macy Date: Sat, 6 Feb 2010 02:01:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203536 - in user/kmacy/head_flowtable_v6/sys: net netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Feb 2010 02:01:57 -0000 Author: kmacy Date: Sat Feb 6 02:01:56 2010 New Revision: 203536 URL: http://svn.freebsd.org/changeset/base/203536 Log: - add a name argument to flowtable_alloc for debugging and reporting - make flowtable.c compile with INET only Modified: user/kmacy/head_flowtable_v6/sys/net/flowtable.c user/kmacy/head_flowtable_v6/sys/net/flowtable.h user/kmacy/head_flowtable_v6/sys/netinet/ip_input.c Modified: user/kmacy/head_flowtable_v6/sys/net/flowtable.c ============================================================================== --- user/kmacy/head_flowtable_v6/sys/net/flowtable.c Sat Feb 6 00:52:42 2010 (r203535) +++ user/kmacy/head_flowtable_v6/sys/net/flowtable.c Sat Feb 6 02:01:56 2010 (r203536) @@ -159,6 +159,7 @@ struct flowtable { uint32_t ft_syn_idle; uint32_t ft_tcp_idle; + char *ft_name; fl_lock_t *ft_lock; fl_lock_t *ft_unlock; fl_rtalloc_t *ft_rtalloc; @@ -407,12 +408,12 @@ flags_to_proto(int flags) void flow_to_route(struct flentry *fle, struct route *ro) { - struct sockaddr_in *sin = NULL; - struct sockaddr_in6 *sin6 = NULL; - uint32_t *hashkey; + 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; @@ -423,6 +424,8 @@ flow_to_route(struct flentry *fle, struc #endif #ifdef INET { + struct sockaddr_in *sin; + sin = (struct sockaddr_in *)&ro->ro_dst; sin->sin_family = AF_INET; @@ -510,14 +513,14 @@ ipv4_flow_lookup_hash_internal( proto = flags_to_proto(flags); sport = dport = key[2] = key[1] = key[0] = 0; - if (dsin != NULL) { - key[1] = dsin->sin_addr.s_addr; - dport = dsin->sin_port; - } if ((ssin != NULL) && (flags & FL_HASH_ALL)) { - key[2] = ssin->sin_addr.s_addr; + key[1] = ssin->sin_addr.s_addr; sport = ssin->sin_port; } + if (dsin != NULL) { + key[2] = dsin->sin_addr.s_addr; + dport = dsin->sin_port; + } if (flags & FL_HASH_ALL) { ((uint16_t *)key)[0] = sport; ((uint16_t *)key)[1] = dport; @@ -902,6 +905,8 @@ kern_flowtable_insert(struct flowtable * hash = ipv6_flow_lookup_hash_internal((struct sockaddr_in6 *)ssa, (struct sockaddr_in6 *)dsa, key, flags); #endif + if (ro->ro_rt == NULL || ro->ro_lle == NULL) + return (EINVAL); return (flowtable_insert(ft, hash, key, fibnum, ro, flags)); } @@ -1085,7 +1090,7 @@ uncached: #define calloc(count, size) malloc((count)*(size), M_DEVBUF, M_WAITOK|M_ZERO) struct flowtable * -flowtable_alloc(int nentry, int flags) +flowtable_alloc(char *name, int nentry, int flags) { struct flowtable *ft, *fttail; int i; @@ -1097,7 +1102,8 @@ flowtable_alloc(int nentry, int flags) ft = malloc(sizeof(struct flowtable), M_RTABLE, M_WAITOK | M_ZERO); - + + ft->ft_name = name; ft->ft_flags = flags; ft->ft_size = nentry; #ifdef RADIX_MPATH @@ -1521,6 +1527,7 @@ flowtable_show_vnet(void) ft = V_flow_list_head; while (ft != NULL) { + printf("name: %s\n", ft->ft_name); if (ft->ft_flags & FL_PCPU) { for (i = 0; i <= mp_maxid; i++) { if (CPU_ABSENT(i)) Modified: user/kmacy/head_flowtable_v6/sys/net/flowtable.h ============================================================================== --- user/kmacy/head_flowtable_v6/sys/net/flowtable.h Sat Feb 6 00:52:42 2010 (r203535) +++ user/kmacy/head_flowtable_v6/sys/net/flowtable.h Sat Feb 6 02:01:56 2010 (r203536) @@ -48,7 +48,7 @@ struct flentry; VNET_DECLARE(struct flowtable *, ip_ft); #define V_ip_ft VNET(ip_ft) -struct flowtable *flowtable_alloc(int nentry, int flags); +struct flowtable *flowtable_alloc(char *name, int nentry, int flags); /* * Given a flow table, look up the L3 and L2 information and Modified: user/kmacy/head_flowtable_v6/sys/netinet/ip_input.c ============================================================================== --- user/kmacy/head_flowtable_v6/sys/netinet/ip_input.c Sat Feb 6 00:52:42 2010 (r203535) +++ user/kmacy/head_flowtable_v6/sys/netinet/ip_input.c Sat Feb 6 02:01:56 2010 (r203536) @@ -328,7 +328,7 @@ ip_init(void) #ifdef FLOWTABLE TUNABLE_INT_FETCH("net.inet.ip.output_flowtable_size", &V_ip_output_flowtable_size); - V_ip_ft = flowtable_alloc(V_ip_output_flowtable_size, FL_PCPU); + V_ip_ft = flowtable_alloc("ipv4", V_ip_output_flowtable_size, FL_PCPU); #endif /* Skip initialization of globals for non-default instances. */