diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 2002-09-18 14:57:35 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2002-09-18 14:57:35 +0000 |
| commit | ac6e585d247f5d7ac87a7565b7909fb8c107cb66 (patch) | |
| tree | 6554eb6212d68a578eb2ea05571f8ad35acf0c90 /sys/kern | |
| parent | 9f86067a9ca13c4e46545f86a663230171d3a719 (diff) | |
Notes
Diffstat (limited to 'sys/kern')
| -rw-r--r-- | sys/kern/uipc_mbuf.c | 25 |
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); } |
