Sam Leffler 9967cafc49 Correct mbuf packet header propagation. Previously, packet headers
were sometimes propagated using M_COPY_PKTHDR which actually did
something between a "move" and a  "copy" operation.  This is replaced
by M_MOVE_PKTHDR (which copies the pkthdr contents and "removes" it
from the source mbuf) and m_dup_pkthdr which copies the packet
header contents including any m_tag chain.  This corrects numerous
problems whereby mbuf tags could be lost during packet manipulations.

These changes also introduce arguments to m_tag_copy and m_tag_copy_chain
to specify if the tag copy work should potentially block.  This
introduces an incompatibility with openbsd which we may want to revisit.

Note that move/dup of packet headers does not handle target mbufs
that have a cluster bound to them.  We may want to support this;
for now we watch for it with an assert.

Finally, M_COPYFLAGS was updated to include M_FIRSTFRAG|M_LASTFRAG.

Supported by:	Vernier Networks
Reviewed by:	Robert Watson <rwatson@FreeBSD.org>
2002-12-30 20:22:40 +00:00
..
2002-09-28 00:25:32 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-11-08 23:37:50 +00:00
2002-12-24 03:03:39 +00:00
2002-03-19 21:25:46 +00:00
2002-12-18 11:46:59 +00:00
2002-09-23 06:25:08 +00:00
2002-12-15 10:24:36 +00:00
2002-04-11 02:14:21 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2001-11-04 17:35:31 +00:00
2002-10-16 22:27:27 +00:00
2002-12-30 18:45:31 +00:00
2002-03-19 21:25:46 +00:00
2001-09-12 08:38:13 +00:00