aboutsummaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2002-09-18 14:57:35 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2002-09-18 14:57:35 +0000
commitac6e585d247f5d7ac87a7565b7909fb8c107cb66 (patch)
tree6554eb6212d68a578eb2ea05571f8ad35acf0c90 /sys/kern
parent9f86067a9ca13c4e46545f86a663230171d3a719 (diff)
Notes
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/uipc_mbuf.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c
index 6d66245c5bce..009b812b0bcf 100644
--- a/sys/kern/uipc_mbuf.c
+++ b/sys/kern/uipc_mbuf.c
@@ -714,13 +714,26 @@ m_print(const struct mbuf *m)
int
m_fixhdr(struct mbuf *m0)
{
- struct mbuf *m = m0;
- int len = 0;
+ int len;
- while (m) {
+ len = m_length(m0, NULL);
+ m0->m_pkthdr.len = len;
+ return (len);
+}
+
+int
+m_length(struct mbuf *m0, struct mbuf **last)
+{
+ struct mbuf *m;
+ int len;
+
+ len = 0;
+ for (m = m0; m != NULL; m = m->m_next) {
len += m->m_len;
- m = m->m_next;
+ if (m->m_next == NULL)
+ break;
}
- m0->m_pkthdr.len = len;
- return len;
+ if (last != NULL)
+ *last = m;
+ return (len);
}