Hello,

Jason Mc Intyre (jmc@) reported a bug earlier today reaching me
by email off-list. Let me quote from Jason's email:

    i already have a pf table, adding an address tells me i have created a
    table. even though the table already existed:

            # pfctl -tbrutes -Tshow | wc
            89      89      501
            # pfctl -tbrutes -Tadd 1.1.1.1
            1 table created.
            1/1 addresses added.

The bug has been introduced by my commit to pf_table.c:
    $OpenBSD: pf_ioctl.c,v 1.381 2022/05/10 23:12:25 sashan Exp $

pfr_table_add() currently always increases 'xadd' counter while it
should increase 'xadd' if and only if we are going to create a table.
diff below fixes that.

OK to commit?


thanks and
regards
sashan

--------8<---------------8<---------------8<------------------8<--------
diff --git a/sys/net/pf_table.c b/sys/net/pf_table.c
index f261baef963..6c47e11f604 100644
--- a/sys/net/pf_table.c
+++ b/sys/net/pf_table.c
@@ -1562,13 +1562,13 @@ pfr_add_tables(struct pfr_table *tbl, int size, int 
*nadd, int flags)
                if (p == NULL) {
                        SLIST_REMOVE(&auxq, n, pfr_ktable, pfrkt_workq);
                        SLIST_INSERT_HEAD(&addq, n, pfrkt_workq);
+                       xadd++;
                } else if (!(flags & PFR_FLAG_DUMMY) &&
                    !(p->pfrkt_flags & PFR_TFLAG_ACTIVE)) {
                        p->pfrkt_nflags = (p->pfrkt_flags &
                            ~PFR_TFLAG_USRMASK) | key.pfrkt_flags;
                        SLIST_INSERT_HEAD(&changeq, p, pfrkt_workq);
                }
-               xadd++;
        }
 
        if (!(flags & PFR_FLAG_DUMMY)) {

Reply via email to