Lines Matching refs:connp
86 static int ilg_add(conn_t *connp, const in6_addr_t *group,
89 static void ilg_delete(conn_t *connp, ilg_t *ilg, const in6_addr_t *src);
92 static int ip_opt_delete_group_excl(conn_t *connp,
223 conn_ilg_alloc(conn_t *connp, int *errp) in conn_ilg_alloc() argument
227 ASSERT(RW_WRITE_HELD(&connp->conn_ilg_lock)); in conn_ilg_alloc()
233 if (connp->conn_state_flags & CONN_CLOSING) { in conn_ilg_alloc()
247 if (connp->conn_ilg != NULL) in conn_ilg_alloc()
248 connp->conn_ilg->ilg_ptpn = &ilg->ilg_next; in conn_ilg_alloc()
249 ilg->ilg_next = connp->conn_ilg; in conn_ilg_alloc()
250 ilg->ilg_ptpn = &connp->conn_ilg; in conn_ilg_alloc()
251 connp->conn_ilg = ilg; in conn_ilg_alloc()
253 ilg->ilg_connp = connp; in conn_ilg_alloc()
270 ilm_bld_flists(conn_t *connp, void *arg) in ilm_bld_flists() argument
277 if (connp->conn_ilg == NULL) in ilm_bld_flists()
300 rw_enter(&connp->conn_ilg_lock, RW_READER); in ilm_bld_flists()
301 for (ilg = connp->conn_ilg; ilg != NULL; ilg = ilg->ilg_next) { in ilm_bld_flists()
345 rw_exit(&connp->conn_ilg_lock); in ilm_bld_flists()
1791 ip_opt_check(conn_t *connp, const in6_addr_t *v6group, in ip_opt_check() argument
1796 ip_stack_t *ipst = connp->conn_netstack->netstack_ip; in ip_opt_check()
1826 ill = ill_mcast_lookup(v6group, ifaddr, ifindex, IPCL_ZONEID(connp), in ip_opt_check()
1833 ip_get_srcfilter(conn_t *connp, struct group_filter *gf, in ip_get_srcfilter() argument
1862 rw_enter(&connp->conn_ilg_lock, RW_READER); in ip_get_srcfilter()
1863 ilg = ilg_lookup(connp, group, ifaddr, ifindex); in ip_get_srcfilter()
1865 rw_exit(&connp->conn_ilg_lock); in ip_get_srcfilter()
1909 rw_exit(&connp->conn_ilg_lock); in ip_get_srcfilter()
1918 ip_set_srcfilter(conn_t *connp, struct group_filter *gf, in ip_set_srcfilter() argument
1965 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ip_set_srcfilter()
1966 ilg = ilg_lookup(connp, group, ifaddr, ifindex); in ip_set_srcfilter()
1973 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
1977 ilg = conn_ilg_alloc(connp, &err); in ip_set_srcfilter()
1979 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
1996 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
1999 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ip_set_srcfilter()
2002 ilg_delete(connp, ilg, NULL); in ip_set_srcfilter()
2004 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
2024 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
2036 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
2049 ilg_delete(connp, ilg, NULL); in ip_set_srcfilter()
2050 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
2090 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
2098 ilm = ip_addmulti_serial(group, ill, connp->conn_zoneid, ilgstat, in ip_set_srcfilter()
2101 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ip_set_srcfilter()
2108 ilg = ilg_lookup(connp, group, ifaddr, ifindex); in ip_set_srcfilter()
2110 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
2122 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
2135 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
2162 ilg_delete(connp, ilg, NULL); in ip_set_srcfilter()
2179 rw_exit(&connp->conn_ilg_lock); in ip_set_srcfilter()
2204 conn_t *connp; in ip_sioctl_msfilter() local
2215 connp = Q_TO_CONN(q); in ip_sioctl_msfilter()
2216 err = ip_msfilter_ill(connp, mp, ipip, &ill); in ip_sioctl_msfilter()
2262 err = ip_get_srcfilter(connp, gf, NULL, &v6group, in ip_sioctl_msfilter()
2265 err = ip_set_srcfilter(connp, gf, NULL, &v6group, ill, in ip_sioctl_msfilter()
2294 err = ip_get_srcfilter(connp, gf, imsf, &v6group, in ip_sioctl_msfilter()
2297 err = ip_set_srcfilter(connp, gf, imsf, &v6group, ill, in ip_sioctl_msfilter()
2314 ip_msfilter_ill(conn_t *connp, mblk_t *mp, const ip_ioctl_cmd_t *ipip, in ip_msfilter_ill() argument
2329 ipst = connp->conn_netstack->netstack_ip; in ip_msfilter_ill()
2334 if (IPCL_IS_TCP(connp)) in ip_msfilter_ill()
2339 if (connp->conn_family == AF_INET6) in ip_msfilter_ill()
2346 ill = ill_mcast_lookup(&v6group, v4addr, 0, IPCL_ZONEID(connp), in ip_msfilter_ill()
2368 IPCL_ZONEID(connp), ipst, &err); in ip_msfilter_ill()
2454 ip_opt_add_group(conn_t *connp, boolean_t checkonly, in ip_opt_add_group() argument
2462 err = ip_opt_check(connp, v6group, v6src, ifaddr, ifindex, &ill); in ip_opt_add_group()
2498 err = ilg_add(connp, v6group, ifaddr, ifindex, ill, fmode, v6src); in ip_opt_add_group()
2518 ip_opt_delete_group_excl(conn_t *connp, const in6_addr_t *v6group, in ip_opt_delete_group_excl() argument
2529 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ip_opt_delete_group_excl()
2530 ilg = ilg_lookup(connp, v6group, ifaddr, ifindex); in ip_opt_delete_group_excl()
2532 rw_exit(&connp->conn_ilg_lock); in ip_opt_delete_group_excl()
2537 err = ip_opt_check(connp, v6group, v6src, ifaddr, ifindex, in ip_opt_delete_group_excl()
2553 rw_exit(&connp->conn_ilg_lock); in ip_opt_delete_group_excl()
2555 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ip_opt_delete_group_excl()
2559 rw_exit(&connp->conn_ilg_lock); in ip_opt_delete_group_excl()
2584 rw_exit(&connp->conn_ilg_lock); in ip_opt_delete_group_excl()
2599 ilg_delete(connp, ilg, v6src); in ip_opt_delete_group_excl()
2602 rw_exit(&connp->conn_ilg_lock); in ip_opt_delete_group_excl()
2654 ip_opt_delete_group(conn_t *connp, boolean_t checkonly, in ip_opt_delete_group() argument
2668 err = ip_opt_check(connp, v6group, v6src, ifaddr, ifindex, in ip_opt_delete_group()
2678 return (ip_opt_delete_group_excl(connp, v6group, ifaddr, ifindex, in ip_opt_delete_group()
2696 ilg_add(conn_t *connp, const in6_addr_t *v6group, ipaddr_t ifaddr, in ilg_add() argument
2711 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_add()
2712 ilg = ilg_lookup(connp, v6group, ifaddr, ifindex); in ilg_add()
2737 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2746 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2751 if ((ilg = conn_ilg_alloc(connp, &error)) == NULL) { in ilg_add()
2752 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2761 ilg_delete(connp, ilg, NULL); in ilg_add()
2762 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2777 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2784 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2790 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2806 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2814 ilm = ip_addmulti_serial(v6group, ill, connp->conn_zoneid, ilgstat, in ilg_add()
2817 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_add()
2824 ilg = ilg_lookup(connp, v6group, ifaddr, ifindex); in ilg_add()
2826 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2837 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2850 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2878 ilg_delete(connp, ilg, &delsrc); in ilg_add()
2881 rw_exit(&connp->conn_ilg_lock); in ilg_add()
2894 conn_hasmembers_ill_withsrc_v4(conn_t *connp, ipaddr_t group, ipaddr_t src, in conn_hasmembers_ill_withsrc_v4() argument
2902 rw_enter(&connp->conn_ilg_lock, RW_READER); in conn_hasmembers_ill_withsrc_v4()
2904 for (ilg = connp->conn_ilg; ilg != NULL; ilg = ilg->ilg_next) { in conn_hasmembers_ill_withsrc_v4()
2917 rw_exit(&connp->conn_ilg_lock); in conn_hasmembers_ill_withsrc_v4()
2924 rw_exit(&connp->conn_ilg_lock); in conn_hasmembers_ill_withsrc_v4()
2943 rw_exit(&connp->conn_ilg_lock); in conn_hasmembers_ill_withsrc_v4()
2946 rw_exit(&connp->conn_ilg_lock); in conn_hasmembers_ill_withsrc_v4()
2954 conn_hasmembers_ill_withsrc_v6(conn_t *connp, const in6_addr_t *v6group, in conn_hasmembers_ill_withsrc_v6() argument
2961 rw_enter(&connp->conn_ilg_lock, RW_READER); in conn_hasmembers_ill_withsrc_v6()
2962 for (ilg = connp->conn_ilg; ilg != NULL; ilg = ilg->ilg_next) { in conn_hasmembers_ill_withsrc_v6()
2975 rw_exit(&connp->conn_ilg_lock); in conn_hasmembers_ill_withsrc_v6()
2982 rw_exit(&connp->conn_ilg_lock); in conn_hasmembers_ill_withsrc_v6()
3000 rw_exit(&connp->conn_ilg_lock); in conn_hasmembers_ill_withsrc_v6()
3003 rw_exit(&connp->conn_ilg_lock); in conn_hasmembers_ill_withsrc_v6()
3013 ilg_lookup(conn_t *connp, const in6_addr_t *v6group, ipaddr_t ifaddr, in ilg_lookup() argument
3018 ASSERT(RW_LOCK_HELD(&connp->conn_ilg_lock)); in ilg_lookup()
3020 for (ilg = connp->conn_ilg; ilg != NULL; ilg = ilg->ilg_next) { in ilg_lookup()
3038 ilg_delete(conn_t *connp, ilg_t *ilg, const in6_addr_t *src) in ilg_delete() argument
3040 ASSERT(RW_WRITE_HELD(&connp->conn_ilg_lock)); in ilg_delete()
3078 ilg_delete_all(conn_t *connp) in ilg_delete_all() argument
3090 mutex_enter(&connp->conn_lock); in ilg_delete_all()
3091 ASSERT(connp->conn_state_flags & CONN_CLOSING); in ilg_delete_all()
3092 while (connp->conn_state_flags & CONN_UPDATE_ILL) in ilg_delete_all()
3093 cv_wait(&connp->conn_cv, &connp->conn_lock); in ilg_delete_all()
3094 mutex_exit(&connp->conn_lock); in ilg_delete_all()
3096 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_delete_all()
3097 ilg = connp->conn_ilg; in ilg_delete_all()
3107 ilg_delete(connp, ilg, NULL); in ilg_delete_all()
3126 rw_exit(&connp->conn_ilg_lock); in ilg_delete_all()
3128 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_delete_all()
3137 ilg_delete(connp, ilg, NULL); in ilg_delete_all()
3139 rw_exit(&connp->conn_ilg_lock); in ilg_delete_all()
3156 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_delete_all()
3160 rw_exit(&connp->conn_ilg_lock); in ilg_delete_all()
3168 ilg_attach(conn_t *connp, ilg_t *ilg, ill_t *ill) in ilg_attach() argument
3179 ASSERT(RW_WRITE_HELD(&connp->conn_ilg_lock)); in ilg_attach()
3201 rw_exit(&connp->conn_ilg_lock); in ilg_attach()
3203 ilm = ip_addmulti_serial(&v6group, ill, connp->conn_zoneid, ilgstat, in ilg_attach()
3207 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_attach()
3215 ilg = ilg_lookup(connp, &v6group, ifaddr, ifindex); in ilg_attach()
3218 rw_exit(&connp->conn_ilg_lock); in ilg_attach()
3221 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_attach()
3266 conn_update_ill(conn_t *connp, caddr_t arg) in conn_update_ill() argument
3277 mutex_enter(&connp->conn_lock); in conn_update_ill()
3278 if (connp->conn_state_flags & (CONN_CLOSING|CONN_UPDATE_ILL)) { in conn_update_ill()
3280 mutex_exit(&connp->conn_lock); in conn_update_ill()
3283 connp->conn_state_flags |= CONN_UPDATE_ILL; in conn_update_ill()
3284 mutex_exit(&connp->conn_lock); in conn_update_ill()
3287 ilg_check_detach(connp, ill); in conn_update_ill()
3289 ilg_check_reattach(connp, ill); in conn_update_ill()
3292 mutex_enter(&connp->conn_lock); in conn_update_ill()
3293 connp->conn_state_flags &= ~CONN_UPDATE_ILL; in conn_update_ill()
3294 if (connp->conn_state_flags & CONN_CLOSING) in conn_update_ill()
3295 cv_broadcast(&connp->conn_cv); in conn_update_ill()
3296 mutex_exit(&connp->conn_lock); in conn_update_ill()
3301 ilg_check_detach(conn_t *connp, ill_t *ill) in ilg_check_detach() argument
3308 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_check_detach()
3310 for (ilg = connp->conn_ilg; ilg != NULL; ilg = ilg->ilg_next) { in ilg_check_detach()
3333 rw_exit(&connp->conn_ilg_lock); in ilg_check_detach()
3336 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_check_detach()
3340 rw_exit(&connp->conn_ilg_lock); in ilg_check_detach()
3357 ilg_check_reattach(conn_t *connp, ill_t *oill) in ilg_check_reattach() argument
3363 zoneid_t zoneid = IPCL_ZONEID(connp); in ilg_check_reattach()
3365 ip_stack_t *ipst = connp->conn_netstack->netstack_ip; in ilg_check_reattach()
3367 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_check_reattach()
3369 for (ilg = connp->conn_ilg; ilg != NULL; ilg = ilg->ilg_next) { in ilg_check_reattach()
3387 rw_exit(&connp->conn_ilg_lock); in ilg_check_reattach()
3390 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_check_reattach()
3403 rw_exit(&connp->conn_ilg_lock); in ilg_check_reattach()
3405 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_check_reattach()
3424 rw_exit(&connp->conn_ilg_lock); in ilg_check_reattach()
3426 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_check_reattach()
3449 rw_exit(&connp->conn_ilg_lock); in ilg_check_reattach()
3463 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_check_reattach()
3473 rw_exit(&connp->conn_ilg_lock); in ilg_check_reattach()
3475 rw_enter(&connp->conn_ilg_lock, in ilg_check_reattach()
3490 rw_exit(&connp->conn_ilg_lock); in ilg_check_reattach()
3492 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_check_reattach()
3511 ilg_attach(connp, ilg, ill); in ilg_check_reattach()
3512 ASSERT(RW_WRITE_HELD(&connp->conn_ilg_lock)); in ilg_check_reattach()
3515 rw_exit(&connp->conn_ilg_lock); in ilg_check_reattach()
3525 rw_enter(&connp->conn_ilg_lock, RW_WRITER); in ilg_check_reattach()
3530 rw_exit(&connp->conn_ilg_lock); in ilg_check_reattach()