Lines Matching refs:ilbs

134 ilb_nat_src_init(ilb_stack_t *ilbs)
138 ilbs->ilbs_nat_src = kmem_zalloc(sizeof (ilb_nat_src_hash_t) *
139 ilbs->ilbs_nat_src_hash_size, KM_SLEEP);
140 for (i = 0; i < ilbs->ilbs_nat_src_hash_size; i++) {
141 list_create(&ilbs->ilbs_nat_src[i].nsh_head,
144 mutex_init(&ilbs->ilbs_nat_src[i].nsh_lock, NULL,
147 ilbs->ilbs_nat_src_tid = timeout(ilb_nat_src_timer, ilbs,
156 ilb_nat_src_fini(ilb_stack_t *ilbs)
166 mutex_enter(&ilbs->ilbs_nat_src_lock);
167 tid = ilbs->ilbs_nat_src_tid;
168 ilbs->ilbs_nat_src_tid = 0;
169 mutex_exit(&ilbs->ilbs_nat_src_lock);
173 mutex_destroy(&ilbs->ilbs_nat_src_lock);
175 for (i = 0; i < ilbs->ilbs_nat_src_hash_size; i++) {
176 while ((cur = list_remove_head(&ilbs->ilbs_nat_src[i].nsh_head))
181 mutex_destroy(&ilbs->ilbs_nat_src[i].nsh_lock);
184 kmem_free(ilbs->ilbs_nat_src, sizeof (ilb_nat_src_hash_t) *
185 ilbs->ilbs_nat_src_hash_size);
186 ilbs->ilbs_nat_src = NULL;
200 ilb_find_nat_src(ilb_stack_t *ilbs, const in6_addr_t *nat_src,
209 ilbs->ilbs_nat_src_hash_size);
210 mutex_enter(&ilbs->ilbs_nat_src[idx].nsh_lock);
211 head = &ilbs->ilbs_nat_src[idx].nsh_head;
223 mutex_exit(&ilbs->ilbs_nat_src[idx].nsh_lock);
229 mutex_exit(&ilbs->ilbs_nat_src[idx].nsh_lock);
235 tmp->nse_nsh_lock = &ilbs->ilbs_nat_src[idx].nsh_lock;
248 mutex_exit(&ilbs->ilbs_nat_src[idx].nsh_lock);
257 ilb_create_nat_src(ilb_stack_t *ilbs, ilb_nat_src_t **nat_src,
271 src->src_list[i] = ilb_find_nat_src(ilbs, &cur_addr, srv_addr,
297 ilb_stack_t *ilbs = (ilb_stack_t *)arg;
302 for (i = 0; i < ilbs->ilbs_nat_src_hash_size; i++) {
303 mutex_enter(&ilbs->ilbs_nat_src[i].nsh_lock);
304 head = &ilbs->ilbs_nat_src[i].nsh_head;
323 mutex_exit(&ilbs->ilbs_nat_src[i].nsh_lock);
326 mutex_enter(&ilbs->ilbs_nat_src_lock);
327 if (ilbs->ilbs_nat_src_tid == 0) {
328 mutex_exit(&ilbs->ilbs_nat_src_lock);
330 ilbs->ilbs_nat_src_tid = timeout(ilb_nat_src_timer, ilbs,
333 mutex_exit(&ilbs->ilbs_nat_src_lock);