Please try this patch.  It gives multicast packets on a multicast
router similar treatment to those that IPSEC packets get, by calculating
the delayed checksum early and not permitting it to be offloaded to
the interface.

Thanks,
  Bill

Index: ip_output.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/ip_output.c,v
retrieving revision 1.143
diff -u -r1.143 ip_output.c
--- ip_output.c 1 Dec 2001 13:48:16 -0000       1.143
+++ ip_output.c 6 Dec 2001 20:40:24 -0000
@@ -353,6 +363,16 @@
                                 */
                                if (!rsvp_on)
                                  imo = NULL;
+                               /*
+                                * XXX
+                                * delayed checksums are not currently
+                                * compatible with IP multicast routing
+                                */
+                               if (m->m_pkthdr.csum_flags & CSUM_DELAY_DATA) {
+                                       in_delayed_cksum(m);
+                                       m->m_pkthdr.csum_flags &=
+                                               ~CSUM_DELAY_DATA;
+                               }
                                if (ip_mforward(ip, ifp, m, imo) != 0) {
                                        m_freem(m);
                                        goto done;

Reply via email to