Lines Matching defs:so

70 	struct sonode *so;
109 so = sp->sp_smod_info->smod_sock_create_func(sp, family, type,
111 if (so == NULL) {
114 if ((*errorp = SOP_INIT(so, NULL, cr, flags)) == 0) {
116 (void) VOP_OPEN(&SOTOV(so), FREAD|FWRITE, cr, NULL);
121 socket_destroy(so);
122 so = NULL;
125 return (so);
132 struct sonode *so;
143 so = sp->sp_smod_info->smod_sock_create_func(sp, parent->so_family,
146 if (so != NULL) {
149 so->so_proto_handle = lh;
150 so->so_downcalls = dc;
155 if ((*errorp = SOP_INIT(so, parent, cr, flags)) == 0) {
157 (void) VOP_OPEN(&SOTOV(so), FREAD|FWRITE, cr, NULL);
159 socket_destroy(so);
160 so = NULL;
164 return (so);
171 socket_bind(struct sonode *so, struct sockaddr *name, socklen_t namelen,
174 return (SOP_BIND(so, name, namelen, flags, cr));
181 socket_listen(struct sonode *so, int backlog, cred_t *cr)
203 return (SOP_LISTEN(so, backlog, cr));
219 socket_connect(struct sonode *so, struct sockaddr *name,
235 error = SOP_CONNECT(so, name, namelen, fflag, flags, cr);
254 socket_getpeername(struct sonode *so, struct sockaddr *addr,
258 return (SOP_GETPEERNAME(so, addr, addrlen, accept, cr));
266 socket_getsockname(struct sonode *so, struct sockaddr *addr,
269 return (SOP_GETSOCKNAME(so, addr, addrlen, cr));
277 socket_shutdown(struct sonode *so, int how, cred_t *cr)
279 return (SOP_SHUTDOWN(so, how, cr));
287 socket_getsockopt(struct sonode *so, int level, int option_name,
290 return (SOP_GETSOCKOPT(so, level, option_name, optval,
298 socket_setsockopt(struct sonode *so, int level, int option_name,
311 return (SOP_SETSOCKOPT(so, level, option_name, optval, optlen, cr));
315 socket_sendmsg(struct sonode *so, struct nmsghdr *msg, struct uio *uiop,
324 if (so->so_family == AF_UNIX)
329 error = SOP_SENDMSG(so, msg, uiop, cr);
342 if ((so->so_mode & SM_KERNEL) == 0)
351 socket_sendmblk(struct sonode *so, struct nmsghdr *msg, int fflag,
356 error = SOP_SENDMBLK(so, msg, fflag, cr, mpp);
364 socket_recvmsg(struct sonode *so, struct nmsghdr *msg, struct uio *uiop,
376 error = SOP_RECVMSG(so, msg, uiop, cr);
393 socket_ioctl(struct sonode *so, int cmd, intptr_t arg, int mode,
396 return (SOP_IOCTL(so, cmd, arg, mode, cr, rvalp));
400 socket_poll(struct sonode *so, short events, int anyyet, short *reventsp,
403 return (SOP_POLL(so, events, anyyet, reventsp, phpp));
407 socket_close(struct sonode *so, int flag, struct cred *cr)
409 return (VOP_CLOSE(SOTOV(so), flag, 1, 0, cr, NULL));
413 socket_close_internal(struct sonode *so, int flag, cred_t *cr)
415 ASSERT(so->so_count == 0);
417 return (SOP_CLOSE(so, flag, cr));
421 socket_destroy(struct sonode *so)
423 vn_invalid(SOTOV(so));
424 VN_RELE(SOTOV(so));
429 socket_destroy_internal(struct sonode *so, cred_t *cr)
431 struct sockparams *sp = so->so_sockparams;
432 ASSERT(so->so_count == 0 && sp != NULL);
434 sp->sp_smod_info->smod_sock_destroy_func(so);
447 struct sonode *so = buf;
450 vp = so->so_vnode = vn_alloc(kmflags);
454 vp->v_data = so;
457 so->so_priv = NULL;
458 so->so_oobmsg = NULL;
460 so->so_proto_handle = NULL;
462 so->so_peercred = NULL;
464 so->so_rcv_queued = 0;
465 so->so_rcv_q_head = NULL;
466 so->so_rcv_q_last_head = NULL;
467 so->so_rcv_head = NULL;
468 so->so_rcv_last_head = NULL;
469 so->so_rcv_wanted = 0;
470 so->so_rcv_timer_interval = SOCKET_NO_RCVTIMER;
471 so->so_rcv_timer_tid = 0;
472 so->so_rcv_thresh = 0;
474 list_create(&so->so_acceptq_list, sizeof (struct sonode),
476 list_create(&so->so_acceptq_defer, sizeof (struct sonode),
478 list_link_init(&so->so_acceptq_node);
479 so->so_acceptq_len = 0;
480 so->so_backlog = 0;
481 so->so_listener = NULL;
483 so->so_snd_qfull = B_FALSE;
485 so->so_filter_active = 0;
486 so->so_filter_tx = 0;
487 so->so_filter_defertime = 0;
488 so->so_filter_top = NULL;
489 so->so_filter_bottom = NULL;
491 mutex_init(&so->so_lock, NULL, MUTEX_DEFAULT, NULL);
492 mutex_init(&so->so_acceptq_lock, NULL, MUTEX_DEFAULT, NULL);
493 rw_init(&so->so_fallback_rwlock, NULL, RW_DEFAULT, NULL);
494 cv_init(&so->so_state_cv, NULL, CV_DEFAULT, NULL);
495 cv_init(&so->so_single_cv, NULL, CV_DEFAULT, NULL);
496 cv_init(&so->so_read_cv, NULL, CV_DEFAULT, NULL);
498 cv_init(&so->so_acceptq_cv, NULL, CV_DEFAULT, NULL);
499 cv_init(&so->so_snd_cv, NULL, CV_DEFAULT, NULL);
500 cv_init(&so->so_rcv_cv, NULL, CV_DEFAULT, NULL);
501 cv_init(&so->so_copy_cv, NULL, CV_DEFAULT, NULL);
502 cv_init(&so->so_closing_cv, NULL, CV_DEFAULT, NULL);
511 struct sonode *so = buf;
512 struct vnode *vp = SOTOV(so);
514 ASSERT(so->so_priv == NULL);
515 ASSERT(so->so_peercred == NULL);
517 ASSERT(so->so_oobmsg == NULL);
519 ASSERT(so->so_rcv_q_head == NULL);
521 list_destroy(&so->so_acceptq_list);
522 list_destroy(&so->so_acceptq_defer);
523 ASSERT(!list_link_active(&so->so_acceptq_node));
524 ASSERT(so->so_listener == NULL);
526 ASSERT(so->so_filter_active == 0);
527 ASSERT(so->so_filter_tx == 0);
528 ASSERT(so->so_filter_top == NULL);
529 ASSERT(so->so_filter_bottom == NULL);
531 ASSERT(vp->v_data == so);
536 mutex_destroy(&so->so_lock);
537 mutex_destroy(&so->so_acceptq_lock);
538 rw_destroy(&so->so_fallback_rwlock);
540 cv_destroy(&so->so_state_cv);
541 cv_destroy(&so->so_single_cv);
542 cv_destroy(&so->so_read_cv);
543 cv_destroy(&so->so_acceptq_cv);
544 cv_destroy(&so->so_snd_cv);
545 cv_destroy(&so->so_rcv_cv);
546 cv_destroy(&so->so_closing_cv);
550 sonode_init(struct sonode *so, struct sockparams *sp, int family,
555 vp = SOTOV(so);
557 so->so_flag = 0;
559 so->so_state = 0;
560 so->so_mode = 0;
562 so->so_count = 0;
564 so->so_family = family;
565 so->so_type = type;
566 so->so_protocol = protocol;
568 SOCK_CONNID_INIT(so->so_proto_connid);
570 so->so_options = 0;
571 so->so_linger.l_onoff = 0;
572 so->so_linger.l_linger = 0;
573 so->so_sndbuf = 0;
574 so->so_error = 0;
575 so->so_rcvtimeo = 0;
576 so->so_sndtimeo = 0;
577 so->so_xpg_rcvbuf = 0;
579 ASSERT(so->so_oobmsg == NULL);
580 so->so_oobmark = 0;
581 so->so_pgrp = 0;
583 ASSERT(so->so_peercred == NULL);
585 so->so_zoneid = getzoneid();
587 so->so_sockparams = sp;
589 so->so_ops = sops;
591 so->so_not_str = (sops != &sotpi_sonodeops);
593 so->so_proto_handle = NULL;
595 so->so_downcalls = NULL;
597 so->so_copyflag = 0;
604 so->so_snd_qfull = B_FALSE;
605 so->so_minpsz = 0;
607 so->so_rcv_wakeup = B_FALSE;
608 so->so_snd_wakeup = B_FALSE;
609 so->so_flowctrld = B_FALSE;
611 so->so_pollev = 0;
612 bzero(&so->so_poll_list, sizeof (so->so_poll_list));
613 bzero(&so->so_proto_props, sizeof (struct sock_proto_props));
615 bzero(&(so->so_ksock_callbacks), sizeof (ksocket_callbacks_t));
616 so->so_ksock_cb_arg = NULL;
618 so->so_max_addr_len = sizeof (struct sockaddr_storage);
620 so->so_direct = NULL;
626 sonode_fini(struct sonode *so)
630 ASSERT(so->so_count == 0);
632 if (so->so_rcv_timer_tid) {
633 ASSERT(MUTEX_NOT_HELD(&so->so_lock));
634 (void) untimeout(so->so_rcv_timer_tid);
635 so->so_rcv_timer_tid = 0;
638 if (so->so_poll_list.ph_list != NULL) {
639 pollwakeup(&so->so_poll_list, POLLERR);
640 pollhead_clean(&so->so_poll_list);
643 if (so->so_direct != NULL)
644 sod_sock_fini(so);
646 vp = SOTOV(so);
649 if (so->so_peercred != NULL) {
650 crfree(so->so_peercred);
651 so->so_peercred = NULL;
654 if (so->so_filter_top != NULL)
655 sof_sonode_cleanup(so);
657 ASSERT(list_is_empty(&so->so_acceptq_list));
658 ASSERT(list_is_empty(&so->so_acceptq_defer));
659 ASSERT(!list_link_active(&so->so_acceptq_node));
661 ASSERT(so->so_rcv_queued == 0);
662 ASSERT(so->so_rcv_q_head == NULL);
663 ASSERT(so->so_rcv_q_last_head == NULL);
664 ASSERT(so->so_rcv_head == NULL);
665 ASSERT(so->so_rcv_last_head == NULL);