changes sufficient for tuba & idrp; may want to rethink this
authorKeith Sklower <sklower@ucbvax.Berkeley.EDU>
Thu, 26 Nov 1992 12:07:29 +0000 (04:07 -0800)
committerKeith Sklower <sklower@ucbvax.Berkeley.EDU>
Thu, 26 Nov 1992 12:07:29 +0000 (04:07 -0800)
SCCS-vsn: sys/netiso/tp_iso.c 7.15

usr/src/sys/netiso/tp_iso.c

index 1ec7e3d..b53d974 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)tp_iso.c    7.14 (Berkeley) %G%
+ *     @(#)tp_iso.c    7.15 (Berkeley) %G%
  */
 
 /***********************************************************
  */
 
 /***********************************************************
@@ -439,7 +439,6 @@ tpclnp_input(m, src, dst, clnp_len, ce_bit)
        struct sockaddr_iso *src, *dst;
        int clnp_len, ce_bit;
 {
        struct sockaddr_iso *src, *dst;
        int clnp_len, ce_bit;
 {
-       int s = splnet();
        struct mbuf *tp_inputprep();
        int tp_input(), cltp_input(), (*input)() = tp_input;
 
        struct mbuf *tp_inputprep();
        int tp_input(), cltp_input(), (*input)() = tp_input;
 
@@ -455,10 +454,21 @@ tpclnp_input(m, src, dst, clnp_len, ce_bit)
         * 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;
@@ -494,7 +504,6 @@ tpclnp_input(m, src, dst, clnp_len, ce_bit)
                }
        ENDDEBUG
 
                }
        ENDDEBUG
 
-       splx(s);
        return 0;
 }
 
        return 0;
 }