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