kern/109815: wrong interface identifier at pfil_hooks for vlans
+ if_bridge
Roman Kurakin
rik at inse.ru
Thu Mar 8 23:09:58 UTC 2007
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
More information about the freebsd-net
mailing list