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