Lines Matching refs:ns

158 	netstack_t *ns;
182 for (ns = netstack_head; ns != NULL; ns = ns->netstack_next) {
183 nm_state_t *nms = &ns->netstack_m_state[moduleid];
185 mutex_enter(&ns->netstack_lock);
186 if (!(ns->netstack_flags & NSF_CLOSING) &&
190 netstack_t *, ns, int, moduleid);
192 mutex_exit(&ns->netstack_lock);
208 netstack_t *ns;
223 for (ns = netstack_head; ns != NULL; ns = ns->netstack_next) {
225 nm_state_t *nms = &ns->netstack_m_state[moduleid];
227 mutex_enter(&ns->netstack_lock);
259 netstack_t *, ns, int, moduleid);
266 netstack_t *, ns, int, moduleid);
268 mutex_exit(&ns->netstack_lock);
289 for (ns = netstack_head; ns != NULL; ns = ns->netstack_next) {
290 nm_state_t *nms = &ns->netstack_m_state[moduleid];
292 mutex_enter(&ns->netstack_lock);
296 netstack_t *, ns, int, moduleid);
298 mutex_exit(&ns->netstack_lock);
315 netstack_t *ns;
333 ns = (netstack_t *)kmem_zalloc(sizeof (netstack_t), KM_SLEEP);
344 kmem_free(ns, sizeof (netstack_t));
345 ns = *nsp;
346 mutex_enter(&ns->netstack_lock);
347 ns->netstack_numzones++;
348 mutex_exit(&ns->netstack_lock);
351 netstack_t *, ns);
354 zone->zone_netstack = ns;
355 return (ns);
359 mutex_init(&ns->netstack_lock, NULL, MUTEX_DEFAULT, NULL);
360 cv_init(&ns->netstack_cv, NULL, CV_DEFAULT, NULL);
361 ns->netstack_stackid = zoneid;
362 ns->netstack_numzones = 1;
363 ns->netstack_refcnt = 1; /* Decremented by netstack_zone_destroy */
364 ns->netstack_flags = NSF_UNINIT;
365 *nsp = ns;
366 zone->zone_netstack = ns;
368 mutex_enter(&ns->netstack_lock);
374 ns->netstack_flags |= NSF_ZONE_CREATE;
384 nm_state_t *nms = &ns->netstack_m_state[i];
392 netstack_t *, ns, int, i);
395 mutex_exit(&ns->netstack_lock);
398 apply_all_modules(ns, netstack_apply_create);
401 mutex_enter(&ns->netstack_lock);
402 ns->netstack_flags &= ~NSF_UNINIT;
403 ASSERT(ns->netstack_flags & NSF_ZONE_CREATE);
404 ns->netstack_flags &= ~NSF_ZONE_CREATE;
405 cv_broadcast(&ns->netstack_cv);
406 mutex_exit(&ns->netstack_lock);
408 return (ns);
415 netstack_t *ns = (netstack_t *)arg;
420 mutex_enter(&ns->netstack_lock);
421 ASSERT(ns->netstack_numzones > 0);
422 if (ns->netstack_numzones != 1) {
424 mutex_exit(&ns->netstack_lock);
425 ASSERT(ns->netstack_stackid == GLOBAL_NETSTACKID);
428 mutex_exit(&ns->netstack_lock);
431 mutex_enter(&ns->netstack_lock);
437 ASSERT(!(ns->netstack_flags & NSF_ZONE_INPROGRESS));
438 ns->netstack_flags |= NSF_ZONE_SHUTDOWN;
445 nm_state_t *nms = &ns->netstack_m_state[i];
453 netstack_t *, ns, int, i);
456 mutex_exit(&ns->netstack_lock);
463 apply_all_modules_reverse(ns, netstack_apply_shutdown);
466 mutex_enter(&ns->netstack_lock);
467 ASSERT(ns->netstack_flags & NSF_ZONE_SHUTDOWN);
468 ns->netstack_flags &= ~NSF_ZONE_SHUTDOWN;
469 cv_broadcast(&ns->netstack_cv);
470 mutex_exit(&ns->netstack_lock);
482 netstack_t *ns = (netstack_t *)arg;
486 mutex_enter(&ns->netstack_lock);
487 ASSERT(ns->netstack_numzones > 0);
488 ns->netstack_numzones--;
489 if (ns->netstack_numzones != 0) {
491 mutex_exit(&ns->netstack_lock);
492 ASSERT(ns->netstack_stackid == GLOBAL_NETSTACKID);
500 ns->netstack_flags |= NSF_CLOSING;
501 mutex_exit(&ns->netstack_lock);
502 DTRACE_PROBE1(netstack__dec__numzones, netstack_t *, ns);
508 netstack_rele(ns);
516 netstack_stack_inactive(netstack_t *ns)
521 mutex_enter(&ns->netstack_lock);
527 ASSERT(!(ns->netstack_flags & NSF_ZONE_INPROGRESS));
528 ns->netstack_flags |= NSF_ZONE_DESTROY;
539 nm_state_t *nms = &ns->netstack_m_state[i];
547 netstack_t *, ns, int, i);
556 netstack_t *, ns, int, i);
559 mutex_exit(&ns->netstack_lock);
574 apply_all_modules_reverse(ns, netstack_apply_shutdown);
575 apply_all_modules_reverse(ns, netstack_apply_destroy);
578 mutex_enter(&ns->netstack_lock);
579 ASSERT(ns->netstack_flags & NSF_ZONE_DESTROY);
580 ns->netstack_flags &= ~NSF_ZONE_DESTROY;
581 cv_broadcast(&ns->netstack_cv);
582 mutex_exit(&ns->netstack_lock);
608 netstack_t *ns;
611 ns = netstack_head;
612 while (ns != NULL) {
613 if (wait_for_zone_creator(ns, &netstack_g_lock)) {
615 ns = netstack_head;
616 } else if ((applyfn)(&netstack_g_lock, ns, moduleid)) {
618 ns = netstack_head;
620 ns = ns->netstack_next;
633 apply_all_modules(netstack_t *ns, applyfn_t *applyfn)
643 (void) (applyfn)(&netstack_g_lock, ns, i);
650 apply_all_modules_reverse(netstack_t *ns, applyfn_t *applyfn)
660 (void) (applyfn)(&netstack_g_lock, ns, i);
666 * Call the create function for the ns and moduleid if CREATE_NEEDED
677 netstack_apply_create(kmutex_t *lockp, netstack_t *ns, int moduleid)
681 nm_state_t *nms = &ns->netstack_m_state[moduleid];
685 mutex_enter(&ns->netstack_lock);
687 if (wait_for_nms_inprogress(ns, nms, lockp))
694 netstack_t *, ns, int, moduleid);
695 mutex_exit(&ns->netstack_lock);
700 stackid = ns->netstack_stackid;
703 netstack_t *, ns);
704 result = (ns_reg[moduleid].nr_create)(stackid, ns);
706 void *, result, netstack_t *, ns);
710 mutex_enter(&ns->netstack_lock);
711 ns->netstack_modules[moduleid] = result;
716 netstack_t *, ns, int, moduleid);
717 mutex_exit(&ns->netstack_lock);
720 mutex_exit(&ns->netstack_lock);
726 * Call the shutdown function for the ns and moduleid if SHUTDOWN_NEEDED
737 netstack_apply_shutdown(kmutex_t *lockp, netstack_t *ns, int moduleid)
741 nm_state_t *nms = &ns->netstack_m_state[moduleid];
745 mutex_enter(&ns->netstack_lock);
747 if (wait_for_nms_inprogress(ns, nms, lockp))
754 netstack_t *, ns, int, moduleid);
755 mutex_exit(&ns->netstack_lock);
760 stackid = ns->netstack_stackid;
761 netstack_module = ns->netstack_modules[moduleid];
767 netstack_t *, ns);
770 mutex_enter(&ns->netstack_lock);
775 netstack_t *, ns, int, moduleid);
776 mutex_exit(&ns->netstack_lock);
779 mutex_exit(&ns->netstack_lock);
785 * Call the destroy function for the ns and moduleid if DESTROY_NEEDED
796 netstack_apply_destroy(kmutex_t *lockp, netstack_t *ns, int moduleid)
800 nm_state_t *nms = &ns->netstack_m_state[moduleid];
804 mutex_enter(&ns->netstack_lock);
806 if (wait_for_nms_inprogress(ns, nms, lockp))
813 netstack_t *, ns, int, moduleid);
814 mutex_exit(&ns->netstack_lock);
819 stackid = ns->netstack_stackid;
820 netstack_module = ns->netstack_modules[moduleid];
826 netstack_t *, ns);
829 mutex_enter(&ns->netstack_lock);
830 ns->netstack_modules[moduleid] = NULL;
835 netstack_t *, ns, int, moduleid);
836 mutex_exit(&ns->netstack_lock);
839 mutex_exit(&ns->netstack_lock);
855 wait_for_zone_creator(netstack_t *ns, kmutex_t *lockp)
859 mutex_enter(&ns->netstack_lock);
860 while (ns->netstack_flags & NSF_ZONE_CREATE) {
862 netstack_t *, ns);
867 cv_wait(&ns->netstack_cv, &ns->netstack_lock);
870 mutex_exit(&ns->netstack_lock);
872 mutex_enter(&ns->netstack_lock);
875 mutex_exit(&ns->netstack_lock);
885 wait_for_nms_inprogress(netstack_t *ns, nm_state_t *nms, kmutex_t *lockp)
891 netstack_t *, ns, nm_state_t *, nms);
896 cv_wait(&nms->nms_cv, &ns->netstack_lock);
899 mutex_exit(&ns->netstack_lock);
901 mutex_enter(&ns->netstack_lock);
915 netstack_t *ns;
917 ns = curproc->p_zone->zone_netstack;
918 ASSERT(ns != NULL);
919 if (ns->netstack_flags & (NSF_UNINIT|NSF_CLOSING))
922 netstack_hold(ns);
924 return (ns);
961 netstack_t *ns;
969 ns = zone->zone_netstack;
970 ASSERT(ns != NULL);
971 if (ns->netstack_flags & (NSF_UNINIT|NSF_CLOSING))
972 ns = NULL;
974 netstack_hold(ns);
977 return (ns);
996 netstack_t *ns;
1004 ns = zone->zone_netstack;
1005 ASSERT(ns != NULL);
1007 if (ns->netstack_flags & (NSF_UNINIT|NSF_CLOSING))
1008 ns = NULL;
1010 netstack_hold(ns);
1013 return (ns);
1026 netstack_t *ns;
1029 for (ns = netstack_head; ns != NULL; ns = ns->netstack_next) {
1030 mutex_enter(&ns->netstack_lock);
1031 if (ns->netstack_stackid == stackid &&
1032 !(ns->netstack_flags & (NSF_UNINIT|NSF_CLOSING))) {
1033 mutex_exit(&ns->netstack_lock);
1034 netstack_hold(ns);
1036 return (ns);
1038 mutex_exit(&ns->netstack_lock);
1047 netstack_t *ns;
1052 for (ns = netstack_head; ns != NULL; ns = ns->netstack_next) {
1053 if (ns->netstack_stackid == stackid) {
1065 netstack_rele(netstack_t *ns)
1072 mutex_enter(&ns->netstack_lock);
1073 ASSERT(ns->netstack_refcnt > 0);
1074 ns->netstack_refcnt--;
1081 refcnt = ns->netstack_refcnt;
1082 numzones = ns->netstack_numzones;
1083 DTRACE_PROBE1(netstack__dec__ref, netstack_t *, ns);
1084 mutex_exit(&ns->netstack_lock);
1091 netstack_stack_inactive(ns);
1094 ASSERT(ns->netstack_refcnt == 0);
1095 ASSERT(ns->netstack_numzones == 0);
1102 if (*nsp == ns) {
1103 *nsp = ns->netstack_next;
1104 ns->netstack_next = NULL;
1113 ASSERT(ns->netstack_refcnt == 0);
1114 ASSERT(ns->netstack_numzones == 0);
1116 ASSERT(ns->netstack_flags & NSF_CLOSING);
1119 nm_state_t *nms = &ns->netstack_m_state[i];
1123 mutex_destroy(&ns->netstack_lock);
1124 cv_destroy(&ns->netstack_cv);
1125 kmem_free(ns, sizeof (*ns));
1130 netstack_hold(netstack_t *ns)
1132 mutex_enter(&ns->netstack_lock);
1133 ns->netstack_refcnt++;
1134 ASSERT(ns->netstack_refcnt > 0);
1135 mutex_exit(&ns->netstack_lock);
1136 DTRACE_PROBE1(netstack__inc__ref, netstack_t *, ns);
1330 netstack_get_zoneid(netstack_t *ns)
1332 return (netstackid_to_zoneid(ns->netstack_stackid));
1339 * netstack_t *ns;
1342 * while ((ns = netstack_next(&nh)) != NULL) {
1344 * netstack_rele(ns);
1363 netstack_t *ns;
1371 ns = netstack_head;
1373 if (ns == NULL)
1375 ns = ns->netstack_next;
1378 while (ns != NULL) {
1379 mutex_enter(&ns->netstack_lock);
1380 if ((ns->netstack_flags & (NSF_UNINIT|NSF_CLOSING)) == 0) {
1381 mutex_exit(&ns->netstack_lock);
1384 mutex_exit(&ns->netstack_lock);
1386 ns = ns->netstack_next;
1388 if (ns != NULL) {
1390 netstack_hold(ns);
1393 return (ns);