diff options
author | glebius <glebius@FreeBSD.org> | 2014-09-04 09:07:14 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2014-09-04 09:07:14 +0000 |
commit | 9bd9cb7c21e8cf6c5c195b00f1a2b5b2ff20283d (patch) | |
tree | 7805738853bd6505da21376579f8496c43941b51 | |
parent | 420e85e546db714ae4f711b4a7affb378325545f (diff) | |
download | FreeBSD-src-9bd9cb7c21e8cf6c5c195b00f1a2b5b2ff20283d.zip FreeBSD-src-9bd9cb7c21e8cf6c5c195b00f1a2b5b2ff20283d.tar.gz |
Provide m_catpkt(), a wrapper around m_cat() that deals with M_PKTHDR mbufs.
Sponsored by: Netflix
Sponsored by: Nginx, Inc.
-rw-r--r-- | sys/kern/uipc_mbuf.c | 16 | ||||
-rw-r--r-- | sys/sys/mbuf.h | 1 |
2 files changed, 17 insertions, 0 deletions
diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c index d56af02..f3ea19f 100644 --- a/sys/kern/uipc_mbuf.c +++ b/sys/kern/uipc_mbuf.c @@ -990,6 +990,22 @@ m_cat(struct mbuf *m, struct mbuf *n) } } +/* + * Concatenate two pkthdr mbuf chains. + */ +void +m_catpkt(struct mbuf *m, struct mbuf *n) +{ + + M_ASSERTPKTHDR(m); + M_ASSERTPKTHDR(n); + + m->m_pkthdr.len += n->m_pkthdr.len; + m_demote(n, 1); + + m_cat(m, n); +} + void m_adj(struct mbuf *mp, int req_len) { diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h index abedc30..1a64eb0 100644 --- a/sys/sys/mbuf.h +++ b/sys/sys/mbuf.h @@ -915,6 +915,7 @@ int m_apply(struct mbuf *, int, int, int (*)(void *, void *, u_int), void *); int m_append(struct mbuf *, int, c_caddr_t); void m_cat(struct mbuf *, struct mbuf *); +void m_catpkt(struct mbuf *, struct mbuf *); int m_extadd(struct mbuf *, caddr_t, u_int, void (*)(struct mbuf *, void *, void *), void *, void *, int, int, int); |