On Thu, May 20, 2004 at 09:00:52PM +0800, Eugene Grosbein wrote: [...] > 3. Now we enter ip_output() keeping imo as one of arguments. > There we run the following code: > > else if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr)) && > imo != NULL && imo->imo_multicast_ifp != NULL) { > /* > * Bypass the normal routing lookup for multicast > * packets if the interface is specified. > */ > ifp = imo->imo_multicast_ifp; > IFP_TO_IA(ifp, ia); > isbroadcast = 0; /* fool gcc */ > } > > It's allright still. > > 4. When ipfw diverts our packet, we call > > /* Deliver packet to divert input routine */ > divert_packet(m, 0, off & 0xffff, args.divert_rule); > > Ops, imo is not passed by! So our imo->imo_multicast_ifp is lost > and diverted packet will not be sent through it but routing lookup > will be performed. > > Should I fill the PR? > You're rather supposed to submit a working patch. ;)
Cheers, -- Ruslan Ermilov [EMAIL PROTECTED] FreeBSD committer
pgpSLIlOjR8au.pgp
Description: PGP signature