xref: /onnv-gate/usr/src/uts/common/inet/ilb/ilb_stack.h (revision 10946:324bab2b3370)
1*10946SSangeeta.Misra@Sun.COM /*
2*10946SSangeeta.Misra@Sun.COM  * CDDL HEADER START
3*10946SSangeeta.Misra@Sun.COM  *
4*10946SSangeeta.Misra@Sun.COM  * The contents of this file are subject to the terms of the
5*10946SSangeeta.Misra@Sun.COM  * Common Development and Distribution License (the "License").
6*10946SSangeeta.Misra@Sun.COM  * You may not use this file except in compliance with the License.
7*10946SSangeeta.Misra@Sun.COM  *
8*10946SSangeeta.Misra@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*10946SSangeeta.Misra@Sun.COM  * or http://www.opensolaris.org/os/licensing.
10*10946SSangeeta.Misra@Sun.COM  * See the License for the specific language governing permissions
11*10946SSangeeta.Misra@Sun.COM  * and limitations under the License.
12*10946SSangeeta.Misra@Sun.COM  *
13*10946SSangeeta.Misra@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
14*10946SSangeeta.Misra@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*10946SSangeeta.Misra@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
16*10946SSangeeta.Misra@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
17*10946SSangeeta.Misra@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
18*10946SSangeeta.Misra@Sun.COM  *
19*10946SSangeeta.Misra@Sun.COM  * CDDL HEADER END
20*10946SSangeeta.Misra@Sun.COM  */
21*10946SSangeeta.Misra@Sun.COM 
22*10946SSangeeta.Misra@Sun.COM /*
23*10946SSangeeta.Misra@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24*10946SSangeeta.Misra@Sun.COM  * Use is subject to license terms.
25*10946SSangeeta.Misra@Sun.COM  */
26*10946SSangeeta.Misra@Sun.COM 
27*10946SSangeeta.Misra@Sun.COM #ifndef _INET_ILB_STACK_H
28*10946SSangeeta.Misra@Sun.COM #define	_INET_ILB_STACK_H
29*10946SSangeeta.Misra@Sun.COM 
30*10946SSangeeta.Misra@Sun.COM #include <sys/netstack.h>
31*10946SSangeeta.Misra@Sun.COM 
32*10946SSangeeta.Misra@Sun.COM #ifdef __cplusplus
33*10946SSangeeta.Misra@Sun.COM extern "C" {
34*10946SSangeeta.Misra@Sun.COM #endif
35*10946SSangeeta.Misra@Sun.COM 
36*10946SSangeeta.Misra@Sun.COM struct ilb_rule_s;
37*10946SSangeeta.Misra@Sun.COM struct ilb_hash_s;
38*10946SSangeeta.Misra@Sun.COM struct ilb_timer_s;
39*10946SSangeeta.Misra@Sun.COM struct ilb_conn_s;
40*10946SSangeeta.Misra@Sun.COM struct ilb_conn_hash_s;
41*10946SSangeeta.Misra@Sun.COM struct ilb_sticky_s;
42*10946SSangeeta.Misra@Sun.COM struct ilb_sticky_hash_s;
43*10946SSangeeta.Misra@Sun.COM struct ilb_g_kstat_s;
44*10946SSangeeta.Misra@Sun.COM struct ilb_nat_src_hash_s;
45*10946SSangeeta.Misra@Sun.COM 
46*10946SSangeeta.Misra@Sun.COM /* Per network stack ILB information */
47*10946SSangeeta.Misra@Sun.COM typedef struct ilb_stack {
48*10946SSangeeta.Misra@Sun.COM 	netstack_t			*ilbs_netstack;
49*10946SSangeeta.Misra@Sun.COM 
50*10946SSangeeta.Misra@Sun.COM 	/*
51*10946SSangeeta.Misra@Sun.COM 	 * Rule info in a network stack.
52*10946SSangeeta.Misra@Sun.COM 	 *
53*10946SSangeeta.Misra@Sun.COM 	 * ilbs_rule_head: list of all rules
54*10946SSangeeta.Misra@Sun.COM 	 * ilbs_g_lock: lock to protect the rule list
55*10946SSangeeta.Misra@Sun.COM 	 * ilbs_rule_hash_size: size of the rule hash table
56*10946SSangeeta.Misra@Sun.COM 	 * ilbs_g_hash: the rule hash table
57*10946SSangeeta.Misra@Sun.COM 	 * ilbs_rule_taskq: taskq for rule related delayed processing
58*10946SSangeeta.Misra@Sun.COM 	 */
59*10946SSangeeta.Misra@Sun.COM 	struct ilb_rule_s		*ilbs_rule_head;
60*10946SSangeeta.Misra@Sun.COM 	kmutex_t			ilbs_g_lock;
61*10946SSangeeta.Misra@Sun.COM 	size_t				ilbs_rule_hash_size;
62*10946SSangeeta.Misra@Sun.COM 	struct ilb_hash_s		*ilbs_g_hash;
63*10946SSangeeta.Misra@Sun.COM 	taskq_t				*ilbs_rule_taskq;
64*10946SSangeeta.Misra@Sun.COM 
65*10946SSangeeta.Misra@Sun.COM 	/*
66*10946SSangeeta.Misra@Sun.COM 	 * NAT connection cache info
67*10946SSangeeta.Misra@Sun.COM 	 *
68*10946SSangeeta.Misra@Sun.COM 	 * ilbs_conn_hash_szie: size of the conn cache hash table
69*10946SSangeeta.Misra@Sun.COM 	 * ilbs_c2s_conn_hash: client to server conn cache hash table
70*10946SSangeeta.Misra@Sun.COM 	 * ilbs_s2c_conn_hash: server to client conn cache hash table
71*10946SSangeeta.Misra@Sun.COM 	 * ilbs_conn_timer_list: list of all timers for handling conn cache
72*10946SSangeeta.Misra@Sun.COM 	 * ilbs_conn_taskq: taskq for conn cache related delayed processing
73*10946SSangeeta.Misra@Sun.COM 	 */
74*10946SSangeeta.Misra@Sun.COM 	size_t				ilbs_conn_hash_size;
75*10946SSangeeta.Misra@Sun.COM 	struct ilb_conn_hash_s		*ilbs_c2s_conn_hash;
76*10946SSangeeta.Misra@Sun.COM 	struct ilb_conn_hash_s		*ilbs_s2c_conn_hash;
77*10946SSangeeta.Misra@Sun.COM 	struct ilb_timer_s		*ilbs_conn_timer_list;
78*10946SSangeeta.Misra@Sun.COM 	taskq_t				*ilbs_conn_taskq;
79*10946SSangeeta.Misra@Sun.COM 
80*10946SSangeeta.Misra@Sun.COM 	/*
81*10946SSangeeta.Misra@Sun.COM 	 * Sticky (persistent) cache info
82*10946SSangeeta.Misra@Sun.COM 	 *
83*10946SSangeeta.Misra@Sun.COM 	 * ilbs_sticky_hash_szie: size of the sticky cache hash table
84*10946SSangeeta.Misra@Sun.COM 	 * ilbs_sticky_hash: sticky cache hash table
85*10946SSangeeta.Misra@Sun.COM 	 * ilbs_sticky_timer_list: list of all timers for handling sticky cache
86*10946SSangeeta.Misra@Sun.COM 	 * ilbs_sticky_taskq: taskq for sticky cache related delayed processing
87*10946SSangeeta.Misra@Sun.COM 	 */
88*10946SSangeeta.Misra@Sun.COM 	size_t				ilbs_sticky_hash_size;
89*10946SSangeeta.Misra@Sun.COM 	struct ilb_sticky_hash_s	*ilbs_sticky_hash;
90*10946SSangeeta.Misra@Sun.COM 	struct ilb_timer_s		*ilbs_sticky_timer_list;
91*10946SSangeeta.Misra@Sun.COM 	taskq_t				*ilbs_sticky_taskq;
92*10946SSangeeta.Misra@Sun.COM 
93*10946SSangeeta.Misra@Sun.COM 	/*
94*10946SSangeeta.Misra@Sun.COM 	 * Info of NAT source address for
95*10946SSangeeta.Misra@Sun.COM 	 *
96*10946SSangeeta.Misra@Sun.COM 	 * ilbs_nat_src: NAT source hash table
97*10946SSangeeta.Misra@Sun.COM 	 * ilbs_nat_src_hash_size: size of the NAT source hash table
98*10946SSangeeta.Misra@Sun.COM 	 * ilbs_nat_src_lock: lock for protecting ilbs_nat_src_tid
99*10946SSangeeta.Misra@Sun.COM 	 * ilbs_nat_src_tid: ID of the timer handling garbage colllection
100*10946SSangeeta.Misra@Sun.COM 	 */
101*10946SSangeeta.Misra@Sun.COM 	struct ilb_nat_src_hash_s	*ilbs_nat_src;
102*10946SSangeeta.Misra@Sun.COM 	size_t				ilbs_nat_src_hash_size;
103*10946SSangeeta.Misra@Sun.COM 	kmutex_t			ilbs_nat_src_lock;
104*10946SSangeeta.Misra@Sun.COM 	timeout_id_t			ilbs_nat_src_tid;
105*10946SSangeeta.Misra@Sun.COM 
106*10946SSangeeta.Misra@Sun.COM 	/* NAT conn cache and sticky cache listing related info */
107*10946SSangeeta.Misra@Sun.COM 
108*10946SSangeeta.Misra@Sun.COM 	/* Lock to ensure that all nat listing ops are serialized */
109*10946SSangeeta.Misra@Sun.COM 	kmutex_t			ilbs_conn_list_lock;
110*10946SSangeeta.Misra@Sun.COM 	kcondvar_t			ilbs_conn_list_cv;
111*10946SSangeeta.Misra@Sun.COM 	boolean_t			ilbs_conn_list_busy;
112*10946SSangeeta.Misra@Sun.COM 	/* Current position for	listing all conn hash entries */
113*10946SSangeeta.Misra@Sun.COM 	size_t				ilbs_conn_list_cur;
114*10946SSangeeta.Misra@Sun.COM 	struct ilb_conn_s		*ilbs_conn_list_connp;
115*10946SSangeeta.Misra@Sun.COM 
116*10946SSangeeta.Misra@Sun.COM 	/* Lock to ensure that all sticky listing ops are serialized */
117*10946SSangeeta.Misra@Sun.COM 	kmutex_t			ilbs_sticky_list_lock;
118*10946SSangeeta.Misra@Sun.COM 	kcondvar_t			ilbs_sticky_list_cv;
119*10946SSangeeta.Misra@Sun.COM 	boolean_t			ilbs_sticky_list_busy;
120*10946SSangeeta.Misra@Sun.COM 	/* Current position for	listing all sticky hash entries */
121*10946SSangeeta.Misra@Sun.COM 	size_t				ilbs_sticky_list_cur;
122*10946SSangeeta.Misra@Sun.COM 	struct ilb_sticky_s		*ilbs_sticky_list_curp;
123*10946SSangeeta.Misra@Sun.COM 
124*10946SSangeeta.Misra@Sun.COM 	/* Stack wide ILB kstat */
125*10946SSangeeta.Misra@Sun.COM 	kstat_t				*ilbs_ksp;
126*10946SSangeeta.Misra@Sun.COM 	struct ilb_g_kstat_s		*ilbs_kstat;
127*10946SSangeeta.Misra@Sun.COM } ilb_stack_t;
128*10946SSangeeta.Misra@Sun.COM 
129*10946SSangeeta.Misra@Sun.COM 
130*10946SSangeeta.Misra@Sun.COM #ifdef __cplusplus
131*10946SSangeeta.Misra@Sun.COM }
132*10946SSangeeta.Misra@Sun.COM #endif
133*10946SSangeeta.Misra@Sun.COM 
134*10946SSangeeta.Misra@Sun.COM #endif /* _INET_ILB_STACK_H */
135