Date: Thu, 19 Oct 2023 09:14:39 -0700 From: Gleb Smirnoff <glebius@freebsd.org> To: Kristof Provost <kp@freebsd.org>, Igor Ostapenko <pm@igoro.pro> Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: fabf705f4b5a - main - pf: fix pf divert-to loop Message-ID: <ZTFV74-C4amIm0ru@FreeBSD.org> In-Reply-To: <202310191237.39JCbdXp094554@gitrepo.freebsd.org> References: <202310191237.39JCbdXp094554@gitrepo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Oct 19, 2023 at 12:37:39PM +0000, Kristof Provost wrote: K> +++ b/sys/netinet/ip_var.h ... K> +/* pf specific mtag for divert(4) support */ K> +enum { PF_DIVERT_MTAG_DIR_IN=1, PF_DIVERT_MTAG_DIR_OUT=2 }; K> +struct pf_divert_mtag { K> + uint16_t idir; // initial pkt direction K> + uint16_t ndir; // a) divert(4) port upon initial diversion K> + // b) new direction upon pkt re-enter K> +}; This can be written as: typedef enum { PF_DIVERT_MTAG_DIR_IN = 1, PF_DIVERT_MTAG_DIR_OUT = 2, } pf_mtag_dir; struct pf_divert_mtag { pf_mtag_dir idir; /* Initial packet direction. */ union { pf_mtag_dir ndir; /* New direction after re-enter. */ uint16_t port; /* Initial divert(4) port. */ }; }; The benefit is that in the debugger you will see PF_DIVERT_MTAG_DIR_IN instead of 1 when looking at a structure. And compilation time failure if anybody sets it to a wrong value. Using "port" instead of "ndir" when assigning a port improves readability of code. This will grow structure from 4 bytes to 8, as enum is always an int. However, uma allocator backing m_tag_alloc() will allocate same amount of memory. Sorry for not messaing that in the phabricator. -- Gleb Smirnoff
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ZTFV74-C4amIm0ru>