Lines Matching defs:sock

54 	socket_t			sock,
65 socket_t sock,
79 if (sock == NULL || new_sock == NULL) return EINVAL;
80 socket_lock(sock, 1);
81 if ((sock->so_options & SO_ACCEPTCONN) == 0) {
82 socket_unlock(sock, 1);
86 socket_unlock(sock, 1);
89 if (((flags & MSG_DONTWAIT) != 0 || (sock->so_state & SS_NBIO) != 0) &&
90 sock->so_comp.tqh_first == NULL) {
91 socket_unlock(sock, 1);
95 if (sock->so_proto->pr_getlock != NULL) {
96 mutex_held = (*sock->so_proto->pr_getlock)(sock, 0);
100 mutex_held = sock->so_proto->pr_domain->dom_mtx;
104 while (TAILQ_EMPTY(&sock->so_comp) && sock->so_error == 0) {
105 if (sock->so_state & SS_CANTRCVMORE) {
106 sock->so_error = ECONNABORTED;
109 error = msleep((caddr_t)&sock->so_timeo, mutex_held, PSOCK | PCATCH, "sock_accept", NULL);
111 socket_unlock(sock, 1);
115 if (sock->so_error) {
116 error = sock->so_error;
117 sock->so_error = 0;
118 socket_unlock(sock, 1);
122 new_so = TAILQ_FIRST(&sock->so_comp);
123 TAILQ_REMOVE(&sock->so_comp, new_so, so_list);
124 sock->so_qlen--;
137 socket_unlock(sock, 0);
140 sodereference(sock);
143 socket_lock(sock, 0);
156 socket_unlock(sock, 1); /* release the head */
190 socket_t sock,
198 if (sock == NULL || to == NULL)
211 error = sobind(sock, sa);
221 socket_t sock,
231 if (sock == NULL || to == NULL) return EINVAL;
244 socket_lock(sock, 1);
246 if ((sock->so_state & SS_ISCONNECTING) &&
247 ((sock->so_state & SS_NBIO) != 0 ||
252 error = soconnectlock(sock, sa, 0);
254 if ((sock->so_state & SS_ISCONNECTING) &&
255 ((sock->so_state & SS_NBIO) != 0 || (flags & MSG_DONTWAIT) != 0)) {
260 if (sock->so_proto->pr_getlock != NULL)
261 mutex_held = (*sock->so_proto->pr_getlock)(sock, 0);
263 mutex_held = sock->so_proto->pr_domain->dom_mtx;
265 while ((sock->so_state & SS_ISCONNECTING) && sock->so_error == 0) {
266 error = msleep((caddr_t)&sock->so_timeo, mutex_held, PSOCK | PCATCH,
273 error = sock->so_error;
274 sock->so_error = 0;
278 sock->so_state &= ~SS_ISCONNECTING;
281 socket_unlock(sock, 1);
291 socket_t sock,
298 socket_lock(sock, 1);
301 if ((sock->so_state & SS_ISCONNECTING) == 0 || sock->so_error) {
302 if (sock->so_error) {
303 retval = sock->so_error;
304 sock->so_error = 0;
307 if ((sock->so_state & SS_ISCONNECTED) != 0)
329 if (sock->so_proto->pr_getlock != NULL)
330 mutex_held = (*sock->so_proto->pr_getlock)(sock, 0);
332 mutex_held = sock->so_proto->pr_domain->dom_mtx;
334 msleep((caddr_t)&sock->so_timeo, mutex_held, PSOCK, "sock_connectwait", &ts);
337 if ((sock->so_state & SS_ISCONNECTING) && sock->so_error == 0) {
342 if (sock->so_error) {
343 retval = sock->so_error;
344 sock->so_error = 0;
348 socket_unlock(sock, 1);
354 socket_t sock,
357 socket_lock(sock, 1);
360 sock->so_rcv.sb_flags |= SB_NOINTR; // This isn't safe
361 sock->so_snd.sb_flags |= SB_NOINTR; // This isn't safe
364 sock->so_rcv.sb_flags &= ~SB_NOINTR; // This isn't safe
365 sock->so_snd.sb_flags &= ~SB_NOINTR; // This isn't safe
368 socket_unlock(sock, 1);
374 sock_getpeername(socket_t sock, struct sockaddr *peername, int peernamelen)
379 if (sock == NULL || peername == NULL || peernamelen < 0)
382 socket_lock(sock, 1);
383 if (!(sock->so_state & (SS_ISCONNECTED|SS_ISCONFIRMING))) {
384 socket_unlock(sock, 1);
387 error = sogetaddr_locked(sock, &sa, 1);
388 socket_unlock(sock, 1);
399 sock_getsockname(socket_t sock, struct sockaddr *sockname, int socknamelen)
404 if (sock == NULL || sockname == NULL || socknamelen < 0)
407 socket_lock(sock, 1);
408 error = sogetaddr_locked(sock, &sa, 0);
409 socket_unlock(sock, 1);
441 sock_getaddr(socket_t sock, struct sockaddr **psa, int peer)
445 if (sock == NULL || psa == NULL)
448 socket_lock(sock, 1);
449 error = sogetaddr_locked(sock, psa, peer);
450 socket_unlock(sock, 1);
464 socket_t sock,
473 if (sock == NULL || optval == NULL || optlen == NULL) return EINVAL;
480 error = sogetopt(sock, &sopt); /* will lock socket */
487 socket_t sock,
491 return soioctl(sock, request, argp, kernproc); /* will lock socket */
496 socket_t sock,
504 if (sock == NULL || optval == NULL) return EINVAL;
511 return sosetopt(sock, &sopt); /* will lock socket */
537 socket_t sock,
545 if (sock == NULL || optval == NULL || optlen != sizeof(int)) return EINVAL;
547 socket_lock(sock, 1);
548 if (!(sock->so_state & SS_ISCONNECTED)) {
557 if (sock->so_proto == NULL || sock->so_proto->pr_domain == NULL || sock->so_pcb == NULL) {
575 socket_unlock(sock, 0);
576 error = sosetopt(sock, &sopt);
577 socket_lock(sock, 0);
588 if (!so_isdstlocal(sock)) {
597 switch (sock->so_proto->pr_domain->dom_family) {
611 socket_unlock(sock, 1);
612 return sosetopt(sock, &sopt);
614 socket_unlock(sock, 1);
620 socket_t sock,
627 if (sock == NULL || optval == NULL || optlen == NULL) return EINVAL;
634 socket_lock(sock, 1);
635 if (sock->so_proto == NULL || sock->so_proto->pr_domain == NULL) {
636 socket_unlock(sock, 1);
640 switch (sock->so_proto->pr_domain->dom_family) {
650 socket_unlock(sock, 1);
654 socket_unlock(sock, 1);
655 error = sogetopt(sock, &sopt); /* will lock socket */
662 socket_t sock,
665 if (sock == NULL) return EINVAL;
666 return solisten(sock, backlog); /* will lock socket */
671 socket_t sock,
684 if (sock == NULL) return EINVAL;
707 error = sock->so_proto->pr_usrreqs->pru_soreceive(sock, &fromsa, auio,
764 socket_t sock,
774 return sock_receive_internal(sock, msg, NULL, flags, recvdlen);
779 socket_t sock,
788 return sock_receive_internal(sock, msg, data, flags, recvlen);
793 socket_t sock,
805 if (sock == NULL) {
851 error = sock->so_proto->pr_usrreqs->pru_sosend(sock, msg != NULL ?
891 socket_t sock,
898 return sock_send_internal(sock, msg, NULL, flags, sentlen);
903 socket_t sock,
915 return sock_send_internal(sock, msg, data, flags, sentlen);
920 socket_t sock,
923 if (sock == NULL) return EINVAL;
924 return soshutdown(sock, how);
957 socket_t sock)
959 if (sock == NULL) return;
960 soclose(sock);
966 socket_t sock)
968 if (sock == NULL) return;
969 socket_lock(sock, 1);
970 sock->so_retaincnt++;
971 sock->so_usecount++; /* add extra reference for holding the socket */
972 socket_unlock(sock, 1);
977 sock_release(socket_t sock)
979 if (sock == NULL)
981 socket_lock(sock, 1);
983 if (sock->so_upcallusecount)
984 soclose_wait_locked(sock);
986 sock->so_retaincnt--;
987 if (sock->so_retaincnt < 0)
988 panic("sock_release: negative retain count for sock=%p "
989 "cnt=%x\n", sock, sock->so_retaincnt);
990 if ((sock->so_retaincnt == 0) && (sock->so_usecount == 2)) {
992 soclose_locked(sock);
995 sock->so_usecount--;
997 socket_unlock(sock, 1);
1002 socket_t sock,
1005 if (sock == NULL) return EINVAL;
1006 socket_lock(sock, 1);
1009 sock->so_state |= SS_PRIV;
1013 sock->so_state &= ~SS_PRIV;
1015 socket_unlock(sock, 1);
1021 socket_t sock)
1024 socket_lock(sock, 1);
1025 retval = (sock->so_state & SS_ISCONNECTED) != 0;
1026 socket_unlock(sock, 1);
1032 socket_t sock)
1035 socket_lock(sock, 1);
1036 retval = (sock->so_state & SS_NBIO) != 0;
1037 socket_unlock(sock, 1);
1043 socket_t sock,
1048 socket_lock(sock, 1);
1050 *outDomain = sock->so_proto->pr_domain->dom_family;
1052 *outType = sock->so_type;
1054 *outProtocol = sock->so_proto->pr_protocol;
1055 socket_unlock(sock, 1);
1068 sock_getlistener(socket_t sock)
1070 return (sock->so_head);
1074 sock_set_tcp_stream_priority(socket_t sock)
1076 if ((sock->so_proto->pr_domain->dom_family == AF_INET ||
1077 sock->so_proto->pr_domain->dom_family == AF_INET6) &&
1078 sock->so_proto->pr_type == SOCK_STREAM) {
1080 set_tcp_stream_priority(sock);
1089 socket_set_traffic_mgt_flags_locked(socket_t sock, u_int32_t flags)
1091 (void) OSBitOrAtomic(flags, &sock->so_traffic_mgt_flags);
1092 sock_set_tcp_stream_priority(sock);
1096 socket_set_traffic_mgt_flags(socket_t sock, u_int32_t flags)
1098 socket_lock(sock, 1);
1099 socket_set_traffic_mgt_flags_locked(sock, flags);
1100 socket_unlock(sock, 1);
1107 socket_clear_traffic_mgt_flags_locked(socket_t sock, u_int32_t flags)
1109 (void) OSBitAndAtomic(~flags, &sock->so_traffic_mgt_flags);
1110 sock_set_tcp_stream_priority(sock);
1114 socket_clear_traffic_mgt_flags(socket_t sock, u_int32_t flags)
1116 socket_lock(sock, 1);
1117 socket_clear_traffic_mgt_flags_locked(sock, flags);
1118 socket_unlock(sock, 1);
1155 sock_setupcall(socket_t sock, sock_upcall callback, void* context)
1157 if (sock == NULL)
1163 socket_lock(sock, 1);
1165 sock->so_upcall = (so_upcall) callback;
1166 sock->so_upcallarg = context;
1168 sock->so_rcv.sb_flags |= SB_UPCALL;
1170 sock->so_snd.sb_flags |= SB_UPCALL;
1173 sock->so_rcv.sb_flags &= ~SB_UPCALL;
1175 sock->so_snd.sb_flags &= ~SB_UPCALL;
1179 socket_unlock(sock, 1);