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

_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to