ipfilter: Use the softn (NAT softc) host map size in ip_nat6 calculation.

The ipfilter NAT table host map size is a tunable that defaults to
a macro value defined at build time. HOSTMAP_SIZE is saved in softn
(the ipnat softc) at initialization. It can be tuned (changed) at runtime
using the ipf -T command. If the hostmap_size tunable is adjusted the
calculation to determine where to put new entries in the table was
incorrect. Use the tunable in the NAT softc instead of the static build
time value.

MFC after:	1 week
This commit is contained in:
Cy Schubert 2021-02-05 06:26:04 -08:00
parent 10990cb460
commit 344f1083e1

View File

@ -390,7 +390,7 @@ ipf_nat6_hostmap(softn, np, src, dst, map, port)
hv += dst->i6[2];
hv += dst->i6[1];
hv += dst->i6[0];
hv %= HOSTMAP_SIZE;
hv %= softn->ipf_nat_hostmap_sz;
for (hm = softn->ipf_hm_maptable[hv]; hm; hm = hm->hm_next)
if (IP6_EQ(&hm->hm_osrc6, src) &&
IP6_EQ(&hm->hm_odst6, dst) &&