- struct mbuf *m;
- struct mbuf **mp;
-
- if (m0 == 0)
- return (0);
-
- SBLASTRECORDCHK(sb, "sbinsertoob 1");
-
- if ((sb->sb_flags & SB_RECV && !(m0->m_flags & M_SKIPCFIL)) != 0) {
- int error = sflt_data_in(sb->sb_so, NULL, &m0, NULL,
- sock_data_filt_flag_oob);
-
- SBLASTRECORDCHK(sb, "sbinsertoob 2");
-
-#if CONTENT_FILTER
- if (error == 0)
- error = cfil_sock_data_in(sb->sb_so, NULL, m0, NULL, 0);
-#endif /* CONTENT_FILTER */
-
- if (error) {
- if (error != EJUSTRETURN) {
- m_freem(m0);
- }
- return (0);
- }
- } else if (m0) {
- m0->m_flags &= ~M_SKIPCFIL;
- }
-
- for (mp = &sb->sb_mb; *mp; mp = &((*mp)->m_nextpkt)) {
- m = *mp;
-again:
- switch (m->m_type) {
-
- case MT_OOBDATA:
- continue; /* WANT next train */