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-03-25 13:52:45 +00:00
2002-12-29 20:26:41 +00:00
2002-12-14 02:07:32 +00:00
2002-12-24 09:44:51 +00:00
2002-12-28 23:22:22 +00:00
2002-12-14 01:56:26 +00:00
2002-12-14 01:56:26 +00:00
2002-10-11 10:36:22 +00:00
2002-09-05 11:42:03 +00:00
2002-12-22 05:35:03 +00:00
2002-06-29 02:00:02 +00:00
2002-03-19 21:25:46 +00:00
2002-11-30 00:49:43 +00:00
2002-03-19 21:25:46 +00:00
2002-12-17 19:31:26 +00:00
2002-10-01 13:15:11 +00:00
2002-10-02 09:09:25 +00:00
2002-12-14 01:56:26 +00:00
2002-12-24 09:44:51 +00:00
2002-12-29 20:26:41 +00:00
2002-08-15 02:10:12 +00:00
2002-12-17 19:30:50 +00:00
2002-03-19 21:25:46 +00:00
2002-12-24 03:03:39 +00:00