Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/send.c
Show First 20 Lines • Show All 285 Lines • ▼ Show 20 Lines | send_input(struct mbuf *m, struct ifnet *ifp, int direction, int msglen __unused) | ||||
/* | /* | ||||
* Send incoming or outgoing traffic to user space either to be | * Send incoming or outgoing traffic to user space either to be | ||||
* protected (outgoing) or validated (incoming) according to rfc3971. | * protected (outgoing) or validated (incoming) according to rfc3971. | ||||
*/ | */ | ||||
SOCKBUF_LOCK(&V_send_so->so_rcv); | SOCKBUF_LOCK(&V_send_so->so_rcv); | ||||
if (sbappendaddr_locked(&V_send_so->so_rcv, | if (sbappendaddr_locked(&V_send_so->so_rcv, | ||||
(struct sockaddr *)&sendsrc, m, NULL) == 0) { | (struct sockaddr *)&sendsrc, m, NULL) == 0) { | ||||
SOCKBUF_UNLOCK(&V_send_so->so_rcv); | soroverflow_locked(V_send_so); | ||||
/* XXX stats. */ | /* XXX stats. */ | ||||
m_freem(m); | m_freem(m); | ||||
} else { | } else { | ||||
sorwakeup_locked(V_send_so); | sorwakeup_locked(V_send_so); | ||||
} | } | ||||
SEND_UNLOCK(); | SEND_UNLOCK(); | ||||
return (0); | return (0); | ||||
▲ Show 20 Lines • Show All 74 Lines • Show Last 20 Lines |