Lines Matching refs:so

72 	struct sonode *so;  in socket_create()  local
111 so = sp->sp_smod_info->smod_sock_create_func(sp, family, type, in socket_create()
113 if (so == NULL) { in socket_create()
116 if ((*errorp = SOP_INIT(so, NULL, cr, flags)) == 0) { in socket_create()
118 (void) VOP_OPEN(&SOTOV(so), FREAD|FWRITE, cr, NULL); in socket_create()
123 socket_destroy(so); in socket_create()
124 so = NULL; in socket_create()
127 return (so); in socket_create()
134 struct sonode *so; in socket_newconn() local
145 so = sp->sp_smod_info->smod_sock_create_func(sp, parent->so_family, in socket_newconn()
148 if (so != NULL) { in socket_newconn()
151 so->so_proto_handle = lh; in socket_newconn()
152 so->so_downcalls = dc; in socket_newconn()
157 if ((*errorp = SOP_INIT(so, parent, cr, flags)) == 0) { in socket_newconn()
159 (void) VOP_OPEN(&SOTOV(so), FREAD|FWRITE, cr, NULL); in socket_newconn()
161 socket_destroy(so); in socket_newconn()
162 so = NULL; in socket_newconn()
166 return (so); in socket_newconn()
173 socket_bind(struct sonode *so, struct sockaddr *name, socklen_t namelen, in socket_bind() argument
176 return (SOP_BIND(so, name, namelen, flags, cr)); in socket_bind()
183 socket_listen(struct sonode *so, int backlog, cred_t *cr) in socket_listen() argument
205 return (SOP_LISTEN(so, backlog, cr)); in socket_listen()
221 socket_connect(struct sonode *so, struct sockaddr *name, in socket_connect() argument
237 error = SOP_CONNECT(so, name, namelen, fflag, flags, cr); in socket_connect()
256 socket_getpeername(struct sonode *so, struct sockaddr *addr, in socket_getpeername() argument
260 return (SOP_GETPEERNAME(so, addr, addrlen, accept, cr)); in socket_getpeername()
268 socket_getsockname(struct sonode *so, struct sockaddr *addr, in socket_getsockname() argument
271 return (SOP_GETSOCKNAME(so, addr, addrlen, cr)); in socket_getsockname()
279 socket_shutdown(struct sonode *so, int how, cred_t *cr) in socket_shutdown() argument
281 return (SOP_SHUTDOWN(so, how, cr)); in socket_shutdown()
289 socket_getsockopt(struct sonode *so, int level, int option_name, in socket_getsockopt() argument
292 return (SOP_GETSOCKOPT(so, level, option_name, optval, in socket_getsockopt()
300 socket_setsockopt(struct sonode *so, int level, int option_name, in socket_setsockopt() argument
313 return (SOP_SETSOCKOPT(so, level, option_name, optval, optlen, cr)); in socket_setsockopt()
317 socket_sendmsg(struct sonode *so, struct nmsghdr *msg, struct uio *uiop, in socket_sendmsg() argument
326 if (so->so_family == AF_UNIX) in socket_sendmsg()
331 error = SOP_SENDMSG(so, msg, uiop, cr); in socket_sendmsg()
344 if (((so->so_mode & SM_KERNEL) == 0) && in socket_sendmsg()
355 socket_sendmblk(struct sonode *so, struct nmsghdr *msg, int fflag, in socket_sendmblk() argument
360 error = SOP_SENDMBLK(so, msg, fflag, cr, mpp); in socket_sendmblk()
368 socket_recvmsg(struct sonode *so, struct nmsghdr *msg, struct uio *uiop, in socket_recvmsg() argument
380 error = SOP_RECVMSG(so, msg, uiop, cr); in socket_recvmsg()
397 socket_ioctl(struct sonode *so, int cmd, intptr_t arg, int mode, in socket_ioctl() argument
400 return (SOP_IOCTL(so, cmd, arg, mode, cr, rvalp)); in socket_ioctl()
404 socket_poll(struct sonode *so, short events, int anyyet, short *reventsp, in socket_poll() argument
407 return (SOP_POLL(so, events, anyyet, reventsp, phpp)); in socket_poll()
411 socket_close(struct sonode *so, int flag, struct cred *cr) in socket_close() argument
413 return (VOP_CLOSE(SOTOV(so), flag, 1, 0, cr, NULL)); in socket_close()
417 socket_close_internal(struct sonode *so, int flag, cred_t *cr) in socket_close_internal() argument
419 ASSERT(so->so_count == 0); in socket_close_internal()
421 return (SOP_CLOSE(so, flag, cr)); in socket_close_internal()
425 socket_destroy(struct sonode *so) in socket_destroy() argument
427 vn_invalid(SOTOV(so)); in socket_destroy()
428 VN_RELE(SOTOV(so)); in socket_destroy()
433 socket_destroy_internal(struct sonode *so, cred_t *cr) in socket_destroy_internal() argument
435 struct sockparams *sp = so->so_sockparams; in socket_destroy_internal()
436 ASSERT(so->so_count == 0 && sp != NULL); in socket_destroy_internal()
438 sp->sp_smod_info->smod_sock_destroy_func(so); in socket_destroy_internal()
451 struct sonode *so = buf; in sonode_constructor() local
454 vp = so->so_vnode = vn_alloc(kmflags); in sonode_constructor()
458 vp->v_data = so; in sonode_constructor()
461 so->so_priv = NULL; in sonode_constructor()
462 so->so_oobmsg = NULL; in sonode_constructor()
464 so->so_proto_handle = NULL; in sonode_constructor()
466 so->so_peercred = NULL; in sonode_constructor()
468 so->so_rcv_queued = 0; in sonode_constructor()
469 so->so_rcv_q_head = NULL; in sonode_constructor()
470 so->so_rcv_q_last_head = NULL; in sonode_constructor()
471 so->so_rcv_head = NULL; in sonode_constructor()
472 so->so_rcv_last_head = NULL; in sonode_constructor()
473 so->so_rcv_wanted = 0; in sonode_constructor()
474 so->so_rcv_timer_interval = SOCKET_NO_RCVTIMER; in sonode_constructor()
475 so->so_rcv_timer_tid = 0; in sonode_constructor()
476 so->so_rcv_thresh = 0; in sonode_constructor()
478 list_create(&so->so_acceptq_list, sizeof (struct sonode), in sonode_constructor()
480 list_create(&so->so_acceptq_defer, sizeof (struct sonode), in sonode_constructor()
482 list_link_init(&so->so_acceptq_node); in sonode_constructor()
483 so->so_acceptq_len = 0; in sonode_constructor()
484 so->so_backlog = 0; in sonode_constructor()
485 so->so_listener = NULL; in sonode_constructor()
487 so->so_snd_qfull = B_FALSE; in sonode_constructor()
489 so->so_filter_active = 0; in sonode_constructor()
490 so->so_filter_tx = 0; in sonode_constructor()
491 so->so_filter_defertime = 0; in sonode_constructor()
492 so->so_filter_top = NULL; in sonode_constructor()
493 so->so_filter_bottom = NULL; in sonode_constructor()
495 mutex_init(&so->so_lock, NULL, MUTEX_DEFAULT, NULL); in sonode_constructor()
496 mutex_init(&so->so_acceptq_lock, NULL, MUTEX_DEFAULT, NULL); in sonode_constructor()
497 rw_init(&so->so_fallback_rwlock, NULL, RW_DEFAULT, NULL); in sonode_constructor()
498 cv_init(&so->so_state_cv, NULL, CV_DEFAULT, NULL); in sonode_constructor()
499 cv_init(&so->so_single_cv, NULL, CV_DEFAULT, NULL); in sonode_constructor()
500 cv_init(&so->so_read_cv, NULL, CV_DEFAULT, NULL); in sonode_constructor()
502 cv_init(&so->so_acceptq_cv, NULL, CV_DEFAULT, NULL); in sonode_constructor()
503 cv_init(&so->so_snd_cv, NULL, CV_DEFAULT, NULL); in sonode_constructor()
504 cv_init(&so->so_rcv_cv, NULL, CV_DEFAULT, NULL); in sonode_constructor()
505 cv_init(&so->so_copy_cv, NULL, CV_DEFAULT, NULL); in sonode_constructor()
506 cv_init(&so->so_closing_cv, NULL, CV_DEFAULT, NULL); in sonode_constructor()
508 so->so_krecv_cb = NULL; in sonode_constructor()
509 so->so_krecv_arg = NULL; in sonode_constructor()
518 struct sonode *so = buf; in sonode_destructor() local
519 struct vnode *vp = SOTOV(so); in sonode_destructor()
521 ASSERT(so->so_priv == NULL); in sonode_destructor()
522 ASSERT(so->so_peercred == NULL); in sonode_destructor()
524 ASSERT(so->so_oobmsg == NULL); in sonode_destructor()
526 ASSERT(so->so_rcv_q_head == NULL); in sonode_destructor()
528 list_destroy(&so->so_acceptq_list); in sonode_destructor()
529 list_destroy(&so->so_acceptq_defer); in sonode_destructor()
530 ASSERT(!list_link_active(&so->so_acceptq_node)); in sonode_destructor()
531 ASSERT(so->so_listener == NULL); in sonode_destructor()
533 ASSERT(so->so_filter_active == 0); in sonode_destructor()
534 ASSERT(so->so_filter_tx == 0); in sonode_destructor()
535 ASSERT(so->so_filter_top == NULL); in sonode_destructor()
536 ASSERT(so->so_filter_bottom == NULL); in sonode_destructor()
538 ASSERT(vp->v_data == so); in sonode_destructor()
543 mutex_destroy(&so->so_lock); in sonode_destructor()
544 mutex_destroy(&so->so_acceptq_lock); in sonode_destructor()
545 rw_destroy(&so->so_fallback_rwlock); in sonode_destructor()
547 cv_destroy(&so->so_state_cv); in sonode_destructor()
548 cv_destroy(&so->so_single_cv); in sonode_destructor()
549 cv_destroy(&so->so_read_cv); in sonode_destructor()
550 cv_destroy(&so->so_acceptq_cv); in sonode_destructor()
551 cv_destroy(&so->so_snd_cv); in sonode_destructor()
552 cv_destroy(&so->so_rcv_cv); in sonode_destructor()
553 cv_destroy(&so->so_closing_cv); in sonode_destructor()
557 sonode_init(struct sonode *so, struct sockparams *sp, int family, in sonode_init() argument
562 vp = SOTOV(so); in sonode_init()
564 so->so_flag = 0; in sonode_init()
566 so->so_state = 0; in sonode_init()
567 so->so_mode = 0; in sonode_init()
569 so->so_count = 0; in sonode_init()
571 so->so_family = family; in sonode_init()
572 so->so_type = type; in sonode_init()
573 so->so_protocol = protocol; in sonode_init()
575 SOCK_CONNID_INIT(so->so_proto_connid); in sonode_init()
577 so->so_options = 0; in sonode_init()
578 so->so_linger.l_onoff = 0; in sonode_init()
579 so->so_linger.l_linger = 0; in sonode_init()
580 so->so_sndbuf = 0; in sonode_init()
581 so->so_error = 0; in sonode_init()
582 so->so_rcvtimeo = 0; in sonode_init()
583 so->so_sndtimeo = 0; in sonode_init()
584 so->so_xpg_rcvbuf = 0; in sonode_init()
586 ASSERT(so->so_oobmsg == NULL); in sonode_init()
587 so->so_oobmark = 0; in sonode_init()
588 so->so_pgrp = 0; in sonode_init()
590 ASSERT(so->so_peercred == NULL); in sonode_init()
592 so->so_zoneid = getzoneid(); in sonode_init()
594 so->so_sockparams = sp; in sonode_init()
596 so->so_ops = sops; in sonode_init()
598 so->so_not_str = (sops != &sotpi_sonodeops); in sonode_init()
600 so->so_proto_handle = NULL; in sonode_init()
602 so->so_downcalls = NULL; in sonode_init()
604 so->so_copyflag = 0; in sonode_init()
611 so->so_snd_qfull = B_FALSE; in sonode_init()
612 so->so_minpsz = 0; in sonode_init()
614 so->so_rcv_wakeup = B_FALSE; in sonode_init()
615 so->so_snd_wakeup = B_FALSE; in sonode_init()
616 so->so_flowctrld = B_FALSE; in sonode_init()
618 so->so_pollev = 0; in sonode_init()
619 bzero(&so->so_poll_list, sizeof (so->so_poll_list)); in sonode_init()
620 bzero(&so->so_proto_props, sizeof (struct sock_proto_props)); in sonode_init()
622 bzero(&(so->so_ksock_callbacks), sizeof (ksocket_callbacks_t)); in sonode_init()
623 so->so_ksock_cb_arg = NULL; in sonode_init()
625 so->so_max_addr_len = sizeof (struct sockaddr_storage); in sonode_init()
627 so->so_direct = NULL; in sonode_init()
633 sonode_fini(struct sonode *so) in sonode_fini() argument
637 ASSERT(so->so_count == 0); in sonode_fini()
639 if (so->so_rcv_timer_tid) { in sonode_fini()
640 ASSERT(MUTEX_NOT_HELD(&so->so_lock)); in sonode_fini()
641 (void) untimeout(so->so_rcv_timer_tid); in sonode_fini()
642 so->so_rcv_timer_tid = 0; in sonode_fini()
645 if (so->so_poll_list.ph_list != NULL) { in sonode_fini()
646 pollwakeup(&so->so_poll_list, POLLERR); in sonode_fini()
647 pollhead_clean(&so->so_poll_list); in sonode_fini()
650 if (so->so_direct != NULL) in sonode_fini()
651 sod_sock_fini(so); in sonode_fini()
653 vp = SOTOV(so); in sonode_fini()
656 if (so->so_peercred != NULL) { in sonode_fini()
657 crfree(so->so_peercred); in sonode_fini()
658 so->so_peercred = NULL; in sonode_fini()
661 if (so->so_filter_top != NULL) in sonode_fini()
662 sof_sonode_cleanup(so); in sonode_fini()
665 so->so_krecv_cb = NULL; in sonode_fini()
666 so->so_krecv_arg = NULL; in sonode_fini()
668 ASSERT(list_is_empty(&so->so_acceptq_list)); in sonode_fini()
669 ASSERT(list_is_empty(&so->so_acceptq_defer)); in sonode_fini()
670 ASSERT(!list_link_active(&so->so_acceptq_node)); in sonode_fini()
672 ASSERT(so->so_rcv_queued == 0); in sonode_fini()
673 ASSERT(so->so_rcv_q_head == NULL); in sonode_fini()
674 ASSERT(so->so_rcv_q_last_head == NULL); in sonode_fini()
675 ASSERT(so->so_rcv_head == NULL); in sonode_fini()
676 ASSERT(so->so_rcv_last_head == NULL); in sonode_fini()