History

netfilter: ipset: add forceadd kernel support for hash set types

Adds a new property for hash set types, where if a set is created with the 'forceadd' option and the set becomes full the next addition to the set may succeed and evict a random entry from the set. To keep overhead low eviction is done very simply. It checks to see which bucket the new entry would be added. If the bucket's pos value is non-zero (meaning there's at least one entry in the bucket) it replaces the first entry in the bucket. If pos is zero, then it continues down the normal add process. This property is useful if you have a set for 'ban' lists where it may not matter if you release some entries from the set early.

Josh Hunt committed 12 years ago

Commit 07cf8f51 parent 6843bc314 files · +40 −12Browse files

Showing the changes to include/uapi/linux (1 of 14 files). Show all

Unified · Split

include/uapi/linux/netfilter/ipset/ip_set.h+5−2
@@ -185,13 +185,16 @@ enum ipset_cadt_flags { · 184 unmodified lines
185185 IPSET_FLAG_WITH_COUNTERS = (1 << IPSET_FLAG_BIT_WITH_COUNTERS),
186186 IPSET_FLAG_BIT_WITH_COMMENT = 4,
187187 IPSET_FLAG_WITH_COMMENT = (1 << IPSET_FLAG_BIT_WITH_COMMENT),
188+ IPSET_FLAG_BIT_WITH_FORCEADD = 5,
189+ IPSET_FLAG_WITH_FORCEADD = (1 << IPSET_FLAG_BIT_WITH_FORCEADD),
188190 IPSET_FLAG_CADT_MAX = 15,
189191 };
190192
191193 /* The flag bits which correspond to the non-extension create flags */
192194 enum ipset_create_flags {
193− IPSET_CREATE_FLAG_NONE = 0,
194− IPSET_CREATE_FLAG_MAX = 7,
195+ IPSET_CREATE_FLAG_BIT_FORCEADD = 0,
196+ IPSET_CREATE_FLAG_FORCEADD = (1 << IPSET_CREATE_FLAG_BIT_FORCEADD),
197+ IPSET_CREATE_FLAG_BIT_MAX = 7,
195198 };
196199
197200 /* Commands with settype-specific attributes */