<feed xmlns='http://www.w3.org/2005/Atom'>
<title>firewall4/root/usr/share, branch master</title>
<subtitle>OpenWrt nftables firewall</subtitle>
<id>https://git-03.infra.openwrt.org/project/firewall4/atom?h=master</id>
<link rel='self' href='https://git-03.infra.openwrt.org/project/firewall4/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/'/>
<updated>2026-10-29T08:40:33Z</updated>
<entry>
<title>Revert "fw4: list lower devices for software flow offloading"</title>
<updated>2026-10-29T08:40:33Z</updated>
<author>
<name>Robert Marko</name>
</author>
<published>2026-10-29T08:40:33Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/commit/?id=e6f600c458bda7bc2d87b07e78fd06b50c9d7131'/>
<id>urn:sha1:e6f600c458bda7bc2d87b07e78fd06b50c9d7131</id>
<content type='text'>
This reverts commit a3296754c154c9a0203a8ab72820da0b381aaddd.

Fixes: #114
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>fw4: honour negated protocol matches in rules</title>
<updated>2026-10-28T13:07:03Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2026-10-18T08:34:14Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/commit/?id=384d1a9a2f414e599ffa62aa8b916ea6e455971c'/>
<id>urn:sha1:384d1a9a2f414e599ffa62aa8b916ea6e455971c</id>
<content type='text'>
parse_protocol() records a leading '!' in the invert flag, but the rule
template ignores it, so "option proto '!tcp'" silently renders as a
match on TCP. Emit "meta l4proto !=" for a negated protocol. A negated
list such as '!tcpudp' or '!tcp !udp' matches none of its protocols, so
it becomes a single rule against the whole set instead of one rule per
protocol. A rule that mixes negated and plain protocols, negates 'all',
or combines a negated protocol with port, ICMP type or port set matches
is refused with a warning.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</content>
</entry>
<entry>
<title>fw4: add the npt target to nat sections</title>
<updated>2026-10-28T13:07:03Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2026-10-28T10:27:30Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/commit/?id=135420c4b039aa37c8a3f589df12c18a8bd24efe'/>
<id>urn:sha1:135420c4b039aa37c8a3f589df12c18a8bd24efe</id>
<content type='text'>
A nat section with target 'npt' maps an internal prefix to an external
prefix of the same length, in the manner of RFC 6296:

  config nat
          option name 'lan-ula'
          option src 'wan'
          option target 'npt'
          option src_ip 'fd00:21::/64'
          option snat_ip '2001:db8:200::/64'

src or device selects the interface. fw4 emits a prefix SNAT for
traffic that leaves on it and the reverse prefix DNAT for traffic that
enters on it, so the interface identifier is kept and each host maps
1:1. IPv4 prefixes give a netmap the same way.

The nft prefix mapping is stateful and recomputes the transport
checksum, where RFC 6296 is stateless and checksum-neutral; the
addresses on the wire are the same. The mapping accepts no traffic:
the forward rules still decide.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</content>
</entry>
<entry>
<title>Do not emit helper jump without helper modules</title>
<updated>2026-10-26T08:37:23Z</updated>
<author>
<name>Andris PE</name>
</author>
<published>2024-03-22T10:51:07Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/commit/?id=bac1d656e09b48e542f860844fe91cbba82abae2'/>
<id>urn:sha1:bac1d656e09b48e542f860844fe91cbba82abae2</id>
<content type='text'>
Do not emit helper jump if no helper modules are present saving
per-every-packet bytecode before ct:
```
inet fw4 prerouting
  [ meta load iifname =&gt; reg 1 ]
  [ cmp eq reg 1 0x6c2d7262 0x00006e61 0x00000000 0x00000000 ]
  [ immediate reg 0 jump -&gt; helper_lan ]
  userdata = { \x00-!fw4: Handle lan IPv4/IPv6 helper assignment\x00 }
```

