Hello,
</snip>
> > 326 tmpkt = pfr_create_ktable(&pfr_nulltable, 0, 0,
> >
> > kt looks quite uninitialized here
>
> It looks like the intent was something like this?
>
> Index: pf_table.c
> ===================================================================
> RCS file: /cvs/src/sys/net/pf_table.c,v
> retrieving revision 1.138
> diff -u -p -U7 -r1.138 pf_table.c
> --- pf_table.c 16 Nov 2021 20:51:31 -0000 1.138
> +++ pf_table.c 22 Nov 2021 00:23:39 -0000
> @@ -317,16 +317,14 @@ pfr_add_addrs(struct pfr_table *tbl, str
> struct pfr_addr ad;
> int i, rv, xadd = 0;
> time_t tzero = gettime();
>
> ACCEPT_FLAGS(flags, PFR_FLAG_DUMMY | PFR_FLAG_FEEDBACK);
> if (pfr_validate_table(tbl, 0, flags & PFR_FLAG_USERIOCTL))
> return (EINVAL);
> - if (kt->pfrkt_flags & PFR_TFLAG_CONST)
> - return (EPERM);
> tmpkt = pfr_create_ktable(&pfr_nulltable, 0, 0,
> !(flags & PFR_FLAG_USERIOCTL));
> if (tmpkt == NULL)
> return (ENOMEM);
> SLIST_INIT(&workq);
> SLIST_INIT(&ioq);
> for (i = 0; i < size; i++) {
> @@ -346,14 +344,19 @@ pfr_add_addrs(struct pfr_table *tbl, str
> NET_LOCK();
> PF_LOCK();
> kt = pfr_lookup_table(tbl);
> if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE)) {
> PF_UNLOCK();
> NET_UNLOCK();
> senderr(ESRCH);
> + }
> + if (kt->pfrkt_flags & PFR_TFLAG_CONST) {
> + PF_UNLOCK();
> + NET_UNLOCK();
> + senderr(EPERM);
> }
> SLIST_FOREACH(ke, &ioq, pfrke_ioq) {
> pfr_kentry_kif_ref(ke);
> p = pfr_lookup_kentry(kt, ke, 1);
> q = pfr_lookup_kentry(tmpkt, ke, 1);
> if (flags & PFR_FLAG_FEEDBACK) {
> if (q != NULL)
sure, diff above is correct. thanks for looking at it.
OK sashan