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

Attachment: pgpSLIlOjR8au.pgp
Description: PGP signature

Reply via email to