SCCS-vsn: sys/netns/spp_usrreq.c 6.6
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)spp_usrreq.c 6.5 (Berkeley) %G%
+ * @(#)spp_usrreq.c 6.6 (Berkeley) %G%
extern int sppconsdebug;
int spp_hardnosed;
extern int sppconsdebug;
int spp_hardnosed;
register struct nspcb *nsp;
register struct nspcb *nsp;
register struct sppcb *cb;
register struct spidp *si = mtod(m, struct spidp *);
register struct socket *so;
register struct sppcb *cb;
register struct spidp *si = mtod(m, struct spidp *);
register struct socket *so;
- /*
- * Locate pcb for datagram.
- */
- nsp = ns_pcblookup(&si->si_sna, si->si_dna.x_port, NS_WILDCARD);
- ns_error(m, NS_ERR_NOSOCK, 0);
+ panic("No nspcb in spp_input\n");
return;
}
cb = nstosppcb(nsp);
if (cb == 0) goto bad;
return;
}
cb = nstosppcb(nsp);
if (cb == 0) goto bad;
+ if (m->m_len < sizeof(*si)) {
+ if ((m = m_pullup(m, sizeof(*si)))==0) {
+ spp_istat.hdrops++;
+ return;
+ }
+ si = mtod(m, struct spidp *);
+ }
si->si_seq = ntohs(si->si_seq);
si->si_ack = ntohs(si->si_ack);
si->si_alo = ntohs(si->si_alo);
si->si_seq = ntohs(si->si_seq);
si->si_ack = ntohs(si->si_ack);
si->si_alo = ntohs(si->si_alo);