Lines Matching refs:unp

183 		struct unpcb *unp = sotounpcb(so);
184 unp->unp_flags |= UNP_DONTDISCONNECT;
185 unp->rw_thrcount++;
191 unp->rw_thrcount--;
192 if (unp->rw_thrcount == 0) {
193 unp->unp_flags &= ~UNP_DONTDISCONNECT;
194 wakeup(unp);
202 struct unpcb *unp = sotounpcb(so);
204 if (unp == 0)
206 unp_drop(unp, ECONNABORTED);
207 unp_detach(unp);
215 struct unpcb *unp = sotounpcb(so);
217 if (unp == 0)
225 if (unp->unp_conn && unp->unp_conn->unp_addr) {
227 unp->unp_conn->unp_addr, 1);
242 struct unpcb *unp = sotounpcb(so);
244 if (unp != 0)
252 struct unpcb *unp = sotounpcb(so);
254 if (unp == 0)
257 return (unp_bind(unp, nam, p));
268 struct unpcb *unp = sotounpcb(so);
270 if (unp == 0)
284 struct unpcb *unp = sotounpcb(so1);
286 if (unp == 0)
297 struct unpcb *unp = sotounpcb(so);
299 if (unp == 0)
302 lck_mtx_assert(&unp->unp_mtx, LCK_MTX_ASSERT_OWNED);
303 unp_detach(unp);
310 struct unpcb *unp = sotounpcb(so);
312 if (unp == 0)
314 unp_disconnect(unp);
325 struct unpcb *unp = sotounpcb(so);
327 if (unp == 0 || unp->unp_vnode == 0)
329 return (unp_listen(unp, p));
335 struct unpcb *unp = sotounpcb(so);
337 if (unp == NULL)
339 if (unp->unp_conn != NULL && unp->unp_conn->unp_addr != NULL) {
341 unp->unp_conn->unp_addr, 1);
351 struct unpcb *unp = sotounpcb(so);
354 if (unp == 0)
364 if (unp->unp_conn == 0)
367 so2 = unp->unp_conn->unp_socket;
373 snd->sb_mbmax += unp->unp_mbcnt - rcv->sb_mbcnt;
374 unp->unp_mbcnt = rcv->sb_mbcnt;
375 snd->sb_hiwat += unp->unp_cc - rcv->sb_cc;
376 unp->unp_cc = rcv->sb_cc;
417 struct unpcb *unp = sotounpcb(so);
420 if (unp == 0) {
444 if (unp->unp_conn) {
452 if (unp->unp_conn == 0) {
458 so2 = unp->unp_conn->unp_socket;
462 if (unp->unp_addr)
463 from = (struct sockaddr *)unp->unp_addr;
487 unp_disconnect(unp);
515 if (unp->unp_conn == 0)
518 so2 = unp->unp_conn->unp_socket;
531 if (unp->unp_flags & UNP_TRACE_MDNS) {
553 snd->sb_mbmax -= rcv->sb_mbcnt - unp->unp_conn->unp_mbcnt;
554 unp->unp_conn->unp_mbcnt = rcv->sb_mbcnt;
555 snd->sb_hiwat -= rcv->sb_cc - unp->unp_conn->unp_cc;
556 unp->unp_conn->unp_cc = rcv->sb_cc;
582 unp_shutdown(unp);
602 struct unpcb *unp = sotounpcb(so);
606 if (unp == 0)
610 if (so->so_type == SOCK_STREAM && unp->unp_conn != 0) {
611 so2 = unp->unp_conn->unp_socket;
614 if (unp->unp_ino == 0)
615 unp->unp_ino = unp_ino++;
623 sb64->st_ino = (ino64_t)unp->unp_ino;
630 sb->st_ino = (ino_t)(uintptr_t)unp->unp_ino;
648 struct unpcb *unp = sotounpcb(so);
650 if (unp == 0)
653 unp_shutdown(unp);
664 struct unpcb *unp = sotounpcb(so);
666 if (unp == NULL)
668 if (unp->unp_addr != NULL) {
669 *nam = dup_sockaddr((struct sockaddr *)unp->unp_addr, 1);
687 struct unpcb *unp = sotounpcb(so);
694 if (unp->unp_flags & UNP_HAVEPC) {
695 error = sooptcopyout(sopt, &unp->unp_peercred,
696 sizeof (unp->unp_peercred));
705 if (unp->unp_conn != NULL) {
706 if (unp->unp_conn->unp_socket != NULL) {
707 pid_t peerpid = unp->unp_conn->unp_socket->last_pid;
771 struct unpcb *unp;
791 unp = (struct unpcb *)zalloc(unp_zone);
792 if (unp == NULL)
794 bzero(unp, sizeof (*unp));
796 lck_mtx_init(&unp->unp_mtx,
800 LIST_INIT(&unp->unp_refs);
801 unp->unp_socket = so;
802 unp->unp_gencnt = ++unp_gencnt;
805 &unp_dhead : &unp_shead, unp, unp_link);
807 so->so_pcb = (caddr_t)unp;
832 unp_detach(struct unpcb *unp)
837 LIST_REMOVE(unp, unp_link);
841 if (unp->unp_vnode) {
843 socket_unlock(unp->unp_socket, 0);
850 socket_lock(unp->unp_socket, 0);
851 if (unp->unp_vnode) {
852 tvp = unp->unp_vnode;
853 unp->unp_vnode->v_socket = NULL;
854 unp->unp_vnode = NULL;
860 if (unp->unp_conn)
861 unp_disconnect(unp);
862 while (unp->unp_refs.lh_first) {
871 socket_unlock(unp->unp_socket, 0);
883 if (unp->unp_refs.lh_first != NULL) {
884 unp2 = unp->unp_refs.lh_first;
901 socket_lock(unp->unp_socket, 0);
904 soisdisconnected(unp->unp_socket);
906 unp->unp_socket->so_flags |= SOF_PCBCLEARING;
922 struct unpcb *unp,
932 struct socket *so = unp->unp_socket;
939 if (unp->unp_vnode != NULL)
1006 vp->v_socket = unp->unp_socket;
1007 unp->unp_vnode = vp;
1008 unp->unp_addr = (struct sockaddr_un *)dup_sockaddr(nam, 1);
1037 struct unpcb *unp, *unp2, *unp3;
1047 unp = sotounpcb(so);
1197 memcpy(&unp->unp_peercred, &unp2->unp_peercred,
1198 sizeof (unp->unp_peercred));
1199 unp->unp_flags |= UNP_HAVEPC;
1224 unp->unp_flags |= UNP_TRACE_MDNS;
1250 lck_mtx_assert(&unp->unp_mtx, LCK_MTX_ASSERT_OWNED);
1263 struct unpcb *unp = sotounpcb(so);
1271 lck_mtx_assert(&unp->unp_mtx, LCK_MTX_ASSERT_OWNED);
1275 if (unp == 0 || unp2 == 0)
1278 unp->unp_conn = unp2;
1284 LIST_INSERT_HEAD(&unp2->unp_refs, unp, unp_reflink);
1303 if (!(unp->unp_flags & UNP_HAVEPC) &&
1305 cru2x(kauth_cred_get(), &unp->unp_peercred);
1306 unp->unp_flags |= UNP_HAVEPC;
1311 unp2->unp_conn = unp;
1334 lck_mtx_assert(&unp->unp_mtx, LCK_MTX_ASSERT_OWNED);
1340 unp_disconnect(struct unpcb *unp)
1347 so = unp->unp_socket;
1348 if (unp->unp_conn == NULL) {
1368 unp2 = unp->unp_conn;
1397 lck_mtx_assert(&unp->unp_mtx, LCK_MTX_ASSERT_OWNED);
1410 (void)msleep(waitso->so_pcb, &unp->unp_mtx,
1415 if (unp->unp_conn == NULL) {
1419 unp->unp_conn = NULL;
1422 if (unp->unp_flags & UNP_TRACE_MDNS)
1423 unp->unp_flags &= ~UNP_TRACE_MDNS;
1425 switch (unp->unp_socket->so_type) {
1428 LIST_REMOVE(unp, unp_reflink);
1429 unp->unp_socket->so_state &= ~SS_ISCONNECTED;
1442 unp->unp_socket->so_state &= ~(SS_ISCONNECTING|SS_ISCONNECTED|SS_ISDISCONNECTING);
1443 unp->unp_socket->so_state |= (SS_CANTRCVMORE|SS_CANTSENDMORE|SS_ISDISCONNECTED);
1446 unp->unp_socket->so_state |= (SS_CANTRCVMORE|SS_CANTSENDMORE|SS_ISDISCONNECTED);
1470 lck_mtx_assert(&unp->unp_mtx, LCK_MTX_ASSERT_OWNED);
1523 struct unpcb *unp, **unp_list;
1580 for (unp = head->lh_first, i = 0; unp && i < n;
1581 unp = unp->unp_link.le_next) {
1582 if (unp->unp_gencnt <= gencnt)
1583 unp_list[i++] = unp;
1589 unp = unp_list[i];
1590 if (unp->unp_gencnt <= gencnt) {
1596 VM_KERNEL_ADDRPERM(unp);
1601 if (unp->unp_addr)
1602 bcopy(unp->unp_addr, &xu.xu_addr,
1603 unp->unp_addr->sun_len);
1604 if (unp->unp_conn && unp->unp_conn->unp_addr)
1605 bcopy(unp->unp_conn->unp_addr,
1607 unp->unp_conn->unp_addr->sun_len);
1608 unpcb_to_compat(unp, &xu.xu_unp);
1609 sotoxsocket(unp->unp_socket, &xu.xu_socket);
1647 struct unpcb *unp, **unp_list;
1704 for (unp = head->lh_first, i = 0; unp && i < n;
1705 unp = unp->unp_link.le_next) {
1706 if (unp->unp_gencnt <= gencnt)
1707 unp_list[i++] = unp;
1713 unp = unp_list[i];
1714 if (unp->unp_gencnt <= gencnt) {
1720 xu.xu_unpp = (u_int64_t)VM_KERNEL_ADDRPERM(unp);
1722 VM_KERNEL_ADDRPERM(unp->unp_link.le_next);
1724 VM_KERNEL_ADDRPERM(unp->unp_link.le_prev);
1726 VM_KERNEL_ADDRPERM(unp->unp_socket);
1728 VM_KERNEL_ADDRPERM(unp->unp_vnode);
1729 xu.xunp_ino = unp->unp_ino;
1731 VM_KERNEL_ADDRPERM(unp->unp_conn);
1733 VM_KERNEL_ADDRPERM(unp->unp_refs.lh_first);
1735 VM_KERNEL_ADDRPERM(unp->unp_reflink.le_next);
1737 VM_KERNEL_ADDRPERM(unp->unp_reflink.le_prev);
1738 xu.xunp_cc = unp->unp_cc;
1739 xu.xunp_mbcnt = unp->unp_mbcnt;
1740 xu.xunp_gencnt = unp->unp_gencnt;
1742 if (unp->unp_socket)
1743 sotoxsocket64(unp->unp_socket, &xu.xu_socket);
1749 if (unp->unp_addr)
1750 bcopy(unp->unp_addr, &xu.xunp_addr,
1751 unp->unp_addr->sun_len);
1752 if (unp->unp_conn && unp->unp_conn->unp_addr)
1753 bcopy(unp->unp_conn->unp_addr,
1755 unp->unp_conn->unp_addr->sun_len);
1790 unp_shutdown(struct unpcb *unp)
1792 struct socket *so = unp->unp_socket;
1794 if (unp->unp_socket->so_type == SOCK_STREAM && unp->unp_conn) {
1795 so2 = unp->unp_conn->unp_socket;
1803 unp_drop(struct unpcb *unp, int errno)
1805 struct socket *so = unp->unp_socket;
1808 unp_disconnect(unp);
2228 unp_listen(struct unpcb *unp, proc_t p)
2231 cru2x(safecred, &unp->unp_peercred);
2233 unp->unp_flags |= UNP_HAVEPCCACHED;
2336 struct unpcb *unp = sotounpcb(so);
2359 if (unp->unp_addr)
2360 FREE(unp->unp_addr, M_SONAME);
2364 lck_mtx_destroy(&unp->unp_mtx, unp_mtx_grp);
2365 zfree(unp_zone, unp);
2378 struct unpcb *unp = (struct unpcb *)so->so_pcb;
2384 return(&unp->unp_mtx);