Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/icmp6.c
Show First 20 Lines • Show All 1,968 Lines • ▼ Show 20 Lines | if (last != NULL) { | ||||
ip6_savecontrol(last, n, &opts); | ip6_savecontrol(last, n, &opts); | ||||
/* strip intermediate headers */ | /* strip intermediate headers */ | ||||
m_adj(n, off); | m_adj(n, off); | ||||
SOCKBUF_LOCK(&last->inp_socket->so_rcv); | SOCKBUF_LOCK(&last->inp_socket->so_rcv); | ||||
if (sbappendaddr_locked( | if (sbappendaddr_locked( | ||||
&last->inp_socket->so_rcv, | &last->inp_socket->so_rcv, | ||||
(struct sockaddr *)&fromsa, n, opts) | (struct sockaddr *)&fromsa, n, opts) | ||||
== 0) { | == 0) { | ||||
/* should notify about lost packet */ | soroverflow_locked(last->inp_socket); | ||||
m_freem(n); | m_freem(n); | ||||
if (opts) { | if (opts) { | ||||
m_freem(opts); | m_freem(opts); | ||||
} | } | ||||
SOCKBUF_UNLOCK( | |||||
&last->inp_socket->so_rcv); | |||||
} else | } else | ||||
sorwakeup_locked(last->inp_socket); | sorwakeup_locked(last->inp_socket); | ||||
opts = NULL; | opts = NULL; | ||||
} | } | ||||
INP_RUNLOCK(last); | INP_RUNLOCK(last); | ||||
} | } | ||||
last = inp; | last = inp; | ||||
} | } | ||||
Show All 23 Lines | if ((m->m_flags & M_EXT) && m->m_next == NULL && | ||||
} | } | ||||
} | } | ||||
SOCKBUF_LOCK(&last->inp_socket->so_rcv); | SOCKBUF_LOCK(&last->inp_socket->so_rcv); | ||||
if (sbappendaddr_locked(&last->inp_socket->so_rcv, | if (sbappendaddr_locked(&last->inp_socket->so_rcv, | ||||
(struct sockaddr *)&fromsa, m, opts) == 0) { | (struct sockaddr *)&fromsa, m, opts) == 0) { | ||||
m_freem(m); | m_freem(m); | ||||
if (opts) | if (opts) | ||||
m_freem(opts); | m_freem(opts); | ||||
SOCKBUF_UNLOCK(&last->inp_socket->so_rcv); | soroverflow_locked(last->inp_socket); | ||||
} else | } else | ||||
sorwakeup_locked(last->inp_socket); | sorwakeup_locked(last->inp_socket); | ||||
INP_RUNLOCK(last); | INP_RUNLOCK(last); | ||||
} else { | } else { | ||||
m_freem(m); | m_freem(m); | ||||
IP6STAT_DEC(ip6s_delivered); | IP6STAT_DEC(ip6s_delivered); | ||||
} | } | ||||
*mp = NULL; | *mp = NULL; | ||||
▲ Show 20 Lines • Show All 773 Lines • Show Last 20 Lines |