add internet-common options in pcb, add ip header prototype for ttl and tos;
[unix-history] / usr / src / sys / kern / uipc_mbuf.c
index 145ffaf..c4ea35b 100644 (file)
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)uipc_mbuf.c 7.11 (Berkeley) %G%
+ *     @(#)uipc_mbuf.c 7.15 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
-#include "dir.h"
 #include "user.h"
 #include "proc.h"
 #include "cmap.h"
 #include "user.h"
 #include "proc.h"
 #include "cmap.h"
@@ -37,7 +36,7 @@ mbinit()
        int s;
 
 #if MCLBYTES < 4096
        int s;
 
 #if MCLBYTES < 4096
-#define NCL_INIT       (4096/MCLBYTES)
+#define NCL_INIT       (4096/CLBYTES)
 #else
 #define NCL_INIT       1
 #endif
 #else
 #define NCL_INIT       1
 #endif
@@ -230,12 +229,13 @@ m_prepend(m, len, how)
        return (m);
 }
 
        return (m);
 }
 
-/*
 /*
  * Make a copy of an mbuf chain starting "off0" bytes from the beginning,
  * continuing for "len" bytes.  If len is M_COPYALL, copy to end of mbuf.
  * The wait parameter is a choice of M_WAIT/M_DONTWAIT from caller.
  */
 /*
  * Make a copy of an mbuf chain starting "off0" bytes from the beginning,
  * continuing for "len" bytes.  If len is M_COPYALL, copy to end of mbuf.
  * The wait parameter is a choice of M_WAIT/M_DONTWAIT from caller.
  */
+int MCFail;
+
 struct mbuf *
 m_copym(m, off0, len, wait)
        register struct mbuf *m;
 struct mbuf *
 m_copym(m, off0, len, wait)
        register struct mbuf *m;
@@ -294,9 +294,12 @@ m_copym(m, off0, len, wait)
                m = m->m_next;
                np = &n->m_next;
        }
                m = m->m_next;
                np = &n->m_next;
        }
+       if (top == 0)
+               MCFail++;
        return (top);
 nospace:
        m_freem(top);
        return (top);
 nospace:
        m_freem(top);
+       MCFail++;
        return (0);
 }
 
        return (0);
 }
 
@@ -404,6 +407,8 @@ m_adj(mp, req_len)
                }
                if (m->m_len >= len) {
                        m->m_len -= len;
                }
                if (m->m_len >= len) {
                        m->m_len -= len;
+                       if ((mp = m)->m_flags & M_PKTHDR)
+                               m->m_pkthdr.len -= len;
                        return;
                }
                count -= len;
                        return;
                }
                count -= len;
@@ -437,6 +442,8 @@ m_adj(mp, req_len)
  * If there is room, it will add up to max_protohdr-len extra bytes to the
  * contiguous region in an attempt to avoid being called next time.
  */
  * If there is room, it will add up to max_protohdr-len extra bytes to the
  * contiguous region in an attempt to avoid being called next time.
  */
+int MPFail;
+
 struct mbuf *
 m_pullup(n, len)
        register struct mbuf *n;
 struct mbuf *
 m_pullup(n, len)
        register struct mbuf *n;
@@ -490,5 +497,6 @@ m_pullup(n, len)
        return (m);
 bad:
        m_freem(n);
        return (m);
 bad:
        m_freem(n);
+       MPFail++;
        return (0);
 }
        return (0);
 }