Lines Matching refs:cn

4167 rib_add_connlist(CONN *cn, rib_conn_list_t *connlist)
4171 cn->c_next = connlist->conn_hd;
4172 connlist->conn_hd->c_prev = cn;
4174 connlist->conn_hd = cn;
4181 rib_rm_conn(CONN *cn, rib_conn_list_t *connlist)
4184 if (cn->c_prev) {
4185 cn->c_prev->c_next = cn->c_next;
4187 if (cn->c_next) {
4188 cn->c_next->c_prev = cn->c_prev;
4190 if (connlist->conn_hd == cn)
4191 connlist->conn_hd = cn->c_next;
4220 CONN *cn;
4226 cn = hca->cl_conn_list.conn_hd;
4227 while (cn != NULL) {
4231 mutex_enter(&cn->c_lock);
4232 if (cn->c_state == C_ERROR_CONN) {
4233 if (cn->c_ref == 0) {
4237 cn->c_state = C_DISCONN_PEND;
4238 mutex_exit(&cn->c_lock);
4240 rib_conn_close((void *)cn);
4243 mutex_exit(&cn->c_lock);
4244 cn = cn->c_next;
4247 if (cn->c_state == C_DISCONN_PEND) {
4248 mutex_exit(&cn->c_lock);
4249 cn = cn->c_next;
4257 if ((cn->c_raddr.len == d_svcaddr->len) &&
4258 (bcmp(d_svcaddr->buf, cn->c_raddr.buf,
4261 ((cn->c_laddr.len == s_svcaddr->len) &&
4262 (bcmp(s_svcaddr->buf, cn->c_laddr.buf,
4269 if (cn->c_state == C_CONNECTED) {
4270 cn->c_ref++; /* sharing a conn */
4271 mutex_exit(&cn->c_lock);
4272 *conn = cn;
4275 if (cn->c_state == C_CONN_PEND) {
4280 cn->c_ref++;
4283 while ((cv_stat = cv_timedwait_sig(&cn->c_cv,
4284 &cn->c_lock, timout)) > 0 &&
4285 cn->c_state == C_CONN_PEND)
4288 (void) rib_conn_release_locked(cn);
4292 (void) rib_conn_release_locked(cn);
4295 if (cn->c_state == C_CONNECTED) {
4296 *conn = cn;
4297 mutex_exit(&cn->c_lock);
4300 (void) rib_conn_release_locked(cn);
4305 mutex_exit(&cn->c_lock);
4306 cn = cn->c_next;
4335 CONN *cn;
4385 cn = qptoc(qp);
4386 cn->c_state = C_CONN_PEND;
4387 cn->c_ref = 1;
4389 cn->c_laddr.buf = kmem_alloc(s_addr_len, KM_SLEEP);
4390 bcopy(s_addr_buf, cn->c_laddr.buf, s_addr_len);
4391 cn->c_laddr.len = cn->c_laddr.maxlen = s_addr_len;
4394 cn->c_netid = kmem_zalloc(strlen(RIBNETID_TCP) + 1, KM_SLEEP);
4395 (void) strcpy(cn->c_netid, RIBNETID_TCP);
4397 cn->c_addrmask.len = cn->c_addrmask.maxlen =
4399 cn->c_addrmask.buf = kmem_zalloc(cn->c_addrmask.len, KM_SLEEP);
4401 ((struct sockaddr_in *)cn->c_addrmask.buf)->sin_addr.s_addr =
4403 ((struct sockaddr_in *)cn->c_addrmask.buf)->sin_family =
4407 cn->c_netid = kmem_zalloc(strlen(RIBNETID_TCP6) + 1, KM_SLEEP);
4408 (void) strcpy(cn->c_netid, RIBNETID_TCP6);
4410 cn->c_addrmask.len = cn->c_addrmask.maxlen =
4412 cn->c_addrmask.buf = kmem_zalloc(cn->c_addrmask.len, KM_SLEEP);
4415 &((struct sockaddr_in6 *)cn->c_addrmask.buf)->sin6_addr,
4417 ((struct sockaddr_in6 *)cn->c_addrmask.buf)->sin6_family =
4431 (void) rib_add_connlist(cn, &hca->cl_conn_list);
4433 mutex_enter(&cn->c_lock);
4435 if (cn->c_flags & C_CLOSE_PENDING) {
4443 if (cn->c_ref == 1) {
4444 cn->c_ref--;
4445 cn->c_state = C_DISCONN_PEND;
4446 mutex_exit(&cn->c_lock);
4447 rib_conn_close((void *)cn);
4458 cn->c_state = C_CONNECTED;
4459 *conn = cn;
4461 cn->c_state = C_ERROR_CONN;
4462 cn->c_ref--;
4464 cv_signal(&cn->c_cv);
4465 mutex_exit(&cn->c_lock);