- int s;
- register struct ifqueue *ifq;
- struct mbuf *m;
-
- /*
- * Place interface pointer before the data
- * for the receiving protocol.
- */
- if (m0->m_off <= MMAXOFF &&
- m0->m_off >= MMINOFF + sizeof(struct ifnet *)) {
- m0->m_off -= sizeof(struct ifnet *);
- m0->m_len += sizeof(struct ifnet *);
- } else {
- MGET(m, M_DONTWAIT, MT_HEADER);
- if (m == (struct mbuf *)0)
- return (ENOBUFS);
- m->m_off = MMINOFF;
- m->m_len = sizeof(struct ifnet *);
- m->m_next = m0;
- m0 = m;
+ int s, isr;
+ register struct ifqueue *ifq = 0;
+
+ if ((m->m_flags & M_PKTHDR) == 0)
+ panic("looutput no HDR");
+ m->m_pkthdr.rcvif = ifp;
+
+ if (rt && rt->rt_flags & RTF_REJECT) {
+ m_freem(m);
+ return (rt->rt_flags & RTF_HOST ? EHOSTUNREACH : ENETUNREACH);