Lines Matching defs:ifs

224 ipf_kstat_init(ipf_stack_t *ifs)
226 ifs->ifs_kstatp[0] = net_kstat_create(ifs->ifs_netid, "ipf", 0,
229 if (ifs->ifs_kstatp[0] != NULL) {
230 bcopy(&ipf_kstat_tmp, ifs->ifs_kstatp[0]->ks_data,
232 ifs->ifs_kstatp[0]->ks_update = ipf_kstat_update;
233 ifs->ifs_kstatp[0]->ks_private = &ifs->ifs_frstats[0];
234 kstat_install(ifs->ifs_kstatp[0]);
237 ifs->ifs_kstatp[1] = net_kstat_create(ifs->ifs_netid, "ipf", 0,
240 if (ifs->ifs_kstatp[1] != NULL) {
241 bcopy(&ipf_kstat_tmp, ifs->ifs_kstatp[1]->ks_data,
243 ifs->ifs_kstatp[1]->ks_update = ipf_kstat_update;
244 ifs->ifs_kstatp[1]->ks_private = &ifs->ifs_frstats[1];
245 kstat_install(ifs->ifs_kstatp[1]);
250 ifs, ifs->ifs_kstatp[0], ifs->ifs_kstatp[1]);
256 ipf_kstat_fini(ipf_stack_t *ifs)
261 if (ifs->ifs_kstatp[i] != NULL) {
262 net_kstat_delete(ifs->ifs_netid, ifs->ifs_kstatp[i]);
263 ifs->ifs_kstatp[i] = NULL;
374 ipf_stack_t *ifs;
380 ifs = (ipf_stack_t *)kmem_alloc(sizeof (*ifs), KM_SLEEP);
381 bzero(ifs, sizeof (*ifs));
383 ifs->ifs_hook4_physical_in = B_FALSE;
384 ifs->ifs_hook4_physical_out = B_FALSE;
385 ifs->ifs_hook4_nic_events = B_FALSE;
386 ifs->ifs_hook4_loopback_in = B_FALSE;
387 ifs->ifs_hook4_loopback_out = B_FALSE;
388 ifs->ifs_hook6_physical_in = B_FALSE;
389 ifs->ifs_hook6_physical_out = B_FALSE;
390 ifs->ifs_hook6_nic_events = B_FALSE;
391 ifs->ifs_hook6_loopback_in = B_FALSE;
392 ifs->ifs_hook6_loopback_out = B_FALSE;
397 RWLOCK_INIT(&ifs->ifs_ipf_global, "ipf filter load/unload mutex");
398 RWLOCK_INIT(&ifs->ifs_ipf_mutex, "ipf filter rwlock");
399 RWLOCK_INIT(&ifs->ifs_ipf_frcache, "ipf cache rwlock");
400 ifs->ifs_netid = id;
401 ifs->ifs_zone = net_getzoneidbynetid(id);
402 ipf_kstat_init(ifs);
405 cmn_err(CE_CONT, "IP Filter:stack_create zone=%d", ifs->ifs_zone);
411 WRITE_ENTER(&ifs->ifs_ipf_global);
412 ipftuneable_alloc(ifs);
413 RWLOCK_EXIT(&ifs->ifs_ipf_global);
416 if (ifs->ifs_zone == GLOBAL_ZONEID)
421 ipf_stacks->ifs_pnext = &ifs->ifs_next;
422 ifs->ifs_next = ipf_stacks;
423 ifs->ifs_pnext = &ipf_stacks;
424 ipf_stacks = ifs;
427 return (ifs);
443 ipf_stack_t *ifs;
446 for (ifs = ipf_stacks; ifs != NULL; ifs = ifs->ifs_next) {
447 if (ifs->ifs_zone == zone)
451 return (ifs);
455 static int ipf_detach_check_zone(ipf_stack_t *ifs)
461 READ_ENTER(&ifs->ifs_ipf_global);
462 if (ifs->ifs_fr_running == 1) {
463 RWLOCK_EXIT(&ifs->ifs_ipf_global);
470 if (ifs->ifs_ipfilter[0][ifs->ifs_fr_active] ||
471 ifs->ifs_ipfilter[1][ifs->ifs_fr_active] ||
472 ifs->ifs_ipfilter6[0][ifs->ifs_fr_active] ||
473 ifs->ifs_ipfilter6[1][ifs->ifs_fr_active]) {
474 RWLOCK_EXIT(&ifs->ifs_ipf_global);
478 RWLOCK_EXIT(&ifs->ifs_ipf_global);
486 ipf_stack_t *ifs;
489 for (ifs = ipf_stacks; ifs != NULL; ifs = ifs->ifs_next)
490 if (ipf_detach_check_zone(ifs) != 0)
493 return ((ifs == NULL) ? 0 : -1);
504 ipf_stack_t *ifs = (ipf_stack_t *)arg;
506 ipf_kstat_fini(ifs);
517 ipf_stack_t *ifs = (ipf_stack_t *)arg;
521 (void) printf("ipf_stack_destroy(%p)\n", (void *)ifs);
528 WRITE_ENTER(&ifs->ifs_ipf_global);
529 if (ifs->ifs_fr_running == -2) {
530 RWLOCK_EXIT(&ifs->ifs_ipf_global);
533 ifs->ifs_fr_running = -2;
534 tid = ifs->ifs_fr_timer_id;
535 ifs->ifs_fr_timer_id = NULL;
536 RWLOCK_EXIT(&ifs->ifs_ipf_global);
539 if (ifs->ifs_next != NULL)
540 ifs->ifs_next->ifs_pnext = ifs->ifs_pnext;
541 *ifs->ifs_pnext = ifs->ifs_next;
547 WRITE_ENTER(&ifs->ifs_ipf_global);
548 if (ipldetach(ifs) != 0) {
552 ipftuneable_free(ifs);
554 RWLOCK_EXIT(&ifs->ifs_ipf_global);
555 RW_DESTROY(&ifs->ifs_ipf_mutex);
556 RW_DESTROY(&ifs->ifs_ipf_frcache);
557 RW_DESTROY(&ifs->ifs_ipf_global);
559 KFREE(ifs);
721 ipf_property_update(dip, ifs)
723 ipf_stack_t *ifs;
731 for (ipft = ifs->ifs_ipf_tuneables;