From owner-p4-projects@FreeBSD.ORG Tue Jun 10 18:09:38 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2A2ED106567D; Tue, 10 Jun 2008 18:09:38 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E011F1065671 for ; Tue, 10 Jun 2008 18:09:37 +0000 (UTC) (envelope-from gk@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id D1CBD8FC18 for ; Tue, 10 Jun 2008 18:09:37 +0000 (UTC) (envelope-from gk@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m5AI9bRf024101 for ; Tue, 10 Jun 2008 18:09:37 GMT (envelope-from gk@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m5AI9bul024099 for perforce@freebsd.org; Tue, 10 Jun 2008 18:09:37 GMT (envelope-from gk@FreeBSD.org) Date: Tue, 10 Jun 2008 18:09:37 GMT Message-Id: <200806101809.m5AI9bul024099@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gk@FreeBSD.org using -f From: Gleb Kurtsou To: Perforce Change Reviews Cc: Subject: PERFORCE change 143249 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jun 2008 18:09:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=143249 Change 143249 by gk@gk_h1 on 2008/06/10 18:08:44 don't delete MTAG_ETHER_HEADER after processing. tag can be used by another firewall packets passing through if_bridge can already contain tag Affected files ... .. //depot/projects/soc2008/gk_l2filter/sys-net/if_bridge.c#4 edit .. //depot/projects/soc2008/gk_l2filter/sys-netinet/ip_fw_pfil.c#6 edit Differences ... ==== //depot/projects/soc2008/gk_l2filter/sys-net/if_bridge.c#4 (text+ko) ==== @@ -2948,10 +2948,16 @@ error = 0; if (ifp->if_flags & IFF_L2TAG) { - mtag_ether_header = m_tag_alloc(MTAG_ETHER, MTAG_ETHER_HEADER, ETHER_HDR_LEN, M_NOWAIT); - if (mtag_ether_header != NULL) { - memcpy(mtag_ether_header + 1, &eh2, ETHER_HDR_LEN); - m_tag_prepend(*mp, mtag_ether_header); + mtag_ether_header = m_tag_locate(*mp, MTAG_ETHER, MTAG_ETHER_HEADER, + NULL); + /* XXX ??? can packet be tagged by another interface */ + if (mtag_ether_header == NULL) { + mtag_ether_header = m_tag_alloc(MTAG_ETHER, MTAG_ETHER_HEADER, + ETHER_HDR_LEN, M_NOWAIT); + if (mtag_ether_header != NULL) { + memcpy(mtag_ether_header + 1, &eh2, ETHER_HDR_LEN); + m_tag_prepend(*mp, mtag_ether_header); + } } } ==== //depot/projects/soc2008/gk_l2filter/sys-netinet/ip_fw_pfil.c#6 (text+ko) ==== @@ -122,7 +122,6 @@ if (tag_ether_hdr != NULL) { eh = *(struct ether_header *)(tag_ether_hdr + 1); args.eh = &eh; - m_tag_delete(*m0, tag_ether_hdr); } again: