Hello,

On Fri, 20 Jun 2003, 11:39-0300, Han Hwei Woo wrote:

> Here's the network I'm trying to setup
>
>             192.168.0.3                            192.168.0.1    192.168.0.2
> OpenBSD | vlan0----><--- vlan0 | FreeBSD | em0 ---><--- em0 | Windows 2000
>
> with net.link.ether.bridge_cfg: vlan0,em0
>
> If I try to ping the FreeBSD machine from OpenBSD, arp requests are
> sent out, and they are seen on both of the FreeBSD machine's
> interfaces. However, no arp response is generated.
>
> So, I enter in the arp entries myself.
>
> Once I do that, when I again try to ping the FreeBSD host from
> OpenBSD, the ping requests are seen on both the FreeBSD interfaces.
> However, no response is generated.
>
> If I instead try to ping the OpenBSD machine from FreeBSD, the ping
> requests get to the OpenBSD machine, and the OpenBSD replies, and
> both the FreeBSD interfaces receive the reply, according to tcpdump.
> However, the ping program does not receive them.
>
>
> I also tried this setup:
>
>             192.168.0.3                            192.168.0.1    192.168.0.2
> OpenBSD | vlan0----><--- vlan0 | FreeBSD | vlan1 ---><--- vlan0 | Windows 2000
>
> with net.link.ether.bridge_cfg: vlan0,vlan1
>
> And the same problem occurs. I have also tried with different
> network cards as the parent interface of vlan0 on FreeBSD
> (fxp0,dc0).

1) Please try a hack below;
2) Don't use bridge.ko, it is semi-broken, compile the bridging code
in kernel instead (options BRIDGE);
3) sysctl net.inet.ip.check_interface=0 is mandatory in some
topologies.

Index: if_ethersubr.c
===================================================================
RCS file: /home/ncvs/src/sys/net/if_ethersubr.c,v
retrieving revision 1.147
diff -u -r1.147 if_ethersubr.c
--- if_ethersubr.c      5 May 2003 09:15:50 -0000       1.147
+++ if_ethersubr.c      20 May 2003 15:06:50 -0000
@@ -625,6 +625,7 @@
        if (rule)       /* packet was already bridged */
                goto post_stats;

+#if 0
        if (!(BDG_ACTIVE(ifp))) {
                /*
                 * Discard packet if upper layers shouldn't see it because it
@@ -641,6 +642,7 @@
                            return;
                }
        }
+#endif

        /* Discard packet if interface is not up */
        if ((ifp->if_flags & IFF_UP) == 0) {
%%%

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

Reply via email to