Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 09 Mar 2007 02:13:21 +0300
From:      Roman Kurakin <rik@inse.ru>
To:        Andrew Thompson <thompsa@freebsd.org>
Cc:        rik@FreeBSD.org, freebsd-net@freebsd.org, glebius@FreeBSD.org, andre@FreeBSD.org, bms@FreeBSD.org
Subject:   Re: kern/109815: wrong interface identifier at pfil_hooks for vlans +	if_bridge
Message-ID:  <45F09891.2020505@inse.ru>
In-Reply-To: <20070307210254.GD54828@heff.fud.org.nz>
References:  <E1HNbWw-000LoF-Bo@pobox.codelabs.ru> <45E9F1E8.2000802@inse.ru>	<20070304062203.GL80319@codelabs.ru>	<E1HNbWw-000LoF-Bo@pobox.codelabs.ru>	<45E9F1E8.2000802@inse.ru> <20070304160613.GN80319@codelabs.ru>	<45EDA348.3030309@inse.ru> <20070307210254.GD54828@heff.fud.org.nz>

next in thread | previous in thread | raw e-mail | index | archive | help
Andrew Thompson wrote:
> On Tue, Mar 06, 2007 at 08:22:16PM +0300, Roman Kurakin wrote:
>   
>> Ok, since no one want to provide an explanation I'll to do it myself.
>>     
> ...
>   
>> I suggest to fix this problem in the other way, by checking if the 
>> physical interface
>> is the dst interface by MAC. Eq if we got packet from Ci, it will be 
>> market as received
>> from Ci, not from Cj. Yes it will add double checking for this interface 
>> it is not the
>> dst with some probability, but will optimize the case the dst is the 
>> current one cause
>> we will not check the list. This will keep the old behaviour eq case 1 
>> and will do the
>> same trick for cases like VLANs. Here my variant of the patch:
>>     
>
> I think this is probably the best way to do it. I have only been loosely
> following this thread due to other stuff going on.
>
>   
>> +        /* Give a chance for ifp at first priority. This will help in case 
>> we
>> +         * the packet comes through the interface with VLAN's and the same
>> +         * MACs on several interfaces in a bridge. Also will save some 
>> circles
>> +         * in case dst interface is the physical input interface (eq ifp).
>> +         */
>> +        if (ifp->if_type == IFT_GIF
>>     
>                ^^^^^^^^^^^^^^^^^^^^^^^
> 	       is this check right?
>
>   
It was taken from original code. In the rest part of course there is no 
bif2, but ifp.
I'll plane to make a macro as suggested by Eygene. This code  shouldn't 
be in a
separate function for sure.  So code will look like
#define somemacro
....
somemacro(ifp)
LIST_FOREACH()
    somemacro(bif2->bif_ifp)

rik




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45F09891.2020505>