Lines Matching refs:cn

4169 rib_add_connlist(CONN *cn, rib_conn_list_t *connlist)  in rib_add_connlist()  argument
4173 cn->c_next = connlist->conn_hd; in rib_add_connlist()
4174 connlist->conn_hd->c_prev = cn; in rib_add_connlist()
4176 connlist->conn_hd = cn; in rib_add_connlist()
4183 rib_rm_conn(CONN *cn, rib_conn_list_t *connlist) in rib_rm_conn() argument
4186 if (cn->c_prev) { in rib_rm_conn()
4187 cn->c_prev->c_next = cn->c_next; in rib_rm_conn()
4189 if (cn->c_next) { in rib_rm_conn()
4190 cn->c_next->c_prev = cn->c_prev; in rib_rm_conn()
4192 if (connlist->conn_hd == cn) in rib_rm_conn()
4193 connlist->conn_hd = cn->c_next; in rib_rm_conn()
4222 CONN *cn; in rib_find_hca_connection() local
4228 cn = hca->cl_conn_list.conn_hd; in rib_find_hca_connection()
4229 while (cn != NULL) { in rib_find_hca_connection()
4233 mutex_enter(&cn->c_lock); in rib_find_hca_connection()
4234 if (cn->c_state == C_ERROR_CONN) { in rib_find_hca_connection()
4235 if (cn->c_ref == 0) { in rib_find_hca_connection()
4239 cn->c_state = C_DISCONN_PEND; in rib_find_hca_connection()
4240 mutex_exit(&cn->c_lock); in rib_find_hca_connection()
4242 rib_conn_close((void *)cn); in rib_find_hca_connection()
4245 mutex_exit(&cn->c_lock); in rib_find_hca_connection()
4246 cn = cn->c_next; in rib_find_hca_connection()
4249 if (cn->c_state == C_DISCONN_PEND) { in rib_find_hca_connection()
4250 mutex_exit(&cn->c_lock); in rib_find_hca_connection()
4251 cn = cn->c_next; in rib_find_hca_connection()
4259 if ((cn->c_raddr.len == d_svcaddr->len) && in rib_find_hca_connection()
4260 (bcmp(d_svcaddr->buf, cn->c_raddr.buf, in rib_find_hca_connection()
4263 ((cn->c_laddr.len == s_svcaddr->len) && in rib_find_hca_connection()
4264 (bcmp(s_svcaddr->buf, cn->c_laddr.buf, in rib_find_hca_connection()
4271 if (cn->c_state == C_CONNECTED) { in rib_find_hca_connection()
4272 cn->c_ref++; /* sharing a conn */ in rib_find_hca_connection()
4273 mutex_exit(&cn->c_lock); in rib_find_hca_connection()
4274 *conn = cn; in rib_find_hca_connection()
4277 if (cn->c_state == C_CONN_PEND) { in rib_find_hca_connection()
4282 cn->c_ref++; in rib_find_hca_connection()
4285 while ((cv_stat = cv_timedwait_sig(&cn->c_cv, in rib_find_hca_connection()
4286 &cn->c_lock, timout)) > 0 && in rib_find_hca_connection()
4287 cn->c_state == C_CONN_PEND) in rib_find_hca_connection()
4290 (void) rib_conn_release_locked(cn); in rib_find_hca_connection()
4294 (void) rib_conn_release_locked(cn); in rib_find_hca_connection()
4297 if (cn->c_state == C_CONNECTED) { in rib_find_hca_connection()
4298 *conn = cn; in rib_find_hca_connection()
4299 mutex_exit(&cn->c_lock); in rib_find_hca_connection()
4302 (void) rib_conn_release_locked(cn); in rib_find_hca_connection()
4307 mutex_exit(&cn->c_lock); in rib_find_hca_connection()
4308 cn = cn->c_next; in rib_find_hca_connection()
4337 CONN *cn; in rib_connect() local
4387 cn = qptoc(qp); in rib_connect()
4388 cn->c_state = C_CONN_PEND; in rib_connect()
4389 cn->c_ref = 1; in rib_connect()
4391 cn->c_laddr.buf = kmem_alloc(s_addr_len, KM_SLEEP); in rib_connect()
4392 bcopy(s_addr_buf, cn->c_laddr.buf, s_addr_len); in rib_connect()
4393 cn->c_laddr.len = cn->c_laddr.maxlen = s_addr_len; in rib_connect()
4396 cn->c_netid = kmem_zalloc(strlen(RIBNETID_TCP) + 1, KM_SLEEP); in rib_connect()
4397 (void) strcpy(cn->c_netid, RIBNETID_TCP); in rib_connect()
4399 cn->c_addrmask.len = cn->c_addrmask.maxlen = in rib_connect()
4401 cn->c_addrmask.buf = kmem_zalloc(cn->c_addrmask.len, KM_SLEEP); in rib_connect()
4403 ((struct sockaddr_in *)cn->c_addrmask.buf)->sin_addr.s_addr = in rib_connect()
4405 ((struct sockaddr_in *)cn->c_addrmask.buf)->sin_family = in rib_connect()
4409 cn->c_netid = kmem_zalloc(strlen(RIBNETID_TCP6) + 1, KM_SLEEP); in rib_connect()
4410 (void) strcpy(cn->c_netid, RIBNETID_TCP6); in rib_connect()
4412 cn->c_addrmask.len = cn->c_addrmask.maxlen = in rib_connect()
4414 cn->c_addrmask.buf = kmem_zalloc(cn->c_addrmask.len, KM_SLEEP); in rib_connect()
4417 &((struct sockaddr_in6 *)cn->c_addrmask.buf)->sin6_addr, in rib_connect()
4419 ((struct sockaddr_in6 *)cn->c_addrmask.buf)->sin6_family = in rib_connect()
4433 (void) rib_add_connlist(cn, &hca->cl_conn_list); in rib_connect()
4435 mutex_enter(&cn->c_lock); in rib_connect()
4437 if (cn->c_flags & C_CLOSE_PENDING) { in rib_connect()
4445 if (cn->c_ref == 1) { in rib_connect()
4446 cn->c_ref--; in rib_connect()
4447 cn->c_state = C_DISCONN_PEND; in rib_connect()
4448 mutex_exit(&cn->c_lock); in rib_connect()
4449 rib_conn_close((void *)cn); in rib_connect()
4460 cn->c_state = C_CONNECTED; in rib_connect()
4461 *conn = cn; in rib_connect()
4463 cn->c_state = C_ERROR_CONN; in rib_connect()
4464 cn->c_ref--; in rib_connect()
4466 cv_signal(&cn->c_cv); in rib_connect()
4467 mutex_exit(&cn->c_lock); in rib_connect()