SCCS-vsn: sys/netiso/tp_iso.c 7.15
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)tp_iso.c 7.14 (Berkeley) %G%
+ * @(#)tp_iso.c 7.15 (Berkeley) %G%
*/
/***********************************************************
*/
/***********************************************************
struct sockaddr_iso *src, *dst;
int clnp_len, ce_bit;
{
struct sockaddr_iso *src, *dst;
int clnp_len, ce_bit;
{
struct mbuf *tp_inputprep();
int tp_input(), cltp_input(), (*input)() = tp_input;
struct mbuf *tp_inputprep();
int tp_input(), cltp_input(), (*input)() = tp_input;
* First, strip off the Clnp header. leave the mbuf there for the
* pullup that follows.
*/
* First, strip off the Clnp header. leave the mbuf there for the
* pullup that follows.
*/
m->m_len -= clnp_len;
m->m_data += clnp_len;
m->m_len -= clnp_len;
m->m_data += clnp_len;
+ m->m_pkthdr.len -= clnp_len;
+ /* XXXX: should probably be in clnp_input */
+ switch (dst->siso_data[dst->siso_nlen - 1]) {
+#ifdef TUBA
+ case ISOPROTO_TCP:
+ return (tuba_tcpinput(m, src, dst));
+#endif
+ case 0:
+ if (m->m_len == 0 && (m = m_pullup(m, 1)) == 0)
+ return 0;
+ if (*(mtod(m, u_char *)) == ISO10747_IDRP)
+ return (idrp_input(m, src, dst));
+ }
m = tp_inputprep(m);
if (m == 0)
return 0;
m = tp_inputprep(m);
if (m == 0)
return 0;