From owner-freebsd-net@FreeBSD.ORG Fri Jan 21 22:49:19 2005 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A041416A4E1 for ; Fri, 21 Jan 2005 22:49:19 +0000 (GMT) Received: from mail.ambrisko.com (mail.ambrisko.com [64.174.51.43]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5591E43D1D for ; Fri, 21 Jan 2005 22:49:19 +0000 (GMT) (envelope-from ambrisko@ambrisko.com) Received: from server2.ambrisko.com (HELO www.ambrisko.com) (192.168.1.2) by mail.ambrisko.com with ESMTP; 21 Jan 2005 14:49:20 -0800 Received: from ambrisko.com (localhost [127.0.0.1]) by www.ambrisko.com (8.12.11/8.12.9) with ESMTP id j0LMnIjL020455 for ; Fri, 21 Jan 2005 14:49:18 -0800 (PST) (envelope-from ambrisko@ambrisko.com) Received: (from ambrisko@localhost) by ambrisko.com (8.12.11/8.12.11/Submit) id j0LMnIVn020454 for freebsd-net@freebsd.org; Fri, 21 Jan 2005 14:49:18 -0800 (PST) (envelope-from ambrisko) From: Doug Ambrisko Message-Id: <200501212249.j0LMnIVn020454@ambrisko.com> To: freebsd-net@freebsd.org Date: Fri, 21 Jan 2005 14:49:18 -0800 (PST) X-Mailer: ELM [version 2.4ME+ PL94b (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Subject: vlan & bridging broken since if_vlan directly calls the driver X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Jan 2005 22:49:19 -0000 I found a bug with vlan, netgraph, ipfw and ipfw bridging. The vlan driver directly calls the HW driver it is associated with on out packets. If you have a bridge setup it will only send out on the NIC that the vlan is attached to. It should go out to the bridge and each NIC. Input works okay. What I'd like to do is move the netgraph out shim from if_ethersubr.c:ether_output /* Handle ng_ether(4) processing, if any */ if (ng_ether_output_p != NULL) { if ((error = (*ng_ether_output_p)(ifp, &m)) != 0) { bad: if (m != NULL) m_freem(m); return (error); } if (m == NULL) return (0); } to ether_output_frame then in if_vlan.c:vlan_start change IFQ_HANDOFF(p, m, error); to ether_output_frame(p, m); This should make it work correctly and unify the ipfw/netgraph hooks. Let me know what you think and then I'll do it. Thanks, Doug A.