From owner-freebsd-net@FreeBSD.ORG Tue Jun 5 07:10:45 2007 Return-Path: X-Original-To: net@FreeBSD.org Delivered-To: freebsd-net@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AB33016A46D for ; Tue, 5 Jun 2007 07:10:45 +0000 (UTC) (envelope-from Artis.Caune@latnet.lv) Received: from esbens.latnet.lv (esbens.latnet.lv [159.148.19.115]) by mx1.freebsd.org (Postfix) with ESMTP id 5F02113C4AE for ; Tue, 5 Jun 2007 07:10:45 +0000 (UTC) (envelope-from Artis.Caune@latnet.lv) Received: from localhost (localhost.localdomain [127.0.0.1]) by esbens.latnet.lv (Postfix) with ESMTP id 155F516EA6B for ; Tue, 5 Jun 2007 09:59:53 +0300 (EEST) X-Virus-Scanned: Debian amavisd-new at esbens.latnet.lv Received: from esbens.latnet.lv ([127.0.0.1]) by localhost (esbens.latnet.lv [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pH9yfxqIUGh1 for ; Tue, 5 Jun 2007 09:59:52 +0300 (EEST) Received: from [159.148.108.245] (didii.latnet.lv [159.148.108.245]) by esbens.latnet.lv (Postfix) with ESMTP id 9E2F016EB47 for ; Tue, 5 Jun 2007 09:59:52 +0300 (EEST) Message-ID: <466509E8.4090707@latnet.lv> Date: Tue, 05 Jun 2007 09:59:52 +0300 From: Artis Caune User-Agent: Thunderbird 1.5.0.10 (X11/20070327) MIME-Version: 1.0 To: net@FreeBSD.org Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Subject: PFIL hooks X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jun 2007 07:10:45 -0000 I want to monitor pf tagged mbufs, but (without kld hacks) I can see only IN or OUT direction, because PFIL insert hooks in reverse order. Hack like this works, but is ugly: # kldload mymodule # mymodule -enable PFIL_OUT # kldload pf # pfctl -e # mymodule -enable PFIL_IN How about PFIL_HEAD, PFIL_TAIL flags for pfil_add_hook? pfil_list_add() ... if (flags & PFIL_IN) { if (flags & PFIL_TAIL) TAILQ_INSERT_TAIL(list, pfh1, pfil_link); else TAILQ_INSERT_HEAD(list, pfh1, pfil_link); } else { if (flags & PFIL_HEAD) TAILQ_INSERT_HEAD(list, pfh1, pfil_link); else TAILQ_INSERT_TAIL(list, pfh1, pfil_link); }