Lines Matching defs:so

168 #define	sotortpcb(so)	((struct rtpcb *)(so)->so_pcb)
218 route_attach(struct socket *so, int proto, int wait)
223 error = soreserve(so, ROUTESNDQ, ROUTERCVQ);
235 so->so_pcb = rop;
237 timeout_set_flags(&rop->rop_timeout, rtm_senddesync_timer, so,
241 rop->rop_socket = so;
246 soisconnected(so);
247 so->so_options |= SO_USELOOPBACK;
259 route_detach(struct socket *so)
263 soassertlocked(so);
265 rop = sotortpcb(so);
276 sounlock(so);
282 solock(so);
284 so->so_pcb = NULL;
285 KASSERT((so->so_state & SS_NOFDREF) == 0);
292 route_disconnect(struct socket *so)
294 soisdisconnected(so);
299 route_shutdown(struct socket *so)
301 socantsendmore(so);
306 route_rcvd(struct socket *so)
308 struct rtpcb *rop = sotortpcb(so);
310 soassertlocked(so);
314 * empty so that we can clear the flag.
317 mtx_enter(&so->so_rcv.sb_mtx);
319 ((sbspace_locked(so, &so->so_rcv) == so->so_rcv.sb_hiwat)))
321 mtx_leave(&so->so_rcv.sb_mtx);
325 route_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
330 soassertlocked(so);
342 error = route_output(m, so);
353 route_sockaddr(struct socket *so, struct mbuf *nam)
359 route_peeraddr(struct socket *so, struct mbuf *nam)
368 route_ctloutput(int op, struct socket *so, int level, int optname,
371 struct rtpcb *rop = sotortpcb(so);
449 struct socket *so = xso;
451 solock(so);
452 rtm_senddesync(so);
453 sounlock(so);
457 rtm_senddesync(struct socket *so)
459 struct rtpcb *rop = sotortpcb(so);
462 soassertlocked(so);
469 if ((so->so_state & SS_ISCONNECTED) == 0 ||
470 (so->so_rcv.sb_state & SS_CANTRCVMORE))
485 mtx_enter(&so->so_rcv.sb_mtx);
486 ret = sbappendaddr(so, &so->so_rcv, &route_src,
488 mtx_leave(&so->so_rcv.sb_mtx);
504 struct socket *so;
527 so = rop->rop_socket;
528 solock(so);
534 if ((so0 == so && !(so0->so_options & SO_USELOOPBACK)) ||
535 !(so->so_state & SS_ISCONNECTED) ||
536 (so->so_rcv.sb_state & SS_CANTRCVMORE))
577 * Check to see if the flush flag is set. If so, don't queue
583 rtm_sendup(so, m);
585 sounlock(so);
593 rtm_sendup(struct socket *so, struct mbuf *m0)
595 struct rtpcb *rop = sotortpcb(so);
599 soassertlocked(so);
605 mtx_enter(&so->so_rcv.sb_mtx);
606 if (sbspace_locked(so, &so->so_rcv) < (2 * MSIZE) ||
607 sbappendaddr(so, &so->so_rcv, &route_src, m, NULL) == 0)
609 mtx_leave(&so->so_rcv.sb_mtx);
614 rtm_senddesync(so);
619 sorwakeup(so);
696 route_output(struct mbuf *m, struct socket *so)
713 useloopback = so->so_options & SO_USELOOPBACK;
720 sounlock(so);
913 route_input(m, so, info.rti_info[RTAX_DST] ?
915 solock(so);
921 solock(so);
1384 /* No conflict but an entry exist so we need to force mpath. */