Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/raw_ip.c
Show First 20 Lines • Show All 257 Lines • ▼ Show 20 Lines | if (!policyfail) { | ||||
so = last->inp_socket; | so = last->inp_socket; | ||||
if ((last->inp_flags & INP_CONTROLOPTS) || | if ((last->inp_flags & INP_CONTROLOPTS) || | ||||
(so->so_options & (SO_TIMESTAMP | SO_BINTIME))) | (so->so_options & (SO_TIMESTAMP | SO_BINTIME))) | ||||
ip_savecontrol(last, &opts, ip, n); | ip_savecontrol(last, &opts, ip, n); | ||||
SOCKBUF_LOCK(&so->so_rcv); | SOCKBUF_LOCK(&so->so_rcv); | ||||
if (sbappendaddr_locked(&so->so_rcv, | if (sbappendaddr_locked(&so->so_rcv, | ||||
(struct sockaddr *)ripsrc, n, opts) == 0) { | (struct sockaddr *)ripsrc, n, opts) == 0) { | ||||
/* should notify about lost packet */ | soroverflow_locked(so); | ||||
m_freem(n); | m_freem(n); | ||||
if (opts) | if (opts) | ||||
m_freem(opts); | m_freem(opts); | ||||
SOCKBUF_UNLOCK(&so->so_rcv); | |||||
} else | } else | ||||
sorwakeup_locked(so); | sorwakeup_locked(so); | ||||
} else | } else | ||||
m_freem(n); | m_freem(n); | ||||
return (policyfail); | return (policyfail); | ||||
} | } | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 931 Lines • Show Last 20 Lines |