Fix ipfw table creation when net.inet.ip.fw.tables_sets = 0 and non zero set

specified on table creation. This fixes following:

# sysctl net.inet.ip.fw.tables_sets
net.inet.ip.fw.tables_sets: 0
# ipfw table all info
# ipfw set 1 table 1 create type addr
# ipfw set 1 table 1 create type addr
# ipfw add 10 set 1 count ip from table\(1\) to any
00010 count ip from table(1) to any
# ipfw add 10 set 1 count ip from table\(1\) to any
00010 count ip from table(1) to any
# ipfw table all info
--- table(1), set(1) ---
 kindex: 4, type: addr
 references: 1, valtype: legacy
 algorithm: addr:radix
 items: 0, size: 296
--- table(1), set(1) ---
 kindex: 3, type: addr
 references: 1, valtype: legacy
 algorithm: addr:radix
 items: 0, size: 296
--- table(1), set(1) ---
 kindex: 2, type: addr
 references: 0, valtype: legacy
 algorithm: addr:radix
 items: 0, size: 296
--- table(1), set(1) ---
 kindex: 1, type: addr
 references: 0, valtype: legacy
 algorithm: addr:radix
 items: 0, size: 296
#

MFC after:	1 week
This commit is contained in:
Oleg Bulyzhin 2018-04-11 11:12:20 +00:00
parent 8adbc73788
commit 3995ad1768
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=332402

View File

@ -3171,7 +3171,7 @@ alloc_table_config(struct ip_fw_chain *ch, struct tid_info *ti,
if (ntlv == NULL)
return (NULL);
name = ntlv->name;
set = ntlv->set;
set = (V_fw_tables_sets == 0) ? 0 : ntlv->set;
} else {
/* Compat part: convert number to string representation */
snprintf(bname, sizeof(bname), "%d", ti->uidx);