On 03/20/15 16:18, Karim Fodil-Lemelin wrote:
Hi,

While reading through a previous comment on this list about fragments
I've noticed that mbuf tags aren't being copied from the leading
fragment (header) to the subsequent fragment packets. In other words,
one would expect that all fragments of a packet are carrying the same
tags that were set on the original packet. I have built a simple test
were I use ipfw with ALTQ and sent large packet (bigger then MTU) off
that BSD machine. I have observed that the leading fragment (m0) packet
is going through the right class although the next fragments are hitting
the default class for unclassified packets.

Here is a patch that makes things works as expected (all fragments carry
the ALTQ tag):

diff --git a/freebsd/sys/netinet/ip_output.c
b/freebsd/sys/netinet/ip_output.c
index d650949..7d8f041 100644
--- a/freebsd/sys/netinet/ip_output.c
+++ b/freebsd/sys/netinet/ip_output.c
@@ -1184,7 +1184,10 @@ smart_frag_failure:
                         ipstat.ips_odropped++;
                         goto done;
                 }
-               m->m_flags |= (m0->m_flags & M_MCAST) | M_FRAG;
+
+               m->m_flags |= (m0->m_flags & M_COPYFLAGS) | M_FRAG;
+               m_tag_copy_chain(m, m0, M_NOWAIT);
+
                 /*
                  * In the first mbuf, leave room for the link header, then
                  * copy the original IP header including options. The
payload
diff --git a/freebsd/sys/sys/mbuf.h b/freebsd/sys/sys/mbuf.h
index 2efff38..6ad8439 100644
--- a/freebsd/sys/sys/mbuf.h


Hi,

I see your point about copying the tags. I'm not sure however that M_COPYFLAGS is correct, because it also copies M_RDONLY, which is not relevant for this case. Can you explain what flags need copying in addition to M_MCAST ? Maybe we need to define these flags separately.

Thank you!

--HPS

_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to