Hi!
The Netfilter project proudly presents:
nftables 1.0.5
This release contains bugfixes (highlights):
- Fixes for the -o/--optimize, run this --optimize option to automagically
compact your ruleset using sets, maps and concatenations, eg.
# cat ruleset.nft
table ip x {
chain y {
type nat hook postrouting priority srcnat; policy drop;
ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80
ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90
}
}
# nft -o -c -f ruleset.nft
Merging:
ruleset.nft:4:3-52: ip saddr 1.1.1.1 tcp dport 8000 snat to
4.4.4.4:80
ruleset.nft:5:3-52: ip saddr 2.2.2.2 tcp dport 8001 snat to
5.5.5.5:90
into:
snat to ip saddr . tcp dport map { 1.1.1.1 . 8000 : 4.4.4.4 . 80,
2.2.2.2 . 8001 : 5.5.5.5 . 90 }
- Fix ethernet and vlan concatenations, eg. define a dynamic set which
is populated from the packet path.
add table netdev x
add chain netdev x y { type filter hook ingress device enp0s25 priority 0;
}
add set netdev x macset { typeof ether daddr . vlan id; flags
dynamic,timeout; }
add rule netdev x y update @macset { ether daddr . vlan id timeout 60s }
or simply match using a concatenation:
add rule netdev x y ether saddr . vlan id { 0a:0b:0c:0d:0e:0f . 42,
0a:0b:0c:0d:0e:0f . 4095 } counter accept
- Fix ruleset listing with interface wildcard map, eg.
table inet filter {
chain INPUT {
iifname vmap {
"eth0" : jump input_lan,
"wg*" : jump input_vpn
}
}
chain input_lan {}
chain input_vpn {}
}
- Fix several regressions in the input lexer which broke valid rulesets.
- Fix slowdown with large lists of singleton interval elements.
- Fix set automerge feature for large lists of singleton interval elements.
- Fix bogus error reporting for exact overlaps.
- Fix segfault when adding elements to invalid set.
- fix device parsing in netdev family in json.
See changelog for more details (attached to this email).
You can download this new release from:
https://www.netfilter.org/projects/nftables/downloads.html
https://www.netfilter.org/pub/nftables/
To build the code, libnftnl >= 1.2.3 and libmnl >= 1.0.4 are required:
* https://netfilter.org/projects/libnftnl/index.html
* https://netfilter.org/projects/libmnl/index.html
Visit our wikipage for user documentation at:
* https://wiki.nftables.org
For the manpage reference, check man(8) nft.
In case of bugs and feature requests, file them via:
* https://bugzilla.netfilter.org
Happy firewalling.
Florian Westphal (12):
Revert "scanner: flags: move to own scope"
parser: add missing synproxy scope closure
scanner: don't pop active flex scanner scope
scanner: allow prefix in ip6 scope
netlink_delinearize: allow postprocessing on concatenated elements
netlink_delinearize: postprocess binary ands in concatenations
proto: track full stack of seen l2 protocols, not just cumulative offset
debug: dump the l2 protocol stack
tests: add a test case for ether and vlan listing
netlink_delinearize: also postprocess OP_AND in set element context
evaluate: search stacked header list for matching payload dep
src: allow anon set concatenation with ether and vlan
Jo-Philipp Wich (1):
meta: don't use non-POSIX formats in strptime()
Oleksandr Natalenko (1):
src: proto: support DF, LE PHB, VA for DSCP
Pablo Neira Ayuso (38):
tests: shell: runtime set element automerge
rule: collapse set element commands
intervals: do not report exact overlaps for new elements
intervals: do not empty cache for maps
optimize: do not compare relational expression rhs when collecting
statements
optimize: do not merge rules with set reference in rhs
optimize: do not print stateful information
optimize: remove comment after merging
optimize: fix reject statement
optimize: fix verdict map merging
optimize: add osf expression support
optimize: add xfrm expression support
optimize: add fib expression support
optimize: add binop expression support
optimize: add numgen expression support
optimize: add hash expression support
optimize: add unsupported statement
tests: shell: run -c -o on ruleset
optimize: only merge OP_IMPLICIT and OP_EQ relational
optimize: assume verdict is same when rules have no verdict
optimize: limit statement is not supported yet
libnftables: release top level scope
netlink_delinearize: memleak when parsing concatenation data
intervals: fix crash when trying to remove element in empty set
intervals: check for EXPR_F_REMOVE in case of element mismatch
parser_bison: fix error location for set elements
src: remove NFT_NLATTR_LOC_MAX limit for netlink location error reporting
mnl: store netlink error location for set elements
segtree: fix map listing with interface wildcard
evaluate: report missing interval flag when using prefix/range in
concatenation
cache: release pending rules when chain binding lookup fails
rule: crash when uncollapsing command with unexisting table or set
cache: prepare nft_cache_evaluate() to return error
cache: validate handle string length
cache: report an error message if cache initialization fails
parser_json: fix device parsing in netdev family
tests/py: disable arp family for queue statement
build: Bump version to 1.0.5
Peter Tirsek (1):
evaluate: fix segfault when adding elements to invalid set
Phil Sutter (3):
intervals: Do not sort cached set elements over and over again
tests/py: Add a test for failing ipsec after counter
doc: Document limitations of ipsec expression with xfrm_interface