Signed-off-by: Andris PE &lt;neandris@gmail.com&gt;
Link: https://github.com/openwrt/firewall4/pull/27
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>ruleset: fix for missing counters handling code for ipsets</title>
<updated>2026-10-26T08:31:17Z</updated>
<author>
<name>XCas13</name>
</author>
<published>2026-02-08T07:38:20Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/commit/?id=df0c9021bbe712a984fd2403db1c0c7442de1da9'/>
<id>urn:sha1:df0c9021bbe712a984fd2403db1c0c7442de1da9</id>
<content type='text'>
This commit adds missing code that handles counters for ipsets. Fixes #69

Signed-off-by: XCas13 &lt;xcas13@gmail.com&gt;
Link: https://github.com/openwrt/firewall4/pull/70
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>fw4: list lower devices for software flow offloading</title>
<updated>2026-10-25T10:19:25Z</updated>
<author>
<name>Julius Bairaktaris</name>
</author>
<published>2026-10-18T13:43:11Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/commit/?id=a3296754c154c9a0203a8ab72820da0b381aaddd'/>
<id>urn:sha1:a3296754c154c9a0203a8ab72820da0b381aaddd</id>
<content type='text'>
Since Linux commit 871df5007eda ("netfilter: flowtable: bail out if
forward path cannot be discovered"), a flow is offloaded only if the
ingress device at the bottom of its forward path is a flowtable device.
For a bridge that is the bridge port, such as a DSA user port or a
wireless interface, not the bridge itself. With software offloading,
fw4 lists only the zone devices, so flows through br-lan or a VLAN
under the WAN stay on the classic path.

Resolve the lower devices for software offloading as for hardware
offloading.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Julius Bairaktaris &lt;julius@bairaktaris.de&gt;
Link: https://github.com/openwrt/firewall4/pull/108
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>fw4: support forwardings in procd and netifd firewall data</title>
<updated>2026-08-27T16:26:56Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-06-04T21:50:38Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/commit/?id=c2ae8c8940a89407da32fbd662d4010ee2c9bbe6'/>
<id>urn:sha1:c2ae8c8940a89407da32fbd662d4010ee2c9bbe6</id>
<content type='text'>
Zones synthesised from published firewall data can now also declare
the forwardings between them. All zones are parsed before any
forwarding, so resolution is independent of declaration order.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>fw4: support zones in procd and netifd firewall data</title>
<updated>2026-08-27T16:26:56Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-06-04T21:50:33Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/commit/?id=b263f8ccbda7ea103cdfe553b631663438d0725e'/>
<id>urn:sha1:b263f8ccbda7ea103cdfe553b631663438d0725e</id>
<content type='text'>
Zone specs were collected from published firewall data but never
parsed. Accept them from the netifd interface data channel and from
procd service data, keep their declared names, default their policies
to drop to stay fail-closed, and attribute diagnostics for malformed
specs to their publisher.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>fw4: anchor per-interface ubus firewall specs by kind</title>
<updated>2026-08-27T16:26:24Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-06-04T21:50:24Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/commit/?id=d92213a9345efc984ff9c191e3b32eaedeac695d'/>
<id>urn:sha1:d92213a9345efc984ff9c191e3b32eaedeac695d</id>
<content type='text'>
Only rule and nat specs pin to the publishing interface device, which
protocol handlers such as 464xlat rely on; zone, forwarding, redirect
and ipset specs resolve through their own references, and an explicit
device on them is kept. An empty device opts a rule or nat out of the
pin and then requires a zone reference.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>fw4: accept a source rewrite range for ICMP</title>
<updated>2026-08-27T16:26:05Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-08-22T12:30:31Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/firewall4/commit/?id=2b55562cdfb294e6baae14fa41f8d2f4b5c30556'/>
<id>urn:sha1:2b55562cdfb294e6baae14fa41f8d2f4b5c30556</id>
<content type='text'>
A snat_port range on proto icmp maps the ICMP identifier rather than
a port. map.sh emits one per MAP-E portset (RFC 7597) and firewall3
accepted it, while fw4 rejects the section, breaking ICMP source NAT
for MAP. Accept the range for ICMP and infer the IPv6 family for
ipv6-icmp; port match options still require UDP or TCP.

Fixes: 59dbb982b7fe ("Initial commit")
Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
</feed>
