From owner-svn-src-all@FreeBSD.ORG Fri Oct 26 13:30:20 2012 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4F282A32 for ; Fri, 26 Oct 2012 13:30:20 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from c00l3r.networx.ch (c00l3r.networx.ch [62.48.2.2]) by mx1.freebsd.org (Postfix) with ESMTP id A5D3C8FC0C for ; Fri, 26 Oct 2012 13:30:19 +0000 (UTC) Received: (qmail 56260 invoked from network); 26 Oct 2012 15:07:47 -0000 Received: from c00l3r.networx.ch (HELO [127.0.0.1]) ([62.48.2.2]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 26 Oct 2012 15:07:47 -0000 Message-ID: <508A905D.3080702@freebsd.org> Date: Fri, 26 Oct 2012 15:30:05 +0200 From: Andre Oppermann User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: "Andrey V. Elsukov" Subject: Re: svn commit: r242079 - in head: sbin/ipfw share/man/man4 sys/conf sys/net sys/netinet sys/netinet6 sys/netpfil/ipfw References: <201210250939.q9P9dF0q022970@svn.freebsd.org> <508960C2.6030003@freebsd.org> <508967E3.3070508@FreeBSD.org> <5089A13F.8080405@freebsd.org> <20121026112629.GC70741@FreeBSD.org> <508A7762.1040106@freebsd.org> <508A823A.30308@FreeBSD.org> <508A8F1A.7020902@freebsd.org> In-Reply-To: <508A8F1A.7020902@freebsd.org> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, Gleb Smirnoff , src-committers@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Oct 2012 13:30:20 -0000 On 26.10.2012 15:24, Andre Oppermann wrote: > On 26.10.2012 14:29, Andrey V. Elsukov wrote: >> On 26.10.2012 15:43, Andre Oppermann wrote: >>>> A> If you can show with your performance profiling that the sysctl >>>> A> isn't even necessary, you could leave it completely away and have >>>> A> pfil_forward enabled permanently. That would be even better for >>>> A> everybody. >>>> >>>> I'd prefer to have the sysctl. Benchmarking will definitely show >>>> no regression, because in default case packets are tagless. But if >>>> packets would carry 1 or 2 tags each, which don't actually belong >>>> to PACKET_TAG_IPFORWARD, then processing would be pessimized. >>> >>> With M_FASTFWD_OURS I used an overlay of the protocol specific M_PROTO[1-5] >>> mbuf flags. The same can be done with M_IPFORWARD. The ipfw code then >>> will not only add the m_tag but also set M_IPFORWARD flag. That way no >>> sysctl is required and the feature is always available. The overlay >>> definition is in ip_var.h. >> >> It seems we have only one bit in the m_flags that can be used, so, maybe >> we left it to some things that can appear in the future? > > That's what the M_PROTO flags are for: > > #define M_IPFW_FORWARD M_PROTO2 /* ip forwarding */ Actually looking at it technically this isn't forwarding but specifying a different nexthop. Hence the #define and description should be more like #define M_IP_NEXTHOP M_PROTO2 /* explicit ip nexthop */ Of course the userspace ipfw feature naming and usage doesn't change. But within the kernel it's really nexthop manipulation within the forwarding path. -- Andre > of course you have to do the same for ip6. > > The M_PROTO[1-5] flags are only valid within a protocol layer. For > example they get cleared in ip_output() before the packet is handed > to layer 2. >