<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.nftables.org/wiki-nftables/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fmyhr</id>
	<title>nftables wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.nftables.org/wiki-nftables/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fmyhr"/>
	<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php/Special:Contributions/Fmyhr"/>
	<updated>2026-04-12T11:48:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Netfilter_hooks&amp;diff=1076</id>
		<title>Netfilter hooks</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Netfilter_hooks&amp;diff=1076"/>
		<updated>2023-03-09T15:07:20Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Priority within hook */ Add lower priority limit for nat type chains.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;nftables&#039;&#039; uses mostly the same Netfilter infrastructure as legacy &#039;&#039;iptables&#039;&#039;. The hook infrastructure, [http://people.netfilter.org/pablo/docs/login.pdf Connection Tracking System], NAT engine, logging infrastructure, and userspace queueing remain the same. Only the packet classification framework is new.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Netfilter hooks into Linux networking packet flows ==&lt;br /&gt;
&lt;br /&gt;
The following schematic shows packet flows through Linux networking:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://people.netfilter.org/pablo/nf-hooks.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Traffic flowing to the local machine in the input path sees the prerouting and input hooks. Then, the traffic that is generated by local processes follows the output and postrouting path.&lt;br /&gt;
&lt;br /&gt;
If you configure your Linux box to behave as a router, do not forget to enable forwarding via:&lt;br /&gt;
&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
Then packets that are not addressed to your local system will be seen from the forward hook. Such forwarded packets follow the path: prerouting, forward and postrouting.&lt;br /&gt;
&lt;br /&gt;
In a major change from iptables, which predefines chains at &#039;&#039;&#039;every&#039;&#039;&#039; hook (i.e. &#039;&#039;INPUT&#039;&#039; chain in &#039;&#039;filter&#039;&#039; table), nftables predefines &#039;&#039;&#039;no&#039;&#039;&#039; chains at all. You must must explicitly create a [[Configuring_chains#Base_chain_hooks | base&amp;amp;nbsp;chain]] at each hook at which you want to filter traffic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ingress hook ===&lt;br /&gt;
&lt;br /&gt;
The ingress hook was added in Linux kernel 4.2. Unlike the other netfilter hooks, the ingress hook is attached to a particular network interface.&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nftables&#039;&#039; with the ingress hook to enforce very early filtering policies that take effect even before prerouting. Do note that at this very early stage, fragmented datagrams have not yet been reassembled. So, for example, matching ip saddr and daddr works for all ip packets, but matching L4 headers like udp dport works only for unfragmented packets, or the first fragment.&lt;br /&gt;
&lt;br /&gt;
The ingress hook provides an alternative to &#039;&#039;tc&#039;&#039; ingress filtering. You still need &#039;&#039;tc&#039;&#039; for traffic shaping/queue management.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hooks by family and chain type ==&lt;br /&gt;
&lt;br /&gt;
The following table lists available hooks by [[Nftables_families|family]] and [[Configuring_chains#Base_chain_types|chain type]]. Minimum nftables and Linux kernel versions are shown for recently-added hooks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; rowspan=&amp;quot;2&amp;quot; | Chain type&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Hooks&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! ingress&lt;br /&gt;
! prerouting&lt;br /&gt;
! forward&lt;br /&gt;
! input&lt;br /&gt;
! output&lt;br /&gt;
! postrouting&lt;br /&gt;
! egress&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | &amp;lt;br&amp;gt;inet family&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| filter&lt;br /&gt;
| {{yes|1=[https://marc.info/?l=netfilter&amp;amp;m=160379555303808&amp;amp;w=2 0.9.7] / [https://kernelnewbies.org/Linux_5.10 5.10]}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| nat&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| route&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | &amp;lt;br&amp;gt;ip6 family&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| filter&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| nat&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| route&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | &amp;lt;br&amp;gt;ip family&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| filter&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| nat&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| route&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | &amp;lt;br&amp;gt;arp family&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| filter&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| nat&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| route&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | &amp;lt;br&amp;gt;bridge family&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| filter&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| nat&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| route&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | &amp;lt;br&amp;gt;netdev family&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| filter&lt;br /&gt;
| {{yes|1=[https://marc.info/?l=netfilter&amp;amp;m=146488681521497&amp;amp;w=2 0.6] / [https://kernelnewbies.org/Linux_4.2 4.2]}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no|- / [https://kernelnewbies.org/Linux_5.7 5.7]}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| nat&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| route&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Priority within hook ==&lt;br /&gt;
&lt;br /&gt;
Within a given hook, Netfilter performs operations in order of increasing numerical priority. Each nftables [[Configuring_chains#Base_chain_hooks | base&amp;amp;nbsp;chain]] and [[Flowtables|flowtable]] is assigned a priority that defines its ordering among other base chains and flowtables and Netfilter internal operations at the same hook. For example, a chain on the &#039;&#039;prerouting&#039;&#039; hook with priority &#039;&#039;-300&#039;&#039; will be placed before connection tracking operations.&lt;br /&gt;
&lt;br /&gt;
The following table shows Netfilter priority values, check the nft manpage for reference.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | nftables [[Nftables_families|Families]]&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Typical hooks&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | &#039;&#039;nft&#039;&#039; Keyword&lt;br /&gt;
! style=&amp;quot;text-align:right;&amp;quot; | Value&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Netfilter Internal Priority&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| prerouting&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | -450&lt;br /&gt;
| NF_IP_PRI_RAW_BEFORE_DEFRAG&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet, ip, ip6&lt;br /&gt;
| prerouting&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | -400&lt;br /&gt;
| NF_IP_PRI_CONNTRACK_DEFRAG&lt;br /&gt;
| Packet defragmentation / datagram reassembly &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet, ip, ip6&lt;br /&gt;
| all&lt;br /&gt;
| &#039;&#039;&#039;raw&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | -300&lt;br /&gt;
| NF_IP_PRI_RAW&lt;br /&gt;
| Traditional priority of the raw table placed before connection tracking operation&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | -225&lt;br /&gt;
| NF_IP_PRI_SELINUX_FIRST&lt;br /&gt;
| SELinux operations&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet, ip, ip6&lt;br /&gt;
| prerouting, output&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | -200&lt;br /&gt;
| NF_IP_PRI_CONNTRACK&lt;br /&gt;
| [[Connection_Tracking_System | Connection tracking]] processes run early in prerouting and output hooks to associate packets with tracked connections. &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet, ip, ip6&lt;br /&gt;
| all&lt;br /&gt;
| &#039;&#039;&#039;mangle&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | -150&lt;br /&gt;
| NF_IP_PRI_MANGLE&lt;br /&gt;
| Mangle operation&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet, ip, ip6&lt;br /&gt;
| prerouting&lt;br /&gt;
| &#039;&#039;&#039;dstnat&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | -100&lt;br /&gt;
| NF_IP_PRI_NAT_DST&lt;br /&gt;
| Destination NAT&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet, ip, ip6, arp, netdev&lt;br /&gt;
| all&lt;br /&gt;
| &#039;&#039;&#039;filter&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | 0&lt;br /&gt;
| NF_IP_PRI_FILTER&lt;br /&gt;
| Filtering operation, the filter table&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet, ip, ip6&lt;br /&gt;
| all&lt;br /&gt;
| &#039;&#039;&#039;security&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | 50&lt;br /&gt;
| NF_IP_PRI_SECURITY&lt;br /&gt;
| Place of security table, where secmark can be set for example&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet, ip, ip6&lt;br /&gt;
| postrouting&lt;br /&gt;
| &#039;&#039;&#039;srcnat&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | 100&lt;br /&gt;
| NF_IP_PRI_NAT_SRC&lt;br /&gt;
| Source NAT&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| postrouting&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | 225&lt;br /&gt;
| NF_IP_PRI_SELINUX_LAST&lt;br /&gt;
| SELinux at packet exit&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet, ip, ip6&lt;br /&gt;
| postrouting&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | 300&lt;br /&gt;
| NF_IP_PRI_CONNTRACK_HELPER&lt;br /&gt;
| Connection tracking helpers, which identify expected and related packets.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet, ip, ip6&lt;br /&gt;
| input, postrouting&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | INT_MAX&lt;br /&gt;
| NF_IP_PRI_CONNTRACK_CONFIRM&lt;br /&gt;
| Connection tracking adds new tracked connections at final step in input &amp;amp; postrouting hooks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| bridge&lt;br /&gt;
| prerouting&lt;br /&gt;
| &#039;&#039;&#039;dstnat&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | -300&lt;br /&gt;
| NF_BR_PRI_NAT_DST_BRIDGED&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| bridge&lt;br /&gt;
| all&lt;br /&gt;
| &#039;&#039;&#039;filter&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | -200&lt;br /&gt;
| NF_BR_PRI_FILTER_BRIDGED&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| bridge&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | 0&lt;br /&gt;
| NF_BR_PRI_BRNF&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| bridge&lt;br /&gt;
| output&lt;br /&gt;
| &#039;&#039;&#039;out&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | 100&lt;br /&gt;
| NF_BR_PRI_NAT_DST_OTHER&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| bridge&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | 200&lt;br /&gt;
| NF_BR_PRI_FILTER_OTHER&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| bridge&lt;br /&gt;
| postrouting&lt;br /&gt;
| &#039;&#039;&#039;srcnat&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | 300&lt;br /&gt;
| NF_BR_PRI_NAT_SRC&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Starting with nftables 0.9.6 you may set priority using keywords instead of numbers. (Note that the same keyword maps to different numerical priorities in the bridge family vs. the other families.) You can also specify priority as an integral offset from a keyword, i.e. &#039;&#039;mangle - 5&#039;&#039; is equivalent to numerical priority -155.&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to specify keyword priorities even in family/hook combinations where they don&#039;t make logical sense. Recall that the relative numerical ordering of priorities within a given hook is all that matters as far as Netfilter is concerned. Keep in mind that this relative ordering includes packet defragmentation, connection tracking and other Netfilter operations as well as your nftables base chains and flowtables.&lt;br /&gt;
&lt;br /&gt;
NOTE: nat type chains must use priority &amp;gt; -200, which is used by conntrack hooks.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Talk:Simple_ruleset_for_a_server&amp;diff=1070</id>
		<title>Talk:Simple ruleset for a server</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Talk:Simple_ruleset_for_a_server&amp;diff=1070"/>
		<updated>2022-07-12T20:46:19Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Created page with &amp;quot;== Ping flood from single IP address not rate-limited by this ruleset == As [https://marc.info/?t=165710014500005&amp;amp;r=1&amp;amp;w=2 reported] in the netfilter mailing list, if the ping...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ping flood from single IP address not rate-limited by this ruleset ==&lt;br /&gt;
As [https://marc.info/?t=165710014500005&amp;amp;r=1&amp;amp;w=2 reported] in the netfilter mailing list, if the ping rules in inbound_ipv4 and inbound_ipv6 are uncommented, the ct accept rule in the inbound chain accepts all pings from a single IP address, regardless of the rate limit in the ping rules. If ping floods from a single IP address are of concern in your installation, you will need to modify this ruleset. One way to do so is suggested in the linked mailing list thread.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1064</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1064"/>
		<updated>2022-03-30T08:29:39Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Independent media coverage */ 2022-03-28 nftables security fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2022-02-21&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.2]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=164546566103765&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/nftables bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-11-18&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.1]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=163723236100842&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/libnftnl11 sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2022-03-20&lt;br /&gt;
| [https://www.kernel.org/ 5.17]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2022/3/20/213 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/887679/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.17 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Item&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2022-03-28&lt;br /&gt;
| [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Some nftables security vulnerabilities], Jonathan Corbet, LWN.net&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-27&lt;br /&gt;
| [https://lwn.net/Articles/889502/ Nftables reaches 1.0], Jonathan Corbet, LWN.net&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1063</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1063"/>
		<updated>2022-03-30T08:18:53Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Linux kernel */ kernel 5.17&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2022-02-21&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.2]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=164546566103765&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/nftables bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-11-18&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.1]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=163723236100842&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/libnftnl11 sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2022-03-20&lt;br /&gt;
| [https://www.kernel.org/ 5.17]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2022/3/20/213 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/887679/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.17 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1060</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1060"/>
		<updated>2022-03-10T12:35:57Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Code Releases */ nftables 1.0.2, kernel 5.16&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2022-02-21&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.2]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=164546566103765&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/nftables bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-11-18&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.1]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=163723236100842&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/libnftnl11 sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2022-01-09&lt;br /&gt;
| [https://www.kernel.org/ 5.16]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2022/1/9/294 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/880775/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.16 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/sid/linux-image-amd64 sid]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=List_of_updates_in_the_nft_command_line_tool&amp;diff=1059</id>
		<title>List of updates in the nft command line tool</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=List_of_updates_in_the_nft_command_line_tool&amp;diff=1059"/>
		<updated>2022-03-10T12:16:06Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Add 1.0.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains links to nftables release announcements. In addition to a summary of bug fixes and new features, each announcement typically includes examples of how to use new features.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Announcement&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Comments&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2022-02-21&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=164546566103765&amp;amp;w=2 nftables 1.0.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-11-18&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=163724233607275&amp;amp;w=2 nftables 1.0.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 nftables 1.0.0]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162197756905358&amp;amp;w=2 nftables 0.9.9]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-01-15&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=161074809318720&amp;amp;w=2 nftables 0.9.8]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-10-27&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=160379555303808&amp;amp;w=2 nftables 0.9.7]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-06-15&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=159225380419197&amp;amp;w=2 nftables 0.9.6]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-06-06&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=159144250132190&amp;amp;w=2 nftables 0.9.5]&lt;br /&gt;
| This release broke &#039;&#039;vmap&#039;&#039; support, this is fixed in 0.9.6.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158575148505527&amp;amp;w=2 nftables 0.9.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-12-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=157532146917292&amp;amp;w=2 nftables 0.9.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-08-19&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=156621590113089&amp;amp;w=2 nftables 0.9.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-06-24&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=156139496810281&amp;amp;w=2 nftables 0.9.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-06-08&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152849974510956&amp;amp;w=2 nftables 0.9.0]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-05-10&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152595594524056&amp;amp;w=2 nftables 0.8.5]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-05-01&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152521206028754&amp;amp;w=2 nftables 0.8.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-03-03&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152009279821556&amp;amp;w=2 nftables 0.8.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-02-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=151759567102838&amp;amp;w=2 nftables 0.8.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-01-16&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=151610774011377&amp;amp;w=2 nftables 0.8.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2017-10-12&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=150785219810541&amp;amp;w=2 nftables 0.8]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2016-12-20&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=148226682025890&amp;amp;w=2 nftables 0.7]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2016-06-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=146488681521497&amp;amp;w=2 nftables 0.6]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2015-09-17&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=144251853500774&amp;amp;w=2 nftables 0.5]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-12-16&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=141869063212230&amp;amp;w=2 nftables 0.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-06-25&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=140371155009356&amp;amp;w=2 nftables 0.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-04-14&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=139747559724664&amp;amp;w=2 nftables 0.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-01-20&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=139022350623824&amp;amp;w=2 nftables 0.099]&lt;br /&gt;
| The first released intended for users.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2009-03-18&lt;br /&gt;
| [https://marc.info/?l=netfilter-devel&amp;amp;m=123735060518576&amp;amp;w=2 nftables first alpha]&lt;br /&gt;
| First full public release, alpha quality not meant for users.&lt;br /&gt;
Release notes include design summary, with differences from iptables. &lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=List_of_updates_in_the_nft_command_line_tool&amp;diff=1053</id>
		<title>List of updates in the nft command line tool</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=List_of_updates_in_the_nft_command_line_tool&amp;diff=1053"/>
		<updated>2021-11-23T16:03:11Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Add 1.0.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains links to nftables release announcements. In addition to a summary of bug fixes and new features, each announcement typically includes examples of how to use new features.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Announcement&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Comments&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-11-18&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=163724233607275&amp;amp;w=2 nftables 1.0.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 nftables 1.0.0]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162197756905358&amp;amp;w=2 nftables 0.9.9]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-01-15&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=161074809318720&amp;amp;w=2 nftables 0.9.8]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-10-27&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=160379555303808&amp;amp;w=2 nftables 0.9.7]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-06-15&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=159225380419197&amp;amp;w=2 nftables 0.9.6]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-06-06&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=159144250132190&amp;amp;w=2 nftables 0.9.5]&lt;br /&gt;
| This release broke &#039;&#039;vmap&#039;&#039; support, this is fixed in 0.9.6.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158575148505527&amp;amp;w=2 nftables 0.9.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-12-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=157532146917292&amp;amp;w=2 nftables 0.9.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-08-19&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=156621590113089&amp;amp;w=2 nftables 0.9.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-06-24&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=156139496810281&amp;amp;w=2 nftables 0.9.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-06-08&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152849974510956&amp;amp;w=2 nftables 0.9.0]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-05-10&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152595594524056&amp;amp;w=2 nftables 0.8.5]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-05-01&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152521206028754&amp;amp;w=2 nftables 0.8.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-03-03&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152009279821556&amp;amp;w=2 nftables 0.8.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-02-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=151759567102838&amp;amp;w=2 nftables 0.8.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-01-16&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=151610774011377&amp;amp;w=2 nftables 0.8.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2017-10-12&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=150785219810541&amp;amp;w=2 nftables 0.8]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2016-12-20&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=148226682025890&amp;amp;w=2 nftables 0.7]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2016-06-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=146488681521497&amp;amp;w=2 nftables 0.6]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2015-09-17&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=144251853500774&amp;amp;w=2 nftables 0.5]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-12-16&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=141869063212230&amp;amp;w=2 nftables 0.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-06-25&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=140371155009356&amp;amp;w=2 nftables 0.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-04-14&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=139747559724664&amp;amp;w=2 nftables 0.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-01-20&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=139022350623824&amp;amp;w=2 nftables 0.099]&lt;br /&gt;
| The first released intended for users.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2009-03-18&lt;br /&gt;
| [https://marc.info/?l=netfilter-devel&amp;amp;m=123735060518576&amp;amp;w=2 nftables first alpha]&lt;br /&gt;
| First full public release, alpha quality not meant for users.&lt;br /&gt;
Release notes include design summary, with differences from iptables. &lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1052</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1052"/>
		<updated>2021-11-23T16:00:59Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Linux kernel */ sid now has 5.15&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-11-18&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.1]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=163724233607275&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/nftables sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-11-18&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.1]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=163723236100842&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/libnftnl11 sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-10-31&lt;br /&gt;
| [https://www.kernel.org/ 5.15]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/10/31/203 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/874493/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.15 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/sid/linux-image-amd64 sid]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1051</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1051"/>
		<updated>2021-11-20T20:08:52Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* libnftnl */ libnftnl 1.2.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-11-18&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.1]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=163724233607275&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/nftables sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-11-18&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.1]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=163723236100842&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/libnftnl11 sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-10-31&lt;br /&gt;
| [https://www.kernel.org/ 5.15]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/10/31/203 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/874493/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.15 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/sid/linux-image-amd64 sid 5.4.12-1]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1050</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1050"/>
		<updated>2021-11-20T20:07:05Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* nft */ nftables 1.0.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-11-18&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.1]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=163724233607275&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/nftables sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/libnftnl11 bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-10-31&lt;br /&gt;
| [https://www.kernel.org/ 5.15]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/10/31/203 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/874493/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.15 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/sid/linux-image-amd64 sid 5.4.12-1]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Limits&amp;diff=1049</id>
		<title>Limits</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Limits&amp;diff=1049"/>
		<updated>2021-11-01T17:46:44Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Declaring and using named limits */ Add optional text comment attribute.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A limit uses a [https://en.wikipedia.org/wiki/Token_bucket token bucket] filter to match packets:&lt;br /&gt;
&lt;br /&gt;
* only until its rate is exceeded; or&lt;br /&gt;
* only after its rate is exceeded, if defined as an &#039;&#039;over&#039;&#039; limit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Rate_limiting_matchings|Anonymous limits]] =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Named limits =&lt;br /&gt;
&lt;br /&gt;
== Declaring and using named limits ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
table inet limit_demo {&lt;br /&gt;
&lt;br /&gt;
   limit lim_400ppm { rate 400/minute ; comment &amp;quot;use to limit incoming icmp&amp;quot; ; }&lt;br /&gt;
   limit lim_1kbps  { rate over 1024 bytes/second burst 512 bytes ; comment &amp;quot;use to limit incoming smtp&amp;quot; ; }&lt;br /&gt;
&lt;br /&gt;
   chain IN { &lt;br /&gt;
      type filter hook input priority filter; policy drop;&lt;br /&gt;
&lt;br /&gt;
      meta l4proto icmp limit name &amp;quot;lim_400ppm&amp;quot; accept&lt;br /&gt;
      tcp dport 25 limit name &amp;quot;lim_1kbps&amp;quot; accept&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above ruleset defines a per-packet named limit &#039;&#039;lim_400ppm&#039;&#039; and a per-byte named limit &#039;&#039;lim_1kbps&#039;&#039;. The rules in input chain &#039;&#039;IN&#039;&#039; use these named limits to:&lt;br /&gt;
* Accept icmp packets, of all icmp types, up to a maximum rate of 400 packets / minute.&lt;br /&gt;
* Accept traffic to port tcp/25 (smtp), up to a maximum rate of 1024 bytes / second. Up to 512 bytes of such traffic arriving faster than this is accepted.&lt;br /&gt;
* Drop all other traffic.&lt;br /&gt;
The optional &#039;&#039;comment&#039;&#039; attribute requires at least nftables 0.9.7 and kernel 5.10.&lt;br /&gt;
&lt;br /&gt;
== Listing named limits ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;nft list [limit | limits]&#039;&#039; (as per below) returns the limit(s) with current byte count.&lt;br /&gt;
&lt;br /&gt;
* List a particular limit:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft list limit [family] [table_name] [limit_name]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* List all limits in a particular table:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft list limits table [family] [table_name]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* List all limits in ruleset:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft list limits&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Quotas&amp;diff=1048</id>
		<title>Quotas</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Quotas&amp;diff=1048"/>
		<updated>2021-11-01T17:42:24Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Declaring and using named quotas */ Add optional comment attribute.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;quota&#039;&#039;:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;defines a threshold number of bytes;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;sets an initial byte count (defaults to 0 bytes if not specified);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;counts the total number of bytes, starting from the initial count; and&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;matches either:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;only &#039;&#039;until&#039;&#039; the byte count exceeds the threshold, or&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;only after the byte count is &#039;&#039;over&#039;&#039; the threshold.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Anonymous quotas =&lt;br /&gt;
&lt;br /&gt;
An anonymous quota is local to the single rule in which it appears. The following example uses an anonymous quota to allow only up to 100 mbytes to port udp/5060:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
table inet anon_quota_demo {&lt;br /&gt;
    chain IN {&lt;br /&gt;
        type filter hook input priority filter; policy drop;&lt;br /&gt;
&lt;br /&gt;
        udp dport 5060 quota until 100 mbytes accept&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Named quotas =&lt;br /&gt;
&lt;br /&gt;
== Declaring and using named quotas ==&lt;br /&gt;
&lt;br /&gt;
You can also declare named quotas, which can be used in multiple rules and maps (only as values, not as keys), as well as reset. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
table inet quota_demo {&lt;br /&gt;
   quota q_until_sip { until 100 mbytes used 0 bytes }&lt;br /&gt;
   quota q_over_http { over  500 mbytes ; comment &amp;quot;cap http (but not https)&amp;quot; ; }&lt;br /&gt;
&lt;br /&gt;
   chain IN { &lt;br /&gt;
      type filter hook input priority filter; policy drop;&lt;br /&gt;
&lt;br /&gt;
      udp dport 5060 quota name &amp;quot;q_until_sip&amp;quot; accept&lt;br /&gt;
      tcp dport 80 quota name &amp;quot;q_over_http&amp;quot; drop&lt;br /&gt;
      tcp dport { 80, 443 } accept&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above ruleset defines a couple named quotas, each with initial count of 0 bytes. The rules in input chain &#039;&#039;IN&#039;&#039; use these named quotas to:&lt;br /&gt;
* accept only up to 100 mbytes total to udp/5060, then drop any additional packets to this (sip) port;&lt;br /&gt;
* accept only up to 500 mbytes total to tcp/80, then drop any additional packets to this (http) port;&lt;br /&gt;
* accept unlimited packets to tcp/443 (https);&lt;br /&gt;
* drop any other packets (note drop policy).&lt;br /&gt;
The optional &#039;&#039;comment&#039;&#039; attribute requires at least nftables 0.9.7 and kernel 5.10.&lt;br /&gt;
&lt;br /&gt;
== Listing named quotas ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;nft list [quota | quotas]&#039;&#039; (as per below) returns the quota(s) with current byte count.&lt;br /&gt;
&lt;br /&gt;
* List a particular quota:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft list quota inet quota_demo q_over_http&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* List all quotas in a particular table:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft list quotas table inet quota_demo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* List all quotas in ruleset:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft list quotas&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resetting named quotas ==&lt;br /&gt;
&lt;br /&gt;
Resetting a quota dumps its current byte count and then resets the byte count to its initial value.&lt;br /&gt;
&lt;br /&gt;
* Reset a particular quota:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft reset quota inet quota_demo q_until_sip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reset all quotas in a particular table:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft reset quotas table inet quota_demo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reset all quotas in ruleset:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft reset quotas&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Resetting quotas does not reset anonymous quotas, see [https://bugzilla.netfilter.org/show_bug.cgi?id=1314 bug #1314].&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Counters&amp;diff=1047</id>
		<title>Counters</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Counters&amp;diff=1047"/>
		<updated>2021-11-01T17:35:49Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Declaring and using named counters */ Add optional comment attribute.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A counter counts both the total number of packets and the total bytes it has seen since it was last reset. With nftables you need to explicitly specify a counter for each rule you want to count.&lt;br /&gt;
&lt;br /&gt;
= Anonymous counters =&lt;br /&gt;
&lt;br /&gt;
An anonymous counter is local to the single rule in which it appears. The following example uses an anonymous counter to count all tcp traffic routed to the local host:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
table ip counter_demo {&lt;br /&gt;
    chain IN {&lt;br /&gt;
        type filter hook input priority filter; policy drop;&lt;br /&gt;
&lt;br /&gt;
        protocol tcp counter&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that the position of the &#039;&#039;counter&#039;&#039; statement within your rule is significant, because nftables evaluates expressions and statements linearly from left to right. If the above rule were written instead:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        counter protocol tcp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then &#039;&#039;&#039;every packet&#039;&#039;&#039; routed to your host (not just tcp packets) will update the counter!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Named counters =&lt;br /&gt;
&lt;br /&gt;
== Declaring and using named counters ==&lt;br /&gt;
&lt;br /&gt;
You can also declare named counters, which can be used in multiple rules, e.g.:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
table inet named_counter_demo {&lt;br /&gt;
&lt;br /&gt;
    counter cnt_http {&lt;br /&gt;
        comment &amp;quot;count both http and https packets&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    counter cnt_smtp {&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    chain IN {&lt;br /&gt;
        type filter hook input priority filter; policy drop;&lt;br /&gt;
&lt;br /&gt;
        tcp dport   25 counter name cnt_smtp&lt;br /&gt;
        tcp dport   80 counter name cnt_http&lt;br /&gt;
        tcp dport  443 counter name cnt_http&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above example defines two counters named &#039;&#039;cnt_http&#039;&#039; and &#039;&#039;cnt_smtp&#039;&#039; and uses them in rules to count http(s) and smtp packets routed to the local host. (This example is contrived to show using a single named counter in multiple rules; the two rules using cnt_http can easily be combined by using an anonymous [[Sets|set]].) The optional &#039;&#039;comment&#039;&#039; attribute requires at least nftables 0.9.7 and kernel 5.10.&lt;br /&gt;
&lt;br /&gt;
== Listing / reading named counters ==&lt;br /&gt;
&lt;br /&gt;
=== Listing named counters from nft command line ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;nft list [counter | counters]&#039;&#039; (as per below) returns the current value(s) of the selected counter(s).&lt;br /&gt;
&lt;br /&gt;
* List a particular counter:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft list counter inet named_counter_demo cnt_http&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* List all counters in a particular table:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft list counters table inet named_counter_demo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* List all counters in ruleset:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft list counters&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reading named counters from Python ===&lt;br /&gt;
&lt;br /&gt;
The following partial ruleset (note the absence of a [[Configuring_chains#Adding_base_chains|base chain]]) defines two named counters &#039;&#039;voip1&#039;&#039; and &#039;&#039;voip2&#039;&#039; and uses them to count VoIP traffic to udp/5160 and udp/5161. The commented-out rules show how to do this in simple fashion, while the 2 final rules in the &#039;&#039;FORWARD&#039;&#039; chain do the same thing using the &#039;&#039;voipcounters&#039;&#039; [[Maps|map]]. The approach using the map becomes increasingly advantageous when more ports (map elements) are added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
define ipvoipbox=192.168.0.8&lt;br /&gt;
&lt;br /&gt;
table ip filter {&lt;br /&gt;
    counter voip1 {&lt;br /&gt;
    }&lt;br /&gt;
    counter voip2 {&lt;br /&gt;
    }&lt;br /&gt;
    map voipcounters {&lt;br /&gt;
        type inet_service : counter&lt;br /&gt;
        elements = {&lt;br /&gt;
            5160 : &amp;quot;voip1&amp;quot;, &lt;br /&gt;
            5161 : &amp;quot;voip2&amp;quot; &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    chain FORWARD {&lt;br /&gt;
        #ip saddr $ipvoipbox udp dport 5160 counter name voip1 comment &amp;quot;counting packets for SIP1&amp;quot;&lt;br /&gt;
        #ip daddr $ipvoipbox udp dport 5160 counter name voip1 comment &amp;quot;counting packets for SIP1&amp;quot;&lt;br /&gt;
        #ip saddr $ipvoipbox udp sport 5161 counter name voip2 comment &amp;quot;counting packets for SIP2&amp;quot;&lt;br /&gt;
        #ip daddr $ipvoipbox udp dport 5161 counter name voip2 comment &amp;quot;counting packets for SIP2&amp;quot;&lt;br /&gt;
        ip saddr $ipvoipbox counter name udp sport map @voipcounters&lt;br /&gt;
        ip daddr $ipvoipbox counter name udp dport map @voipcounters&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can read current counter values from [[Scripting#Using_nftables_from_Python|Python using the libnftables library]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
from nftables import Nftables&lt;br /&gt;
from nftables import json&lt;br /&gt;
&lt;br /&gt;
def getCounter(countername, family=&#039;ip&#039;):&lt;br /&gt;
    nft = Nftables()&lt;br /&gt;
    nft.set_json_output(True)&lt;br /&gt;
    _, output, _ = nft.cmd(f&amp;quot;list counter {family} filter {countername}&amp;quot;)&lt;br /&gt;
    j = json.loads(output)&lt;br /&gt;
    return j[&#039;nftables&#039;][1][&amp;quot;counter&amp;quot;][&amp;quot;bytes&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
print(getCounter(&#039;voip1&#039;), &#039;bytes&#039;)&lt;br /&gt;
print(getCounter(&#039;voip2&#039;), &#039;bytes&#039;) &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resetting named counters ==&lt;br /&gt;
&lt;br /&gt;
Resetting a counter dumps its current packet and byte counts and then resets the counts to their initial values.&lt;br /&gt;
&lt;br /&gt;
* Reset a particular counter:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft reset counter inet named_counter_demo cnt_http&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reset all counters in a particular table:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft reset counters table inet named_counter_demo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reset all counters in ruleset:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% nft reset counters&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Resetting counters does not reset anonymous counters, see [https://bugzilla.netfilter.org/show_bug.cgi?id=1401 bug #1401].&lt;br /&gt;
A workaround to achieve that is to restore the current ruleset with all stateful information dropped:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
% (echo &amp;quot;flush ruleset&amp;quot;; nft --stateless list ruleset) | nft -f -&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Obviously, this drops all state so might have undesired side-effects, like, e.g. resetting quotas.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Sets&amp;diff=1046</id>
		<title>Sets</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Sets&amp;diff=1046"/>
		<updated>2021-11-01T17:26:06Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Named sets */ Add optional set comment attribute, with nft and kernel requirements.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;nftables&#039;&#039; comes with a built-in generic set infrastructure that allows you to use &#039;&#039;&#039;any&#039;&#039;&#039; supported selector to build sets. This infrastructure makes possible the representation of [[maps]] and [[Verdict_Maps_(vmaps) | verdict&amp;amp;nbsp;maps]].&lt;br /&gt;
&lt;br /&gt;
The set elements are internally represented using performance data structures such as hashtables and red-black trees.&lt;br /&gt;
&lt;br /&gt;
= Anonymous sets =&lt;br /&gt;
&lt;br /&gt;
Anonymous sets are those that are:&lt;br /&gt;
&lt;br /&gt;
* Bound to a rule, if the rule is removed, that set is released too.&lt;br /&gt;
* They have no specific name, the kernel internally allocates an identifier.&lt;br /&gt;
* They cannot be updated. So you cannot add and delete elements from it once it is bound to a rule.&lt;br /&gt;
&lt;br /&gt;
The following example shows how to create a simple set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule ip filter output tcp dport { 22, 23 } counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This rule above catches all traffic going to TCP ports 22 and 23, in case of matching the counters are updated.&lt;br /&gt;
&lt;br /&gt;
Eric Leblond in his [https://home.regit.org/2014/01/why-you-will-love-nftables/ Why you will love nftables] article shows a very simple example to compare iptables with nftables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip6tables -A INPUT -p tcp -m multiport --dports 23,80,443 -j ACCEPT&lt;br /&gt;
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -j ACCEPT&lt;br /&gt;
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT&lt;br /&gt;
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT&lt;br /&gt;
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j ACCEPT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which can be expressed in &#039;&#039;nftables&#039;&#039; with a couple of rules that provide a set:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule ip6 filter input tcp dport {telnet, http, https} accept&lt;br /&gt;
% nft add rule ip6 filter input icmpv6 type { nd-neighbor-solicit, echo-request, nd-router-advert, nd-neighbor-advert } accept&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Named sets =&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft add set&#039;&#039; to create a named set. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add set ip filter blackhole { type ipv4_addr\; comment \&amp;quot;drop all packets from these hosts\&amp;quot; \; }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
creates a set named &#039;&#039;blackhole&#039;&#039;. Set names must be 16 characters or less. The optional set &#039;&#039;comment&#039;&#039; attribute requires at least nftables 0.9.7 and kernel 5.10. The &#039;&#039;type&#039;&#039; keyword indicates the data type of elements to be stored in the set. In this case &#039;&#039;blackhole&#039;&#039; stores IPv4 addresses, which you can add using &#039;&#039;nft add element&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add element ip filter blackhole { 192.168.3.4 }&lt;br /&gt;
% nft add element ip filter blackhole { 192.168.1.4, 192.168.1.5 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use named sets from rules, as for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule ip filter input ip saddr @blackhole drop&lt;br /&gt;
% nft add rule ip filter output ip daddr != @blackhole accept&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Named sets can be updated anytime.&lt;br /&gt;
&lt;br /&gt;
== nftables.conf syntax ==&lt;br /&gt;
&lt;br /&gt;
When working with nftables.conf, you can define sets in a number of ways. You can then reference those sets later on using &amp;lt;code&amp;gt;$VARIABLE_NAME&amp;lt;/code&amp;gt; notation.&lt;br /&gt;
&lt;br /&gt;
Here are some examples showing sets defined in one line, spanning multiple lines, and sets referencing other sets. The set is then used in a rule to allow incoming traffic from certain IP ranges.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
define SIMPLE_SET = { 192.168.1.1, 192.168.1.2 }&lt;br /&gt;
&lt;br /&gt;
define CDN_EDGE = {&lt;br /&gt;
    192.168.1.1,&lt;br /&gt;
    192.168.1.2,&lt;br /&gt;
    192.168.1.3,&lt;br /&gt;
    10.0.0.0/8&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
define CDN_MONITORS = {&lt;br /&gt;
    192.168.1.10,&lt;br /&gt;
    192.168.1.20&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
define CDN = {&lt;br /&gt;
    $CDN_EDGE,&lt;br /&gt;
    $CDN_MONITORS&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Allow HTTP(S) from approved IP ranges only&lt;br /&gt;
tcp dport { http, https } ip saddr $CDN accept&lt;br /&gt;
udp dport { http, https } ip saddr $CDN accept&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Named sets specifications =&lt;br /&gt;
&lt;br /&gt;
Sets specifications are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;type&#039;&#039;&#039; or &#039;&#039;&#039;typeof&#039;&#039;&#039;, is obligatory and determines the data type of the set elements.&lt;br /&gt;
&lt;br /&gt;
Supported data types if using the &#039;&#039;&#039;type&#039;&#039;&#039; keyword are:&lt;br /&gt;
** &#039;&#039;ipv4_addr&#039;&#039;: IPv4 address&lt;br /&gt;
** &#039;&#039;ipv6_addr&#039;&#039;: IPv6 address.&lt;br /&gt;
** &#039;&#039;ether_addr&#039;&#039;: Ethernet address.&lt;br /&gt;
** &#039;&#039;inet_proto&#039;&#039;: Inet protocol type.&lt;br /&gt;
** &#039;&#039;inet_service&#039;&#039;: Internet service (read tcp port for example)&lt;br /&gt;
** &#039;&#039;mark&#039;&#039;: Mark type.&lt;br /&gt;
** &#039;&#039;ifname&#039;&#039;: Network interface name (eth0, eth1..)&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;typeof&#039;&#039;&#039; keyword is available since &#039;&#039;&#039;0.9.4&#039;&#039;&#039; and allows you to use a high level expression, then let nftables resolve the base type for you:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
table inet mytable {&lt;br /&gt;
	set s1 {&lt;br /&gt;
		typeof osf name&lt;br /&gt;
		elements = { &amp;quot;Linux&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	set s2 {&lt;br /&gt;
		typeof vlan id&lt;br /&gt;
		elements = { 2, 3, 103 }&lt;br /&gt;
	}&lt;br /&gt;
	set s3 {&lt;br /&gt;
		typeof ip daddr&lt;br /&gt;
		elements = { 1.1.1.1 }&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;timeout&#039;&#039;&#039;, it determines how long an element stays in the set. The time string respects the format: &#039;&#039;&amp;quot;v&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;dv&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;hv&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;mv&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;s&amp;quot;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add table ip filter&lt;br /&gt;
% nft add set ip filter ports {type inet_service \; timeout 3h45s \;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These commands create a table named &#039;&#039;filter&#039;&#039; and add a set named &#039;&#039;ports&#039;&#039; to it, where elements are deleted after 3 hours and 45 seconds of being added.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;flags&#039;&#039;&#039;, the available flags are:&lt;br /&gt;
** &#039;&#039;constant&#039;&#039; - set content may not change while bound&lt;br /&gt;
** &#039;&#039;interval&#039;&#039; - set contains intervals&lt;br /&gt;
** &#039;&#039;timeout&#039;&#039; - elements can be added with a timeout&lt;br /&gt;
&lt;br /&gt;
Multiple flags should be separated by comma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add set ip filter flags_set {type ipv4_addr\; flags constant, interval\;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;gc-interval&#039;&#039;&#039;, stands for garbage collection interval, can only be used if &#039;&#039;timeout&#039;&#039; or &#039;&#039;flags timeout&#039;&#039; are active. The interval follows the same format of &#039;&#039;timeouts&#039;&#039; time string &#039;&#039;&amp;quot;v&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;dv&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;hv&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;mv&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;s&amp;quot;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;elements&#039;&#039;&#039;, initialize the set with some elements in it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add set ip filter daddrs {type ipv4_addr \; flags timeout \; elements={192.168.1.1 timeout 10s, 192.168.1.2 timeout 30s} \;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command creates a set name &#039;&#039;daddrs&#039;&#039; with elements &#039;&#039;192.168.1.1&#039;&#039;, which stays in it for 10s, and &#039;&#039;192.168.1.2&#039;&#039;, which stays for 30s.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;size&#039;&#039;&#039;, limits the maximum number of elements of the set. To create a set with maximum 2 elements type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add set ip filter saddrs {type ipv4_addr \; size 2 \;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;policy&#039;&#039;&#039;, determines set selection policy. Available values are:&lt;br /&gt;
** &#039;&#039;performance&#039;&#039; [default]&lt;br /&gt;
** &#039;&#039;memory&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;counter&#039;&#039;&#039;, (available since version &#039;&#039;&#039;0.9.5&#039;&#039;&#039;) which enables a counter per element:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
table inet mytable {&lt;br /&gt;
	set s {&lt;br /&gt;
		typeof ip saddr&lt;br /&gt;
		counter&lt;br /&gt;
		elements = { 1.1.1.1 counter packets 0 bytes 0, 1.1.1.2 counter packets 0 bytes 0,&lt;br /&gt;
			     1.1.1.3 counter packets 0 bytes 0, 1.1.1.4 counter packets 0 bytes 0 }&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Listing named sets =&lt;br /&gt;
&lt;br /&gt;
You can list the content of a named set via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft list set ip filter myset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Query for element membership in a set = &lt;br /&gt;
&lt;br /&gt;
You can also check if an element exists in the set from its key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft get element ip filter myset { 1.1.1.1 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The example above checks if the IPv4 address 1.1.1.1 exists in the &#039;&#039;myset&#039;&#039; set.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Configuring_chains&amp;diff=1045</id>
		<title>Configuring chains</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Configuring_chains&amp;diff=1045"/>
		<updated>2021-11-01T17:14:40Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Adding base chains */ Add optional text comment parameter to base chain&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As in &#039;&#039;iptables&#039;&#039;, with &#039;&#039;nftables&#039;&#039; you attach your [[Simple rule management|rules]] to chains. Unlike in &#039;&#039;iptables&#039;&#039;, there are no predefined chains like INPUT, OUTPUT, etc. Instead, to filter packets at a particular processing step, you explicitly create a &#039;&#039;&#039;base chain&#039;&#039;&#039; with name of your choosing, and attach it to the appropriate [[Netfilter hooks | Netfilter hook]]. This allows very flexible configurations without slowing Netfilter down with built-in chains not needed by your ruleset.&lt;br /&gt;
&lt;br /&gt;
= Adding base chains =&lt;br /&gt;
&lt;br /&gt;
Base chains are those that are registered into the [[Netfilter hooks]], i.e. these chains see packets flowing through your Linux TCP/IP stack.&lt;br /&gt;
&lt;br /&gt;
The syntax to add a base chain is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add chain [&amp;lt;family&amp;gt;] &amp;lt;table_name&amp;gt; &amp;lt;chain_name&amp;gt; { type &amp;lt;type&amp;gt; hook &amp;lt;hook&amp;gt; priority &amp;lt;value&amp;gt; \; [policy &amp;lt;policy&amp;gt; \;] [comment \&amp;quot;text comment\&amp;quot; \;] } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following example shows how to add a new base chain &#039;&#039;input&#039;&#039; to the &#039;&#039;foo&#039;&#039; table (which must have been previously created):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain ip foo input { type filter hook input priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: &#039;&#039;nft&#039;&#039; re-uses special characters, such as curly braces and the semicolon. If you are running these commands from a shell such as &#039;&#039;bash&#039;&#039;, all the special characters need to be escaped. The simplest way to prevent the shell from attempting to parse the &#039;&#039;nft&#039;&#039; syntax is to quote everything within single quotes.  Alternatively, you can run the command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft -i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and run nft in interactive mode.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;add chain&#039;&#039; command registers the &#039;&#039;input&#039;&#039; chain, that it attached to the &#039;&#039;input&#039;&#039; hook so it will see packets that are addressed to the local processes.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;priority&#039;&#039; is important since it determines the ordering of the chains, thus, if you have several chains in the &#039;&#039;input&#039;&#039; hook, you can decide which one sees packets before another. For example, input chains with priorities -12, -1, 0, 10 would be consulted exactly in that order. It&#039;s possible to give two base chains the same priority, but there is no guaranteed evaluation order of base chains with identical priority that are attached to the same hook location.&lt;br /&gt;
&lt;br /&gt;
If you want to use &#039;&#039;nftables&#039;&#039; to filter traffic for desktop Linux computers, i.e. a computer which does not forward traffic, you can also register the output chain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain ip foo output { type filter hook output priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you are ready to filter incoming (directed to local processes) and outgoing (generated by local processes) traffic.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note&#039;&#039;&#039;: If you don&#039;t include the chain configuration that is specified enclosed in the curly braces, you are creating a regular chain that will not see any packets (similar to &#039;&#039;iptables -N chain-name&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Since nftables 0.5, you can also specify the default policy for base chains as in &#039;&#039;iptables&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain ip foo output { type filter hook output priority 0 ; policy accept; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As in &#039;&#039;iptables&#039;&#039;, the two possible default policies are &#039;&#039;accept&#039;&#039; and &#039;&#039;drop&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When adding a chain on &#039;&#039;&#039;ingress&#039;&#039;&#039; hook, it is mandatory to specify the device where the chain will be attached: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain netdev foo dev0filter { type filter hook ingress device eth0 priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Base chain types ==&lt;br /&gt;
&lt;br /&gt;
The possible chain types are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039;, which is used to filter packets. This is supported by the arp, bridge, ip, ip6 and inet table families.&lt;br /&gt;
* &#039;&#039;&#039;route&#039;&#039;&#039;, which is used to reroute packets if any relevant IP header field or the packet mark is modified. If you are familiar with &#039;&#039;iptables&#039;&#039;, this chain type provides equivalent semantics to the &#039;&#039;mangle&#039;&#039; table but only for the &#039;&#039;output&#039;&#039; hook (for other hooks use type &#039;&#039;filter&#039;&#039; instead). This is supported by the ip, ip6 and inet table families.&lt;br /&gt;
* &#039;&#039;&#039;nat&#039;&#039;&#039;, which is used to perform Networking Address Translation (NAT). Only the first packet of a given flow hits this chain; subsequent packets bypass it. Therefore, never use this chain for filtering. The &#039;&#039;nat&#039;&#039; chain type is supported by the ip, ip6 and inet table families.&lt;br /&gt;
&lt;br /&gt;
== Base chain hooks ==&lt;br /&gt;
&lt;br /&gt;
The possible [[Netfilter_hooks | &#039;&#039;&#039;hooks&#039;&#039;&#039;]] that you can use when you configure your base chain are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ingress&#039;&#039;&#039; (only in &#039;&#039;netdev&#039;&#039; family since Linux kernel 4.2, and &#039;&#039;inet&#039;&#039; family since Linux kernel 5.10): sees packets immediately after they are passed up from the NIC driver, before even prerouting. So you have an alternative to &#039;&#039;tc&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;prerouting&#039;&#039;&#039;: sees all incoming packets, before any routing decision has been made. Packets may be addressed to the local or remote systems.&lt;br /&gt;
* &#039;&#039;&#039;input&#039;&#039;&#039;: sees incoming packets that are addressed to and have now been routed to the local system and processes running there.&lt;br /&gt;
* &#039;&#039;&#039;forward&#039;&#039;&#039;: sees incoming packets that are not addressed to the local system.&lt;br /&gt;
* &#039;&#039;&#039;output&#039;&#039;&#039;: sees packets that originated from processes in the local machine.&lt;br /&gt;
* &#039;&#039;&#039;postrouting&#039;&#039;&#039;: sees all packets after routing, just before they leave the local system.&lt;br /&gt;
&lt;br /&gt;
== Base chain priority ==&lt;br /&gt;
&lt;br /&gt;
Each nftables base chain is assigned a [[Netfilter_hooks#Priority_within_hook|&#039;&#039;&#039;priority&#039;&#039;&#039;]] that defines its ordering among other base chains, flowtables, and Netfilter internal operations at the same hook. For example, a chain on the &#039;&#039;prerouting&#039;&#039; hook with priority &#039;&#039;-300&#039;&#039; will be placed before connection tracking operations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: If a packet is accepted and there is another chain, bearing the same hook type and with a later priority, then the packet will subsequently traverse this other chain. Hence, an accept verdict - be it by way of a rule or the default chain policy - isn&#039;t necessarily final. However, the same is &#039;&#039;not&#039;&#039; true of packets that are subjected to a drop verdict. Instead, drops take immediate effect, with no further rules or chains being evaluated. &lt;br /&gt;
&lt;br /&gt;
The following ruleset demonstrates this potentially surprising distinction in behaviour:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
table inet filter {&lt;br /&gt;
        # This chain is evaluated first due to priority&lt;br /&gt;
        chain services {&lt;br /&gt;
                type filter hook input priority 0; policy accept;&lt;br /&gt;
&lt;br /&gt;
                # If matched, this rule will prevent any further evaluation&lt;br /&gt;
                tcp dport http drop&lt;br /&gt;
&lt;br /&gt;
                # If matched, and despite the accept verdict, the packet proceeds to enter the chain below&lt;br /&gt;
                tcp dport ssh accept&lt;br /&gt;
&lt;br /&gt;
                # Likewise for any packets that get this far and hit the default policy&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        # This chain is evaluated last due to priority&lt;br /&gt;
        chain input {&lt;br /&gt;
                type filter hook input priority 1; policy drop;&lt;br /&gt;
                # All ingress packets end up being dropped here!&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the priority of the &#039;input&#039; chain above were to be changed to -1, the only difference would be that no packets have the opportunity to enter the &#039;services&#039; chain. Either way, this ruleset will result in all ingress packets being dropped.&lt;br /&gt;
&lt;br /&gt;
In summary, packets will traverse all of the chains within the scope of a given hook until they are either dropped or no more base chains exist. An accept verdict is only guaranteed to be final in the case that there is no later chain bearing the same type of hook as the chain that the packet originally entered.&lt;br /&gt;
&lt;br /&gt;
Netfilter&#039;s hook execution mechanism is described in more detail in [http://people.netfilter.org/pablo/docs/login.pdf Pablo&#039;s paper on connection tracking].&lt;br /&gt;
&lt;br /&gt;
== Base chain policy ==&lt;br /&gt;
&lt;br /&gt;
This is the default verdict that will be applied to packets reaching the end of the chain (i.e, no more rules to be evaluated against).&lt;br /&gt;
&lt;br /&gt;
Currently there are 2 policies: &#039;&#039;&#039;accept&#039;&#039;&#039; (default) or &#039;&#039;&#039;drop&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;accept&#039;&#039; verdict means that the packet will keep traversing the network stack (default).&lt;br /&gt;
* The &#039;&#039;drop&#039;&#039; verdict means that the packet is discarded if the packet reaches the end of the base chain.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: If no policy is explicitly selected, the default policy &#039;&#039;&#039;accept&#039;&#039;&#039; will be used.&lt;br /&gt;
&lt;br /&gt;
= Adding regular chains =&lt;br /&gt;
&lt;br /&gt;
You can also create regular chains, analogous to &#039;&#039;iptables&#039;&#039; user-defined chains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
# nft -i&lt;br /&gt;
nft&amp;gt; add chain [family] &amp;lt;table_name&amp;gt; &amp;lt;chain_name&amp;gt; [{ [policy &amp;lt;policy&amp;gt; ;] [comment &amp;quot;text comment about this chain&amp;quot; ;] }]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The chain name is an arbitrary string, with arbitrary case.&lt;br /&gt;
&lt;br /&gt;
Note that no &#039;&#039;hook&#039;&#039; keyword is included when adding a regular chain. Because it is not attached to a Netfilter hook, &#039;&#039;&#039;by itself a regular chain does not see any traffic&#039;&#039;&#039;. But one or more base chains can include rules that [[jumping to chain|jump]] or goto this chain -- following which, the regular chain processes packets in exactly the same way as the calling base chain. It can be very useful to arrange your ruleset into a tree of base and regular chains by using the [[jumping to chain|jump]] and/or goto actions. (Though we&#039;re getting a bit ahead of ourselves, nftables [[Verdict_Maps_(vmaps)|vmaps]] provide an even more powerful way to construct highly-efficient branched rulesets.)&lt;br /&gt;
&lt;br /&gt;
= Deleting chains =&lt;br /&gt;
&lt;br /&gt;
You can delete chains as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft delete chain [family] &amp;lt;table_name&amp;gt; &amp;lt;chain_name&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only condition is that the chain you want to delete needs to be empty, otherwise the kernel will complain that the chain is still in use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft delete chain ip foo input&lt;br /&gt;
&amp;lt;cmdline&amp;gt;:1:1-28: Error: Could not delete chain: Device or resource busy&lt;br /&gt;
delete chain ip foo input&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will have to [[Simple rule management|flush the ruleset]] in that chain before you can remove the chain.&lt;br /&gt;
&lt;br /&gt;
= Flushing chains =&lt;br /&gt;
&lt;br /&gt;
To flush (delete all of the rules in) the chain &#039;&#039;input&#039;&#039; of the &#039;&#039;foo&#039;&#039; table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nft flush chain foo input&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example configuration: Filtering traffic for your standalone computer =&lt;br /&gt;
&lt;br /&gt;
You can create a table with two base chains to define rule to filter traffic coming to and leaving from your computer, asumming IPv4 connectivity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add table ip filter&lt;br /&gt;
% nft &#039;add chain ip filter input { type filter hook input priority 0 ; }&#039;&lt;br /&gt;
% nft &#039;add chain ip filter output { type filter hook output priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, you can start attaching [[Simple rule management|rules]] to these two base chains. Note that you don&#039;t need the &#039;&#039;forward&#039;&#039; chain in this case since this example assumes that you&#039;re configuring nftables to filter traffic for a standalone computer that doesn&#039;t behave as router.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Configuring_chains&amp;diff=1044</id>
		<title>Configuring chains</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Configuring_chains&amp;diff=1044"/>
		<updated>2021-11-01T17:05:13Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Deleting chains */ generalize delete chain statement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As in &#039;&#039;iptables&#039;&#039;, with &#039;&#039;nftables&#039;&#039; you attach your [[Simple rule management|rules]] to chains. Unlike in &#039;&#039;iptables&#039;&#039;, there are no predefined chains like INPUT, OUTPUT, etc. Instead, to filter packets at a particular processing step, you explicitly create a &#039;&#039;&#039;base chain&#039;&#039;&#039; with name of your choosing, and attach it to the appropriate [[Netfilter hooks | Netfilter hook]]. This allows very flexible configurations without slowing Netfilter down with built-in chains not needed by your ruleset.&lt;br /&gt;
&lt;br /&gt;
= Adding base chains =&lt;br /&gt;
&lt;br /&gt;
Base chains are those that are registered into the [[Netfilter hooks]], i.e. these chains see packets flowing through your Linux TCP/IP stack.&lt;br /&gt;
&lt;br /&gt;
The syntax to add a base chain is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add chain [&amp;lt;family&amp;gt;] &amp;lt;table-name&amp;gt; &amp;lt;chain-name&amp;gt; { type &amp;lt;type&amp;gt; hook &amp;lt;hook&amp;gt; priority &amp;lt;value&amp;gt; \; [policy &amp;lt;policy&amp;gt;] } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following example shows how to add a new base chain &#039;&#039;input&#039;&#039; to the &#039;&#039;foo&#039;&#039; table (which must have been previously created):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain ip foo input { type filter hook input priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: &#039;&#039;nft&#039;&#039; re-uses special characters, such as curly braces and the semicolon. If you are running these commands from a shell such as &#039;&#039;bash&#039;&#039;, all the special characters need to be escaped. The simplest way to prevent the shell from attempting to parse the &#039;&#039;nft&#039;&#039; syntax is to quote everything within single quotes.  Alternatively, you can run the command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft -i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and run nft in interactive mode.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;add chain&#039;&#039; command registers the &#039;&#039;input&#039;&#039; chain, that it attached to the &#039;&#039;input&#039;&#039; hook so it will see packets that are addressed to the local processes.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;priority&#039;&#039; is important since it determines the ordering of the chains, thus, if you have several chains in the &#039;&#039;input&#039;&#039; hook, you can decide which one sees packets before another. For example, input chains with priorities -12, -1, 0, 10 would be consulted exactly in that order. It&#039;s possible to give two base chains the same priority, but there is no guaranteed evaluation order of base chains with identical priority that are attached to the same hook location.&lt;br /&gt;
&lt;br /&gt;
If you want to use &#039;&#039;nftables&#039;&#039; to filter traffic for desktop Linux computers, i.e. a computer which does not forward traffic, you can also register the output chain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain ip foo output { type filter hook output priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you are ready to filter incoming (directed to local processes) and outgoing (generated by local processes) traffic.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note&#039;&#039;&#039;: If you don&#039;t include the chain configuration that is specified enclosed in the curly braces, you are creating a regular chain that will not see any packets (similar to &#039;&#039;iptables -N chain-name&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Since nftables 0.5, you can also specify the default policy for base chains as in &#039;&#039;iptables&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain ip foo output { type filter hook output priority 0 ; policy accept; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As in &#039;&#039;iptables&#039;&#039;, the two possible default policies are &#039;&#039;accept&#039;&#039; and &#039;&#039;drop&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When adding a chain on &#039;&#039;&#039;ingress&#039;&#039;&#039; hook, it is mandatory to specify the device where the chain will be attached: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain netdev foo dev0filter { type filter hook ingress device eth0 priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Base chain types ==&lt;br /&gt;
&lt;br /&gt;
The possible chain types are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039;, which is used to filter packets. This is supported by the arp, bridge, ip, ip6 and inet table families.&lt;br /&gt;
* &#039;&#039;&#039;route&#039;&#039;&#039;, which is used to reroute packets if any relevant IP header field or the packet mark is modified. If you are familiar with &#039;&#039;iptables&#039;&#039;, this chain type provides equivalent semantics to the &#039;&#039;mangle&#039;&#039; table but only for the &#039;&#039;output&#039;&#039; hook (for other hooks use type &#039;&#039;filter&#039;&#039; instead). This is supported by the ip, ip6 and inet table families.&lt;br /&gt;
* &#039;&#039;&#039;nat&#039;&#039;&#039;, which is used to perform Networking Address Translation (NAT). Only the first packet of a given flow hits this chain; subsequent packets bypass it. Therefore, never use this chain for filtering. The &#039;&#039;nat&#039;&#039; chain type is supported by the ip, ip6 and inet table families.&lt;br /&gt;
&lt;br /&gt;
== Base chain hooks ==&lt;br /&gt;
&lt;br /&gt;
The possible [[Netfilter_hooks | &#039;&#039;&#039;hooks&#039;&#039;&#039;]] that you can use when you configure your base chain are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ingress&#039;&#039;&#039; (only in &#039;&#039;netdev&#039;&#039; family since Linux kernel 4.2, and &#039;&#039;inet&#039;&#039; family since Linux kernel 5.10): sees packets immediately after they are passed up from the NIC driver, before even prerouting. So you have an alternative to &#039;&#039;tc&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;prerouting&#039;&#039;&#039;: sees all incoming packets, before any routing decision has been made. Packets may be addressed to the local or remote systems.&lt;br /&gt;
* &#039;&#039;&#039;input&#039;&#039;&#039;: sees incoming packets that are addressed to and have now been routed to the local system and processes running there.&lt;br /&gt;
* &#039;&#039;&#039;forward&#039;&#039;&#039;: sees incoming packets that are not addressed to the local system.&lt;br /&gt;
* &#039;&#039;&#039;output&#039;&#039;&#039;: sees packets that originated from processes in the local machine.&lt;br /&gt;
* &#039;&#039;&#039;postrouting&#039;&#039;&#039;: sees all packets after routing, just before they leave the local system.&lt;br /&gt;
&lt;br /&gt;
== Base chain priority ==&lt;br /&gt;
&lt;br /&gt;
Each nftables base chain is assigned a [[Netfilter_hooks#Priority_within_hook|&#039;&#039;&#039;priority&#039;&#039;&#039;]] that defines its ordering among other base chains, flowtables, and Netfilter internal operations at the same hook. For example, a chain on the &#039;&#039;prerouting&#039;&#039; hook with priority &#039;&#039;-300&#039;&#039; will be placed before connection tracking operations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: If a packet is accepted and there is another chain, bearing the same hook type and with a later priority, then the packet will subsequently traverse this other chain. Hence, an accept verdict - be it by way of a rule or the default chain policy - isn&#039;t necessarily final. However, the same is &#039;&#039;not&#039;&#039; true of packets that are subjected to a drop verdict. Instead, drops take immediate effect, with no further rules or chains being evaluated. &lt;br /&gt;
&lt;br /&gt;
The following ruleset demonstrates this potentially surprising distinction in behaviour:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
table inet filter {&lt;br /&gt;
        # This chain is evaluated first due to priority&lt;br /&gt;
        chain services {&lt;br /&gt;
                type filter hook input priority 0; policy accept;&lt;br /&gt;
&lt;br /&gt;
                # If matched, this rule will prevent any further evaluation&lt;br /&gt;
                tcp dport http drop&lt;br /&gt;
&lt;br /&gt;
                # If matched, and despite the accept verdict, the packet proceeds to enter the chain below&lt;br /&gt;
                tcp dport ssh accept&lt;br /&gt;
&lt;br /&gt;
                # Likewise for any packets that get this far and hit the default policy&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        # This chain is evaluated last due to priority&lt;br /&gt;
        chain input {&lt;br /&gt;
                type filter hook input priority 1; policy drop;&lt;br /&gt;
                # All ingress packets end up being dropped here!&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the priority of the &#039;input&#039; chain above were to be changed to -1, the only difference would be that no packets have the opportunity to enter the &#039;services&#039; chain. Either way, this ruleset will result in all ingress packets being dropped.&lt;br /&gt;
&lt;br /&gt;
In summary, packets will traverse all of the chains within the scope of a given hook until they are either dropped or no more base chains exist. An accept verdict is only guaranteed to be final in the case that there is no later chain bearing the same type of hook as the chain that the packet originally entered.&lt;br /&gt;
&lt;br /&gt;
Netfilter&#039;s hook execution mechanism is described in more detail in [http://people.netfilter.org/pablo/docs/login.pdf Pablo&#039;s paper on connection tracking].&lt;br /&gt;
&lt;br /&gt;
== Base chain policy ==&lt;br /&gt;
&lt;br /&gt;
This is the default verdict that will be applied to packets reaching the end of the chain (i.e, no more rules to be evaluated against).&lt;br /&gt;
&lt;br /&gt;
Currently there are 2 policies: &#039;&#039;&#039;accept&#039;&#039;&#039; (default) or &#039;&#039;&#039;drop&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;accept&#039;&#039; verdict means that the packet will keep traversing the network stack (default).&lt;br /&gt;
* The &#039;&#039;drop&#039;&#039; verdict means that the packet is discarded if the packet reaches the end of the base chain.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: If no policy is explicitly selected, the default policy &#039;&#039;&#039;accept&#039;&#039;&#039; will be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Adding regular chains =&lt;br /&gt;
&lt;br /&gt;
You can also create regular chains, analogous to &#039;&#039;iptables&#039;&#039; user-defined chains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
# nft -i&lt;br /&gt;
nft&amp;gt; add chain [family] &amp;lt;table_name&amp;gt; &amp;lt;chain_name&amp;gt; [{ [policy &amp;lt;policy&amp;gt; ;] [comment &amp;quot;text comment about this chain&amp;quot; ;] }]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The chain name is an arbitrary string, with arbitrary case.&lt;br /&gt;
&lt;br /&gt;
Note that no &#039;&#039;hook&#039;&#039; keyword is included when adding a regular chain. Because it is not attached to a Netfilter hook, &#039;&#039;&#039;by itself a regular chain does not see any traffic&#039;&#039;&#039;. But one or more base chains can include rules that [[jumping to chain|jump]] or goto this chain -- following which, the regular chain processes packets in exactly the same way as the calling base chain. It can be very useful to arrange your ruleset into a tree of base and regular chains by using the [[jumping to chain|jump]] and/or goto actions. (Though we&#039;re getting a bit ahead of ourselves, nftables [[Verdict_Maps_(vmaps)|vmaps]] provide an even more powerful way to construct highly-efficient branched rulesets.)&lt;br /&gt;
&lt;br /&gt;
= Deleting chains =&lt;br /&gt;
&lt;br /&gt;
You can delete chains as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft delete chain [family] &amp;lt;table_name&amp;gt; &amp;lt;chain_name&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only condition is that the chain you want to delete needs to be empty, otherwise the kernel will complain that the chain is still in use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft delete chain ip foo input&lt;br /&gt;
&amp;lt;cmdline&amp;gt;:1:1-28: Error: Could not delete chain: Device or resource busy&lt;br /&gt;
delete chain ip foo input&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will have to [[Simple rule management|flush the ruleset]] in that chain before you can remove the chain.&lt;br /&gt;
&lt;br /&gt;
= Flushing chains =&lt;br /&gt;
&lt;br /&gt;
To flush (delete all of the rules in) the chain &#039;&#039;input&#039;&#039; of the &#039;&#039;foo&#039;&#039; table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nft flush chain foo input&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example configuration: Filtering traffic for your standalone computer =&lt;br /&gt;
&lt;br /&gt;
You can create a table with two base chains to define rule to filter traffic coming to and leaving from your computer, asumming IPv4 connectivity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add table ip filter&lt;br /&gt;
% nft &#039;add chain ip filter input { type filter hook input priority 0 ; }&#039;&lt;br /&gt;
% nft &#039;add chain ip filter output { type filter hook output priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, you can start attaching [[Simple rule management|rules]] to these two base chains. Note that you don&#039;t need the &#039;&#039;forward&#039;&#039; chain in this case since this example assumes that you&#039;re configuring nftables to filter traffic for a standalone computer that doesn&#039;t behave as router.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Configuring_chains&amp;diff=1043</id>
		<title>Configuring chains</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Configuring_chains&amp;diff=1043"/>
		<updated>2021-11-01T17:02:14Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Adding regular chains */ Show optional family, policy and comment attributes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As in &#039;&#039;iptables&#039;&#039;, with &#039;&#039;nftables&#039;&#039; you attach your [[Simple rule management|rules]] to chains. Unlike in &#039;&#039;iptables&#039;&#039;, there are no predefined chains like INPUT, OUTPUT, etc. Instead, to filter packets at a particular processing step, you explicitly create a &#039;&#039;&#039;base chain&#039;&#039;&#039; with name of your choosing, and attach it to the appropriate [[Netfilter hooks | Netfilter hook]]. This allows very flexible configurations without slowing Netfilter down with built-in chains not needed by your ruleset.&lt;br /&gt;
&lt;br /&gt;
= Adding base chains =&lt;br /&gt;
&lt;br /&gt;
Base chains are those that are registered into the [[Netfilter hooks]], i.e. these chains see packets flowing through your Linux TCP/IP stack.&lt;br /&gt;
&lt;br /&gt;
The syntax to add a base chain is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add chain [&amp;lt;family&amp;gt;] &amp;lt;table-name&amp;gt; &amp;lt;chain-name&amp;gt; { type &amp;lt;type&amp;gt; hook &amp;lt;hook&amp;gt; priority &amp;lt;value&amp;gt; \; [policy &amp;lt;policy&amp;gt;] } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following example shows how to add a new base chain &#039;&#039;input&#039;&#039; to the &#039;&#039;foo&#039;&#039; table (which must have been previously created):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain ip foo input { type filter hook input priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: &#039;&#039;nft&#039;&#039; re-uses special characters, such as curly braces and the semicolon. If you are running these commands from a shell such as &#039;&#039;bash&#039;&#039;, all the special characters need to be escaped. The simplest way to prevent the shell from attempting to parse the &#039;&#039;nft&#039;&#039; syntax is to quote everything within single quotes.  Alternatively, you can run the command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft -i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and run nft in interactive mode.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;add chain&#039;&#039; command registers the &#039;&#039;input&#039;&#039; chain, that it attached to the &#039;&#039;input&#039;&#039; hook so it will see packets that are addressed to the local processes.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;priority&#039;&#039; is important since it determines the ordering of the chains, thus, if you have several chains in the &#039;&#039;input&#039;&#039; hook, you can decide which one sees packets before another. For example, input chains with priorities -12, -1, 0, 10 would be consulted exactly in that order. It&#039;s possible to give two base chains the same priority, but there is no guaranteed evaluation order of base chains with identical priority that are attached to the same hook location.&lt;br /&gt;
&lt;br /&gt;
If you want to use &#039;&#039;nftables&#039;&#039; to filter traffic for desktop Linux computers, i.e. a computer which does not forward traffic, you can also register the output chain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain ip foo output { type filter hook output priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you are ready to filter incoming (directed to local processes) and outgoing (generated by local processes) traffic.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note&#039;&#039;&#039;: If you don&#039;t include the chain configuration that is specified enclosed in the curly braces, you are creating a regular chain that will not see any packets (similar to &#039;&#039;iptables -N chain-name&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Since nftables 0.5, you can also specify the default policy for base chains as in &#039;&#039;iptables&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain ip foo output { type filter hook output priority 0 ; policy accept; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As in &#039;&#039;iptables&#039;&#039;, the two possible default policies are &#039;&#039;accept&#039;&#039; and &#039;&#039;drop&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When adding a chain on &#039;&#039;&#039;ingress&#039;&#039;&#039; hook, it is mandatory to specify the device where the chain will be attached: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft &#039;add chain netdev foo dev0filter { type filter hook ingress device eth0 priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Base chain types ==&lt;br /&gt;
&lt;br /&gt;
The possible chain types are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039;, which is used to filter packets. This is supported by the arp, bridge, ip, ip6 and inet table families.&lt;br /&gt;
* &#039;&#039;&#039;route&#039;&#039;&#039;, which is used to reroute packets if any relevant IP header field or the packet mark is modified. If you are familiar with &#039;&#039;iptables&#039;&#039;, this chain type provides equivalent semantics to the &#039;&#039;mangle&#039;&#039; table but only for the &#039;&#039;output&#039;&#039; hook (for other hooks use type &#039;&#039;filter&#039;&#039; instead). This is supported by the ip, ip6 and inet table families.&lt;br /&gt;
* &#039;&#039;&#039;nat&#039;&#039;&#039;, which is used to perform Networking Address Translation (NAT). Only the first packet of a given flow hits this chain; subsequent packets bypass it. Therefore, never use this chain for filtering. The &#039;&#039;nat&#039;&#039; chain type is supported by the ip, ip6 and inet table families.&lt;br /&gt;
&lt;br /&gt;
== Base chain hooks ==&lt;br /&gt;
&lt;br /&gt;
The possible [[Netfilter_hooks | &#039;&#039;&#039;hooks&#039;&#039;&#039;]] that you can use when you configure your base chain are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ingress&#039;&#039;&#039; (only in &#039;&#039;netdev&#039;&#039; family since Linux kernel 4.2, and &#039;&#039;inet&#039;&#039; family since Linux kernel 5.10): sees packets immediately after they are passed up from the NIC driver, before even prerouting. So you have an alternative to &#039;&#039;tc&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;prerouting&#039;&#039;&#039;: sees all incoming packets, before any routing decision has been made. Packets may be addressed to the local or remote systems.&lt;br /&gt;
* &#039;&#039;&#039;input&#039;&#039;&#039;: sees incoming packets that are addressed to and have now been routed to the local system and processes running there.&lt;br /&gt;
* &#039;&#039;&#039;forward&#039;&#039;&#039;: sees incoming packets that are not addressed to the local system.&lt;br /&gt;
* &#039;&#039;&#039;output&#039;&#039;&#039;: sees packets that originated from processes in the local machine.&lt;br /&gt;
* &#039;&#039;&#039;postrouting&#039;&#039;&#039;: sees all packets after routing, just before they leave the local system.&lt;br /&gt;
&lt;br /&gt;
== Base chain priority ==&lt;br /&gt;
&lt;br /&gt;
Each nftables base chain is assigned a [[Netfilter_hooks#Priority_within_hook|&#039;&#039;&#039;priority&#039;&#039;&#039;]] that defines its ordering among other base chains, flowtables, and Netfilter internal operations at the same hook. For example, a chain on the &#039;&#039;prerouting&#039;&#039; hook with priority &#039;&#039;-300&#039;&#039; will be placed before connection tracking operations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: If a packet is accepted and there is another chain, bearing the same hook type and with a later priority, then the packet will subsequently traverse this other chain. Hence, an accept verdict - be it by way of a rule or the default chain policy - isn&#039;t necessarily final. However, the same is &#039;&#039;not&#039;&#039; true of packets that are subjected to a drop verdict. Instead, drops take immediate effect, with no further rules or chains being evaluated. &lt;br /&gt;
&lt;br /&gt;
The following ruleset demonstrates this potentially surprising distinction in behaviour:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
table inet filter {&lt;br /&gt;
        # This chain is evaluated first due to priority&lt;br /&gt;
        chain services {&lt;br /&gt;
                type filter hook input priority 0; policy accept;&lt;br /&gt;
&lt;br /&gt;
                # If matched, this rule will prevent any further evaluation&lt;br /&gt;
                tcp dport http drop&lt;br /&gt;
&lt;br /&gt;
                # If matched, and despite the accept verdict, the packet proceeds to enter the chain below&lt;br /&gt;
                tcp dport ssh accept&lt;br /&gt;
&lt;br /&gt;
                # Likewise for any packets that get this far and hit the default policy&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        # This chain is evaluated last due to priority&lt;br /&gt;
        chain input {&lt;br /&gt;
                type filter hook input priority 1; policy drop;&lt;br /&gt;
                # All ingress packets end up being dropped here!&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the priority of the &#039;input&#039; chain above were to be changed to -1, the only difference would be that no packets have the opportunity to enter the &#039;services&#039; chain. Either way, this ruleset will result in all ingress packets being dropped.&lt;br /&gt;
&lt;br /&gt;
In summary, packets will traverse all of the chains within the scope of a given hook until they are either dropped or no more base chains exist. An accept verdict is only guaranteed to be final in the case that there is no later chain bearing the same type of hook as the chain that the packet originally entered.&lt;br /&gt;
&lt;br /&gt;
Netfilter&#039;s hook execution mechanism is described in more detail in [http://people.netfilter.org/pablo/docs/login.pdf Pablo&#039;s paper on connection tracking].&lt;br /&gt;
&lt;br /&gt;
== Base chain policy ==&lt;br /&gt;
&lt;br /&gt;
This is the default verdict that will be applied to packets reaching the end of the chain (i.e, no more rules to be evaluated against).&lt;br /&gt;
&lt;br /&gt;
Currently there are 2 policies: &#039;&#039;&#039;accept&#039;&#039;&#039; (default) or &#039;&#039;&#039;drop&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;accept&#039;&#039; verdict means that the packet will keep traversing the network stack (default).&lt;br /&gt;
* The &#039;&#039;drop&#039;&#039; verdict means that the packet is discarded if the packet reaches the end of the base chain.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: If no policy is explicitly selected, the default policy &#039;&#039;&#039;accept&#039;&#039;&#039; will be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Adding regular chains =&lt;br /&gt;
&lt;br /&gt;
You can also create regular chains, analogous to &#039;&#039;iptables&#039;&#039; user-defined chains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
# nft -i&lt;br /&gt;
nft&amp;gt; add chain [family] &amp;lt;table_name&amp;gt; &amp;lt;chain_name&amp;gt; [{ [policy &amp;lt;policy&amp;gt; ;] [comment &amp;quot;text comment about this chain&amp;quot; ;] }]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The chain name is an arbitrary string, with arbitrary case.&lt;br /&gt;
&lt;br /&gt;
Note that no &#039;&#039;hook&#039;&#039; keyword is included when adding a regular chain. Because it is not attached to a Netfilter hook, &#039;&#039;&#039;by itself a regular chain does not see any traffic&#039;&#039;&#039;. But one or more base chains can include rules that [[jumping to chain|jump]] or goto this chain -- following which, the regular chain processes packets in exactly the same way as the calling base chain. It can be very useful to arrange your ruleset into a tree of base and regular chains by using the [[jumping to chain|jump]] and/or goto actions. (Though we&#039;re getting a bit ahead of ourselves, nftables [[Verdict_Maps_(vmaps)|vmaps]] provide an even more powerful way to construct highly-efficient branched rulesets.)&lt;br /&gt;
&lt;br /&gt;
= Deleting chains =&lt;br /&gt;
&lt;br /&gt;
You can delete chains as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft delete chain ip foo input&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only condition is that the chain you want to delete needs to be empty, otherwise the kernel will complain that the chain is still in use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft delete chain ip foo input&lt;br /&gt;
&amp;lt;cmdline&amp;gt;:1:1-28: Error: Could not delete chain: Device or resource busy&lt;br /&gt;
delete chain ip foo input&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will have to [[Simple rule management|flush the ruleset]] in that chain before you can remove the chain.&lt;br /&gt;
&lt;br /&gt;
= Flushing chains =&lt;br /&gt;
&lt;br /&gt;
To flush (delete all of the rules in) the chain &#039;&#039;input&#039;&#039; of the &#039;&#039;foo&#039;&#039; table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nft flush chain foo input&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example configuration: Filtering traffic for your standalone computer =&lt;br /&gt;
&lt;br /&gt;
You can create a table with two base chains to define rule to filter traffic coming to and leaving from your computer, asumming IPv4 connectivity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add table ip filter&lt;br /&gt;
% nft &#039;add chain ip filter input { type filter hook input priority 0 ; }&#039;&lt;br /&gt;
% nft &#039;add chain ip filter output { type filter hook output priority 0 ; }&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, you can start attaching [[Simple rule management|rules]] to these two base chains. Note that you don&#039;t need the &#039;&#039;forward&#039;&#039; chain in this case since this example assumes that you&#039;re configuring nftables to filter traffic for a standalone computer that doesn&#039;t behave as router.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1042</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1042"/>
		<updated>2021-11-01T15:59:20Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Linux kernel */ kernel 5.15 released&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/nftables bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/libnftnl11 bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-10-31&lt;br /&gt;
| [https://www.kernel.org/ 5.15]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/10/31/203 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/874493/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.15 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/sid/linux-image-amd64 sid 5.4.12-1]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1038</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1038"/>
		<updated>2021-09-15T08:52:42Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Linux kernel */ Kernel 5.14 now in experimental&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/nftables bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/libnftnl11 bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.14]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/8/29/382 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/867706/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.14 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1037</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1037"/>
		<updated>2021-09-13T15:24:28Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* nft */ nft 1.0.0 now in bookworm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/nftables bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/libnftnl11 bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.14]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/8/29/382 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/867706/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.14 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 5.13 experimental as of 2021-09-07]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1036</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1036"/>
		<updated>2021-09-13T15:23:19Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* libnftnl */ libnftnl 1.2.0 now in bookworm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/nftables sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bookworm/libnftnl11 bookworm]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.14]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/8/29/382 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/867706/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.14 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 5.13 experimental as of 2021-09-07]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1035</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1035"/>
		<updated>2021-09-07T22:01:42Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Linux kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/nftables sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/libnftnl11 sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.14]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/8/29/382 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/867706/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.14 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 5.13 experimental as of 2021-09-07]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1034</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1034"/>
		<updated>2021-09-07T22:00:55Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* nft */ nft 1.0.0 in sid&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/nftables sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/libnftnl11 sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.14]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/8/29/382 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/867706/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.14 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 5.13 experimental as of 2021-08-30]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1030</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1030"/>
		<updated>2021-09-04T21:32:41Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* libnftnl */ libnftnl 1.2.0 graduated to sid&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/nftables experimental, 0.9.9 as of 2021-08-26]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/sid/libnftnl11 sid]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.14]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/8/29/382 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/867706/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.14 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 5.13 experimental as of 2021-08-30]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1024</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1024"/>
		<updated>2021-08-30T14:10:19Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Linux kernel */ Kernel 5.14&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/nftables experimental, 0.9.9 as of 2021-08-26]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/libnftnl11 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.14]&lt;br /&gt;
| &lt;br /&gt;
* [https://lkml.org/lkml/2021/8/29/382 announcement]&lt;br /&gt;
* [https://lwn.net/Articles/867706/ LWN.net]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.14 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 5.13 experimental as of 2021-08-30]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1023</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1023"/>
		<updated>2021-08-30T13:59:00Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Added Independent media coverage section.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/nftables experimental, 0.9.9 as of 2021-08-26]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/libnftnl11 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.13]&lt;br /&gt;
| &lt;br /&gt;
* [https://lore.kernel.org/lkml/CAHk-=wj7E9iTGHbqfgtaTAM09WrVzwXjda2_D59MT8D_1=54Rg@mail.gmail.com/ announcement]&lt;br /&gt;
* [https://lwn.net/Articles/861145/ lwn]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.13 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;br /&gt;
&lt;br /&gt;
== Independent media coverage ==&lt;br /&gt;
* [https://lwn.net/SubscriberLink/867185/31fb43f2f1ff4641/ Nftables reaches 1.0], Jonathan Corbet, [https://lwn.net/ LWN.net], 2021-08-27.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=List_of_updates_in_the_nft_command_line_tool&amp;diff=1022</id>
		<title>List of updates in the nft command line tool</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=List_of_updates_in_the_nft_command_line_tool&amp;diff=1022"/>
		<updated>2021-08-27T21:42:48Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Clearer column headers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains links to nftables release announcements. In addition to a summary of bug fixes and new features, each announcement typically includes examples of how to use new features.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Announcement&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Comments&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 nftables 1.0.0]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162197756905358&amp;amp;w=2 nftables 0.9.9]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-01-15&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=161074809318720&amp;amp;w=2 nftables 0.9.8]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-10-27&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=160379555303808&amp;amp;w=2 nftables 0.9.7]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-06-15&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=159225380419197&amp;amp;w=2 nftables 0.9.6]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-06-06&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=159144250132190&amp;amp;w=2 nftables 0.9.5]&lt;br /&gt;
| This release broke &#039;&#039;vmap&#039;&#039; support, this is fixed in 0.9.6.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158575148505527&amp;amp;w=2 nftables 0.9.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-12-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=157532146917292&amp;amp;w=2 nftables 0.9.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-08-19&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=156621590113089&amp;amp;w=2 nftables 0.9.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-06-24&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=156139496810281&amp;amp;w=2 nftables 0.9.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-06-08&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152849974510956&amp;amp;w=2 nftables 0.9.0]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-05-10&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152595594524056&amp;amp;w=2 nftables 0.8.5]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-05-01&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152521206028754&amp;amp;w=2 nftables 0.8.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-03-03&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152009279821556&amp;amp;w=2 nftables 0.8.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-02-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=151759567102838&amp;amp;w=2 nftables 0.8.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-01-16&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=151610774011377&amp;amp;w=2 nftables 0.8.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2017-10-12&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=150785219810541&amp;amp;w=2 nftables 0.8]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2016-12-20&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=148226682025890&amp;amp;w=2 nftables 0.7]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2016-06-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=146488681521497&amp;amp;w=2 nftables 0.6]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2015-09-17&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=144251853500774&amp;amp;w=2 nftables 0.5]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-12-16&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=141869063212230&amp;amp;w=2 nftables 0.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-06-25&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=140371155009356&amp;amp;w=2 nftables 0.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-04-14&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=139747559724664&amp;amp;w=2 nftables 0.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-01-20&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=139022350623824&amp;amp;w=2 nftables 0.099]&lt;br /&gt;
| The first released intended for users.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2009-03-18&lt;br /&gt;
| [https://marc.info/?l=netfilter-devel&amp;amp;m=123735060518576&amp;amp;w=2 nftables first alpha]&lt;br /&gt;
| First full public release, alpha quality not meant for users.&lt;br /&gt;
Release notes include design summary, with differences from iptables. &lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=1021</id>
		<title>Matching packet headers</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=1021"/>
		<updated>2021-08-27T18:20:52Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Matching UDP/TCP headers in the same rule */ link man page for raw payload expression&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;nft&#039;&#039; command line utility supports the following layer 4 protocols: AH, ESP, UDP, UDPlite, TCP, DCCP, SCTP and IPComp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ethernet headers =&lt;br /&gt;
&lt;br /&gt;
You can match packets on [https://en.wikipedia.org/wiki/Ethernet ethernet] source or destination address or on [https://en.wikipedia.org/wiki/EtherType EtherType]:&lt;br /&gt;
* &#039;&#039;ether&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr&#039;&#039;} &amp;amp;laquo;[[Data_types#Ethernet_types|ether_addr]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;ether type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo;&lt;br /&gt;
&lt;br /&gt;
If you want to match ethernet traffic whose destination address is ff:ff:ff:ff:ff:ff, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ether daddr ff:ff:ff:ff:ff:ff counter &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also match packets on [https://en.wikipedia.org/wiki/IEEE_802.1Q IEEE 802.1Q] VLAN fields, if present:&lt;br /&gt;
* &#039;&#039;vlan type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo; - always &#039;&#039;vlan&#039;&#039; for 802.1Q&lt;br /&gt;
* &#039;&#039;vlan id&#039;&#039; &amp;amp;laquo;12-bit integer&amp;amp;raquo; - match VID, the VLAN ID&lt;br /&gt;
* &#039;&#039;vlan cfi&#039;&#039; &amp;amp;laquo;1-bit integer&amp;amp;raquo; - match DEI, Drop Eligible Indicator (formerly CFI, Canonical Format Indicator) &lt;br /&gt;
* &#039;&#039;vlan pcp&#039;&#039; &amp;amp;laquo;3-bit integer&amp;amp;raquo; - match [https://en.wikipedia.org/wiki/IEEE_P802.1p IEEE P802.1p PCP, Priority Code Point]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do not forget that the [https://en.wikipedia.org/wiki/Link_layer layer 2] header information is only available in the input path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ARP headers =&lt;br /&gt;
&lt;br /&gt;
You can match [https://en.wikipedia.org/wiki/Address_Resolution_Protocol ARP] headers:&lt;br /&gt;
* &#039;&#039;arp htype&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|16-bit integer HTYPE]]&amp;amp;raquo; - match hardware link protocol type (1 for ethernet)&lt;br /&gt;
* &#039;&#039;arp ptype&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo; - match EtherType&lt;br /&gt;
* &#039;&#039;arp hlen&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|8-bit integer HLEN]]&amp;amp;raquo; - match hardware address length in octets (6 for ethernet)&lt;br /&gt;
* &#039;&#039;arp plen&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|8-bit integer PLEN]]&amp;amp;raquo; - match internetwork protocol address length in octets (4 for IPv4)&lt;br /&gt;
* &#039;&#039;arp operation&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|arp_op]]&amp;amp;raquo; - match ARP operation&lt;br /&gt;
* &#039;&#039;arp&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr &#039;&#039;} &#039;&#039;ether&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_addr]]&amp;amp;raquo; - &#039;&#039;saddr&#039;&#039; matches SHA, Sender Hardware Address; &#039;&#039;daddr&#039;&#039; matches THA, Target Hardware Address &lt;br /&gt;
* &#039;&#039;arp&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr &#039;&#039;} &#039;&#039;ip&#039;&#039; &amp;amp;laquo;[[Data_types#IP_types|ipv4_addr]]&amp;amp;raquo; - &#039;&#039;saddr&#039;&#039; matches SPA, Sender Protocol Address; &#039;&#039;daddr&#039;&#039; matches TPA, Target Protocol Address&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv4 headers =&lt;br /&gt;
&lt;br /&gt;
You can also match traffic based on the IPv4 source and destination, the following example shows how to account all traffic that comes from 192.168.1.100 and that is addressed to 192.168.1.1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip saddr 192.168.1.100 ip daddr 192.168.1.1 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that, since the rule is attached to the input chain, your local machine needs to use the 192.168.1.1 address, otherwise you won&#039;t see any matching ;-).&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;protocol&#039;&#039; keyword:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input protocol tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ICMP traffic =&lt;br /&gt;
&lt;br /&gt;
You can drop all [https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol ICMP] echo requests (popularly known as &#039;&#039;pings&#039;&#039;) via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input icmp type echo-request counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft describe&#039;&#039; to find &#039;&#039;nft&#039;&#039;&#039;s available &#039;&#039;icmp type&#039;&#039; keywords:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp type&lt;br /&gt;
payload expression, datatype icmp_type (ICMP type) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        echo-reply                                         0&lt;br /&gt;
        destination-unreachable                            3&lt;br /&gt;
        source-quench                                      4&lt;br /&gt;
        redirect                                           5&lt;br /&gt;
        echo-request                                       8&lt;br /&gt;
        router-advertisement                               9&lt;br /&gt;
        router-solicitation                               10&lt;br /&gt;
        time-exceeded                                     11&lt;br /&gt;
        parameter-problem                                 12&lt;br /&gt;
        timestamp-request                                 13&lt;br /&gt;
        timestamp-reply                                   14&lt;br /&gt;
        info-request                                      15&lt;br /&gt;
        info-reply                                        16&lt;br /&gt;
        address-mask-request                              17&lt;br /&gt;
        address-mask-reply                                18&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also be more specific by matching a single icmp code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp code&lt;br /&gt;
payload expression, datatype icmp_code (icmp code) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        net-unreachable                                    0&lt;br /&gt;
        host-unreachable                                   1&lt;br /&gt;
        prot-unreachable                                   2&lt;br /&gt;
        port-unreachable                                   3&lt;br /&gt;
        net-prohibited                                     9&lt;br /&gt;
        host-prohibited                                   10&lt;br /&gt;
        admin-prohibited                                  13&lt;br /&gt;
        frag-needed                                        4&lt;br /&gt;
&lt;br /&gt;
% nft add rule filter output icmp code frag-needed counter accept&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv6 headers =&lt;br /&gt;
&lt;br /&gt;
If you want to account IPv6 traffic that is addressed to &#039;&#039;abcd::100&#039;&#039;, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip6 daddr abcd::100 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;nexthdr&#039;&#039; keyword:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip6 nexthdr tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do not forget to create an &#039;&#039;ip6&#039;&#039; [[Configuring tables|table]] and register the corresponding [[Configuring chains|chains]] to run the examples.&lt;br /&gt;
&lt;br /&gt;
NOTE: the syntax mixing IPv6/IPv4 notation is not supported yet: &#039;::ffff:192.168.1.0&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching transport protocol =&lt;br /&gt;
&lt;br /&gt;
The following rule shows how to match any kind of &#039;&#039;TCP&#039;&#039; traffic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip protocol tcp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are on the &#039;&#039;inet&#039;&#039; family, then use &#039;&#039;meta l4proto&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule inet filter output meta l4proto tcp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows you to match on the transport protocol regardless the packet is either IPv4 or IPv6.&lt;br /&gt;
&lt;br /&gt;
= Matching TCP/UDP/UDPlite traffic =&lt;br /&gt;
&lt;br /&gt;
The following examples show how to drop all tcp traffic for low TCP ports (1-1024):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp dport 1-1024 counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this rule is using an [[intervals|interval]] (from 1 to 1024).&lt;br /&gt;
&lt;br /&gt;
To match on TCP flags, you need to use a binary operation. For example, to count packets that are not SYN ones:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp flags != syn counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More complex filters can be used. For example, to count and log TCP packets with flags SYN and ACK set:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft -i&lt;br /&gt;
nft&amp;gt; add rule filter output tcp flags &amp;amp; (syn | ack) == syn | ack counter log&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example drops TCP SYN packets which a MSS lower than 500:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule inet filter input tcp flags syn tcp option maxseg size 1-500 drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching UDP/TCP headers in the same rule =&lt;br /&gt;
&lt;br /&gt;
The following example uses an anonymous l4proto [[Sets|set]] and a &#039;&#039;th&#039;&#039; (transport header) expression to match both TCP and UDP packets directed to port 53 (DNS):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  th dport 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Before nftables 0.9.2 and Linux kernel 5.3 the &#039;&#039;th&#039;&#039; expression is not available. In this case you can use a [https://www.mankier.com/8/nft#Payload_Expressions-Raw_Payload_Expression raw payload expression] to do the same job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  @th,16,16 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1020</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1020"/>
		<updated>2021-08-26T21:18:00Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Linux kernel */ Debian experimental kernel 5.13&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/nftables experimental, 0.9.9 as of 2021-08-26]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/libnftnl11 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.13]&lt;br /&gt;
| &lt;br /&gt;
* [https://lore.kernel.org/lkml/CAHk-=wj7E9iTGHbqfgtaTAM09WrVzwXjda2_D59MT8D_1=54Rg@mail.gmail.com/ announcement]&lt;br /&gt;
* [https://lwn.net/Articles/861145/ lwn]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.13 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/experimental/linux-image-amd64 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1019</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=1019"/>
		<updated>2021-08-26T21:14:50Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* nft */ release 1.0.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 1.0.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/nftables experimental, 0.9.9 as of 2021-08-26]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/libnftnl11 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.13]&lt;br /&gt;
| &lt;br /&gt;
* [https://lore.kernel.org/lkml/CAHk-=wj7E9iTGHbqfgtaTAM09WrVzwXjda2_D59MT8D_1=54Rg@mail.gmail.com/ announcement]&lt;br /&gt;
* [https://lwn.net/Articles/861145/ lwn]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.13 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/sid/linux-image-amd64 5.10.46 as of 2021-06-28]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=List_of_updates_in_the_nft_command_line_tool&amp;diff=1018</id>
		<title>List of updates in the nft command line tool</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=List_of_updates_in_the_nft_command_line_tool&amp;diff=1018"/>
		<updated>2021-08-26T21:11:29Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: nftables 1.0.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains links to nftables release announcements. In addition to a summary of bug fixes and new features, each announcement typically includes examples of how to use new features.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-08-19&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162939459210790&amp;amp;w=2 nftables 1.0.0]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162197756905358&amp;amp;w=2 nftables 0.9.9]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-01-15&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=161074809318720&amp;amp;w=2 nftables 0.9.8]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-10-27&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=160379555303808&amp;amp;w=2 nftables 0.9.7]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-06-15&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=159225380419197&amp;amp;w=2 nftables 0.9.6]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-06-06&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=159144250132190&amp;amp;w=2 nftables 0.9.5]&lt;br /&gt;
| This release broke &#039;&#039;vmap&#039;&#039; support, this is fixed in 0.9.6.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158575148505527&amp;amp;w=2 nftables 0.9.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-12-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=157532146917292&amp;amp;w=2 nftables 0.9.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-08-19&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=156621590113089&amp;amp;w=2 nftables 0.9.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-06-24&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=156139496810281&amp;amp;w=2 nftables 0.9.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-06-08&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152849974510956&amp;amp;w=2 nftables 0.9.0]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-05-10&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152595594524056&amp;amp;w=2 nftables 0.8.5]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-05-01&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152521206028754&amp;amp;w=2 nftables 0.8.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-03-03&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152009279821556&amp;amp;w=2 nftables 0.8.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-02-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=151759567102838&amp;amp;w=2 nftables 0.8.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-01-16&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=151610774011377&amp;amp;w=2 nftables 0.8.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2017-10-12&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=150785219810541&amp;amp;w=2 nftables 0.8]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2016-12-20&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=148226682025890&amp;amp;w=2 nftables 0.7]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2016-06-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=146488681521497&amp;amp;w=2 nftables 0.6]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2015-09-17&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=144251853500774&amp;amp;w=2 nftables 0.5]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-12-16&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=141869063212230&amp;amp;w=2 nftables 0.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-06-25&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=140371155009356&amp;amp;w=2 nftables 0.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-04-14&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=139747559724664&amp;amp;w=2 nftables 0.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-01-20&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=139022350623824&amp;amp;w=2 nftables 0.099]&lt;br /&gt;
| The first released intended for users.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2009-03-18&lt;br /&gt;
| [https://marc.info/?l=netfilter-devel&amp;amp;m=123735060518576&amp;amp;w=2 nftables first alpha]&lt;br /&gt;
| First full public release, alpha quality not meant for users.&lt;br /&gt;
Release notes include design summary, with differences from iptables. &lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=991</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=991"/>
		<updated>2021-06-28T13:35:43Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Linux kernel */ kernel 5.13 released&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 0.9.9]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162197756905358&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/nftables experimental]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/libnftnl11 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-06-27&lt;br /&gt;
| [https://www.kernel.org/ 5.13]&lt;br /&gt;
| &lt;br /&gt;
* [https://lore.kernel.org/lkml/CAHk-=wj7E9iTGHbqfgtaTAM09WrVzwXjda2_D59MT8D_1=54Rg@mail.gmail.com/ announcement]&lt;br /&gt;
* [https://lwn.net/Articles/861145/ lwn]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.13 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/sid/linux-image-amd64 5.10.46 as of 2021-06-28]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=980</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=980"/>
		<updated>2021-06-07T11:13:36Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Code Releases */ Fix date of nft 0.9.9 release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 0.9.9]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162197756905358&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/nftables experimental]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/libnftnl11 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-02-14&lt;br /&gt;
| [https://www.kernel.org/ 5.12]&lt;br /&gt;
| &lt;br /&gt;
* [https://lore.kernel.org/lkml/CAHk-=wj3ANm8QrkC7GTAxQyXyurS0_yxMR3WwjhD9r7kTiOSTw@mail.gmail.com/ announcement]&lt;br /&gt;
* [https://lwn.net/Articles/853289/ lwn]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.12 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/sid/linux-image-amd64 5.10.38 as of 2021-05-28]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=979</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=News&amp;diff=979"/>
		<updated>2021-05-28T11:22:18Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Code Releases */ New releases of nft, libnftnl and kernel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Code Releases ==&lt;br /&gt;
&lt;br /&gt;
=== nft ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-01-15&lt;br /&gt;
| [https://www.netfilter.org/projects/nftables/downloads.html 0.9.9]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162197756905358&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/nftables experimental]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/nftables/log/?showmsg=1 newest commits]&lt;br /&gt;
* [[List_of_updates_in_the_nft_command_line_tool|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== libnftnl ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://www.netfilter.org/projects/libnftnl/downloads.html 1.2.0]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162194376520385&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/experimental/libnftnl11 experimental]&lt;br /&gt;
|&lt;br /&gt;
* [http://git.netfilter.org/libnftnl/log/ newest commits]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-02-14&lt;br /&gt;
| [https://www.kernel.org/ 5.12]&lt;br /&gt;
| &lt;br /&gt;
* [https://lore.kernel.org/lkml/CAHk-=wj3ANm8QrkC7GTAxQyXyurS0_yxMR3WwjhD9r7kTiOSTw@mail.gmail.com/ announcement]&lt;br /&gt;
* [https://lwn.net/Articles/853289/ lwn]&lt;br /&gt;
* [https://kernelnewbies.org/Linux_5.12 KernelNewbies]&lt;br /&gt;
| [https://packages.debian.org/sid/linux-image-amd64 5.10.38 as of 2021-05-28]&lt;br /&gt;
|&lt;br /&gt;
* [[List_of_updates_since_Linux_kernel_3.13|previous&amp;amp;nbsp;releases]]&lt;br /&gt;
* Often, newest &#039;&#039;nft&#039;&#039; doesn&#039;t require newest kernel; check &#039;&#039;nft&#039;&#039; release notes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== conntrack-tools ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Source&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release Notes&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Debian Pkg&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [http://www.netfilter.org/projects/conntrack-tools/downloads.html 1.4.6]&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158576302510982&amp;amp;w=2 announcement]&lt;br /&gt;
| [https://packages.debian.org/bullseye/conntrack bullseye]&lt;br /&gt;
|&lt;br /&gt;
* [http://www.netfilter.org/projects/conntrack-tools/downloads.html previous&amp;amp;nbsp;releases]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [https://bugzilla.netfilter.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;chfieldfrom=-90d&amp;amp;chfieldto=Now&amp;amp;component=iptables%20over%20nftable&amp;amp;component=kernel&amp;amp;component=nft&amp;amp;list_id=3971&amp;amp;product=nftables&amp;amp;query_format=advanced&amp;amp;resolution=--- Bug activity, past 90 days] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.spinics.net/lists/netfilter/ Latest discussion in netfilter mailing list] ==&lt;br /&gt;
&lt;br /&gt;
== [https://www.netfilter.org/news.html Netfilter news] ==&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
Notice [[Special:RecentChanges|&#039;&#039;Recent&amp;amp;nbsp;changes&#039;&#039;]] in the &#039;&#039;navigation&#039;&#039; panel at upper left. :-)&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=List_of_updates_in_the_nft_command_line_tool&amp;diff=978</id>
		<title>List of updates in the nft command line tool</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=List_of_updates_in_the_nft_command_line_tool&amp;diff=978"/>
		<updated>2021-05-28T11:06:45Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Add nftables 0.9.9&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains links to nftables release announcements. In addition to a summary of bug fixes and new features, each announcement typically includes examples of how to use new features.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Date&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Release&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-05-25&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=162197756905358&amp;amp;w=2 nftables 0.9.9]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2021-01-15&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=161074809318720&amp;amp;w=2 nftables 0.9.8]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-10-27&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=160379555303808&amp;amp;w=2 nftables 0.9.7]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-06-15&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=159225380419197&amp;amp;w=2 nftables 0.9.6]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-06-06&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=159144250132190&amp;amp;w=2 nftables 0.9.5]&lt;br /&gt;
| This release broke &#039;&#039;vmap&#039;&#039; support, this is fixed in 0.9.6.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2020-04-01&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=158575148505527&amp;amp;w=2 nftables 0.9.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-12-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=157532146917292&amp;amp;w=2 nftables 0.9.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-08-19&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=156621590113089&amp;amp;w=2 nftables 0.9.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-06-24&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=156139496810281&amp;amp;w=2 nftables 0.9.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2019-06-08&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152849974510956&amp;amp;w=2 nftables 0.9.0]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-05-10&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152595594524056&amp;amp;w=2 nftables 0.8.5]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-05-01&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152521206028754&amp;amp;w=2 nftables 0.8.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-03-03&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=152009279821556&amp;amp;w=2 nftables 0.8.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-02-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=151759567102838&amp;amp;w=2 nftables 0.8.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2018-01-16&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=151610774011377&amp;amp;w=2 nftables 0.8.1]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2017-10-12&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=150785219810541&amp;amp;w=2 nftables 0.8]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2016-12-20&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=148226682025890&amp;amp;w=2 nftables 0.7]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2016-06-02&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=146488681521497&amp;amp;w=2 nftables 0.6]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2015-09-17&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=144251853500774&amp;amp;w=2 nftables 0.5]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-12-16&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=141869063212230&amp;amp;w=2 nftables 0.4]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-06-25&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=140371155009356&amp;amp;w=2 nftables 0.3]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-04-14&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=139747559724664&amp;amp;w=2 nftables 0.2]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2014-01-20&lt;br /&gt;
| [https://marc.info/?l=netfilter&amp;amp;m=139022350623824&amp;amp;w=2 nftables 0.099]&lt;br /&gt;
| The first released intended for users.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| 2009-03-18&lt;br /&gt;
| [https://marc.info/?l=netfilter-devel&amp;amp;m=123735060518576&amp;amp;w=2 nftables first alpha]&lt;br /&gt;
| First full public release, alpha quality not meant for users.&lt;br /&gt;
Release notes include design summary, with differences from iptables. &lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Main_Page&amp;diff=971</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Main_Page&amp;diff=971"/>
		<updated>2021-04-21T02:07:28Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Expressions: moved meta expressions to first topic.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the &#039;&#039;nftables&#039;&#039; HOWTO documentation page. Here you will find documentation on how to build, install, configure and use nftables.&lt;br /&gt;
&lt;br /&gt;
If you have any suggestion to improve it, please send your comments to Netfilter users mailing list &amp;lt;netfilter@vger.kernel.org&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[News]] =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
* [[What is nftables?]]&lt;br /&gt;
* [[How to obtain help/support]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
* [https://www.netfilter.org/projects/nftables/manpage.html man nft - netfilter website]&lt;br /&gt;
* [https://www.mankier.com/8/nft man nft - mankier.com]&lt;br /&gt;
* [[Quick reference-nftables in 10 minutes|Quick reference, nftables in 10 minutes]]&lt;br /&gt;
* [[Netfilter hooks]] and nftables integration with existing Netfilter components&lt;br /&gt;
* [[nftables families|Understanding nftables families]]&lt;br /&gt;
* [[Data_types|Data types]]&lt;br /&gt;
* [[Connection_Tracking_System|Connection tracking system (conntrack)]], used for stateful firewalling and NAT&lt;br /&gt;
* [[Troubleshooting|Troubleshooting and FAQ]]&lt;br /&gt;
* [[Further_documentation|Additional documentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installing nftables =&lt;br /&gt;
* [[nftables from distributions|Using nftables from distributions]]&lt;br /&gt;
* [[Building and installing nftables from sources]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Upgrading from xtables to nftables =&lt;br /&gt;
* [[Legacy xtables tools]]&lt;br /&gt;
* [[Moving from iptables to nftables]]&lt;br /&gt;
* [[Moving from ipset to nftables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Basic operation =&lt;br /&gt;
* [[Configuring tables]]&lt;br /&gt;
* [[Configuring chains]]&lt;br /&gt;
* [[Simple rule management]]&lt;br /&gt;
* [[Atomic rule replacement]]&lt;br /&gt;
* [[Error reporting from the command line]]&lt;br /&gt;
* [[Building rules through expressions]]&lt;br /&gt;
* [[Operations at ruleset level]]&lt;br /&gt;
* [[Monitoring ruleset updates]]&lt;br /&gt;
* [[Scripting]]&lt;br /&gt;
* [[Ruleset debug/tracing]]&lt;br /&gt;
* [[Output text modifiers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Expressions: Matching packets =&lt;br /&gt;
* [[Matching packet metainformation]]&lt;br /&gt;
* [[Matching packet headers]]&lt;br /&gt;
* [[Matching connection tracking stateful metainformation]]&lt;br /&gt;
* [[Matching routing information]]&lt;br /&gt;
* [[Rate limiting matchings]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Statements: Acting on packet matches =&lt;br /&gt;
* [[Accepting and dropping packets]]&lt;br /&gt;
* [[Rejecting traffic]]&lt;br /&gt;
* [[Jumping to chain]]&lt;br /&gt;
* [[Counters]]&lt;br /&gt;
* [[Logging traffic]]&lt;br /&gt;
* [[Performing Network Address Translation (NAT)]]&lt;br /&gt;
* [[Setting packet metainformation]]&lt;br /&gt;
* [[Setting packet connection tracking metainformation]]&lt;br /&gt;
* [[Mangling packet headers]] (including stateless NAT)&lt;br /&gt;
* [[Duplicating packets]]&lt;br /&gt;
* [[Load balancing]]&lt;br /&gt;
* [[Queueing to userspace]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Advanced data structures for performance packet classification =&lt;br /&gt;
* [[Intervals]]&lt;br /&gt;
* [[Concatenations]]&lt;br /&gt;
* [[Math operations]]&lt;br /&gt;
* [[Stateful objects]]&lt;br /&gt;
** [[Counters]]&lt;br /&gt;
** [[Quotas]]&lt;br /&gt;
** [[Limits]]&lt;br /&gt;
** [[Connlimits]] (&#039;&#039;ct count&#039;&#039;)&lt;br /&gt;
* Other objects&lt;br /&gt;
** [[Conntrack helpers]] (&#039;&#039;ct helper&#039;&#039;, Layer 7 ALG)&lt;br /&gt;
** [[Ct_timeout|Conntrack timeout policies]] (&#039;&#039;ct timeout&#039;&#039;)&lt;br /&gt;
** [[Ct_expectation|Conntrack expectations]] (&#039;&#039;ct expectation&#039;&#039;)&lt;br /&gt;
** [[Synproxy]]&lt;br /&gt;
** [[Secmark|Secmarks]]&lt;br /&gt;
* Generic set infrastructure&lt;br /&gt;
** [[Sets]]&lt;br /&gt;
** [[Element timeouts]]&lt;br /&gt;
** [[Updating sets from the packet path]]&lt;br /&gt;
** [[Maps]]&lt;br /&gt;
** [[Verdict_Maps_(vmaps) | Verdict maps]]&lt;br /&gt;
** [[Meters|Metering]] (formerly known as flow tables before nftables 0.8.1)&lt;br /&gt;
* [[Flowtables]] (the fastpath network stack bypass)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
* [[Simple ruleset for a workstation]]&lt;br /&gt;
* [[Simple ruleset for a server]]&lt;br /&gt;
* [[Bridge filtering]]&lt;br /&gt;
* [[Multiple NATs using nftables maps]]&lt;br /&gt;
* [[Classic perimetral firewall example]]&lt;br /&gt;
* [[Port knocking example]]&lt;br /&gt;
* [[Classification to tc structure example]]&lt;br /&gt;
* [[Using configuration management systems]] (like puppet, ansible, etc)&lt;br /&gt;
* [[GeoIP matching]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Development =&lt;br /&gt;
&lt;br /&gt;
Check [[Portal:DeveloperDocs|Portal:DeveloperDocs - documentation for netfilter developers]].&lt;br /&gt;
&lt;br /&gt;
Some hints on the general development progress:&lt;br /&gt;
&lt;br /&gt;
* [[List of updates since Linux kernel 3.13]]&lt;br /&gt;
* [[List of updates in the nft command line tool]]&lt;br /&gt;
* [[Supported features compared to xtables|Supported features compared to {ip,ip6,eb,arp}tables]]&lt;br /&gt;
* [[List of available translations via iptables-translate tool]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= External links =&lt;br /&gt;
&lt;br /&gt;
Watch some videos:&lt;br /&gt;
&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=FXTRRwXi3b4 Getting a grasp of nftables], thanks to [https://www.nluug.nl/index-en.html NLUUG association] for recording this.&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=CaYp0d2wiuU#t=1m47s The ultimate packet classifier for GNU/Linux], thanks to the FSFE for paying my trip to Barcelona and for recommending me as speaker to the KDE Spanish branch.&lt;br /&gt;
* [https://www.youtube.com/watch?v=Sy0JDX451ns Florian Westphal - Why nftables?]&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=0wQfSfDVN94 NLUUG - Goodbye iptables, Hello nftables]&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=Uf5ULkEWPL0 LCA2018 - nftables from a user perspective]&lt;br /&gt;
&lt;br /&gt;
Watch videos to track updates:&lt;br /&gt;
&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=qXVOA2MKA1s Netdev 2.1 - Netfilter mini-workshop (2017)]&lt;br /&gt;
* Watch [https://youtu.be/iCj10vEKPrw Netdev 2.2 - Netf‌ilter mini-workshop (2018)]&lt;br /&gt;
* Watch [https://youtu.be/0hqfzp6tpZo Netdev 0x12 - Netf‌ilter mini-workshop (2019)]&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=GqGGo4svj7s&amp;amp;feature=youtu.be Netdev 0x14 - Netfilter mini-Workshop (2020)] &lt;br /&gt;
&lt;br /&gt;
Additional documentations and articles:&lt;br /&gt;
&lt;br /&gt;
* Tutorial [https://zasdfgbnm.github.io/2017/09/07/Extending-nftables/ Extending nftables by Xiang Gao]&lt;br /&gt;
* Article [http://ral-arturo.org/2017/05/05/debian-stretch-stable-nftables.html New in Debian stable Stretch: nftables]&lt;br /&gt;
* Article [https://ral-arturo.org/2020/11/22/python-nftables-tutorial.html How to use nftables from python] and git repository [https://github.com/aborrero/python-nftables-tutorial python-nftables-tutorial.git]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Thanks =&lt;br /&gt;
&lt;br /&gt;
To the NLnet foundation for initial sponsorship of this HOWTO:&lt;br /&gt;
&lt;br /&gt;
[https://nlnet.nl https://nlnet.nl/image/logo.gif]&lt;br /&gt;
&lt;br /&gt;
To Eric Leblond, for boostrapping the [https://home.regit.org/netfilter-en/nftables-quick-howto/ Nftables quick howto] in 2013.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Main_Page&amp;diff=970</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Main_Page&amp;diff=970"/>
		<updated>2021-04-20T15:08:46Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: References: added conntrack link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the &#039;&#039;nftables&#039;&#039; HOWTO documentation page. Here you will find documentation on how to build, install, configure and use nftables.&lt;br /&gt;
&lt;br /&gt;
If you have any suggestion to improve it, please send your comments to Netfilter users mailing list &amp;lt;netfilter@vger.kernel.org&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[News]] =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
* [[What is nftables?]]&lt;br /&gt;
* [[How to obtain help/support]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
* [https://www.netfilter.org/projects/nftables/manpage.html man nft - netfilter website]&lt;br /&gt;
* [https://www.mankier.com/8/nft man nft - mankier.com]&lt;br /&gt;
* [[Quick reference-nftables in 10 minutes|Quick reference, nftables in 10 minutes]]&lt;br /&gt;
* [[Netfilter hooks]] and nftables integration with existing Netfilter components&lt;br /&gt;
* [[nftables families|Understanding nftables families]]&lt;br /&gt;
* [[Data_types|Data types]]&lt;br /&gt;
* [[Connection_Tracking_System|Connection tracking system (conntrack)]], used for stateful firewalling and NAT&lt;br /&gt;
* [[Troubleshooting|Troubleshooting and FAQ]]&lt;br /&gt;
* [[Further_documentation|Additional documentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installing nftables =&lt;br /&gt;
* [[nftables from distributions|Using nftables from distributions]]&lt;br /&gt;
* [[Building and installing nftables from sources]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Upgrading from xtables to nftables =&lt;br /&gt;
* [[Legacy xtables tools]]&lt;br /&gt;
* [[Moving from iptables to nftables]]&lt;br /&gt;
* [[Moving from ipset to nftables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Basic operation =&lt;br /&gt;
* [[Configuring tables]]&lt;br /&gt;
* [[Configuring chains]]&lt;br /&gt;
* [[Simple rule management]]&lt;br /&gt;
* [[Atomic rule replacement]]&lt;br /&gt;
* [[Error reporting from the command line]]&lt;br /&gt;
* [[Building rules through expressions]]&lt;br /&gt;
* [[Operations at ruleset level]]&lt;br /&gt;
* [[Monitoring ruleset updates]]&lt;br /&gt;
* [[Scripting]]&lt;br /&gt;
* [[Ruleset debug/tracing]]&lt;br /&gt;
* [[Output text modifiers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Expressions: Matching packets =&lt;br /&gt;
* [[Matching packet headers]]&lt;br /&gt;
* [[Matching packet metainformation]]&lt;br /&gt;
* [[Matching connection tracking stateful metainformation]]&lt;br /&gt;
* [[Matching routing information]]&lt;br /&gt;
* [[Rate limiting matchings]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Statements: Acting on packet matches =&lt;br /&gt;
* [[Accepting and dropping packets]]&lt;br /&gt;
* [[Rejecting traffic]]&lt;br /&gt;
* [[Jumping to chain]]&lt;br /&gt;
* [[Counters]]&lt;br /&gt;
* [[Logging traffic]]&lt;br /&gt;
* [[Performing Network Address Translation (NAT)]]&lt;br /&gt;
* [[Setting packet metainformation]]&lt;br /&gt;
* [[Setting packet connection tracking metainformation]]&lt;br /&gt;
* [[Mangling packet headers]] (including stateless NAT)&lt;br /&gt;
* [[Duplicating packets]]&lt;br /&gt;
* [[Load balancing]]&lt;br /&gt;
* [[Queueing to userspace]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Advanced data structures for performance packet classification =&lt;br /&gt;
* [[Intervals]]&lt;br /&gt;
* [[Concatenations]]&lt;br /&gt;
* [[Math operations]]&lt;br /&gt;
* [[Stateful objects]]&lt;br /&gt;
** [[Counters]]&lt;br /&gt;
** [[Quotas]]&lt;br /&gt;
** [[Limits]]&lt;br /&gt;
** [[Connlimits]] (&#039;&#039;ct count&#039;&#039;)&lt;br /&gt;
* Other objects&lt;br /&gt;
** [[Conntrack helpers]] (&#039;&#039;ct helper&#039;&#039;, Layer 7 ALG)&lt;br /&gt;
** [[Ct_timeout|Conntrack timeout policies]] (&#039;&#039;ct timeout&#039;&#039;)&lt;br /&gt;
** [[Ct_expectation|Conntrack expectations]] (&#039;&#039;ct expectation&#039;&#039;)&lt;br /&gt;
** [[Synproxy]]&lt;br /&gt;
** [[Secmark|Secmarks]]&lt;br /&gt;
* Generic set infrastructure&lt;br /&gt;
** [[Sets]]&lt;br /&gt;
** [[Element timeouts]]&lt;br /&gt;
** [[Updating sets from the packet path]]&lt;br /&gt;
** [[Maps]]&lt;br /&gt;
** [[Verdict_Maps_(vmaps) | Verdict maps]]&lt;br /&gt;
** [[Meters|Metering]] (formerly known as flow tables before nftables 0.8.1)&lt;br /&gt;
* [[Flowtables]] (the fastpath network stack bypass)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
* [[Simple ruleset for a workstation]]&lt;br /&gt;
* [[Simple ruleset for a server]]&lt;br /&gt;
* [[Bridge filtering]]&lt;br /&gt;
* [[Multiple NATs using nftables maps]]&lt;br /&gt;
* [[Classic perimetral firewall example]]&lt;br /&gt;
* [[Port knocking example]]&lt;br /&gt;
* [[Classification to tc structure example]]&lt;br /&gt;
* [[Using configuration management systems]] (like puppet, ansible, etc)&lt;br /&gt;
* [[GeoIP matching]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Development =&lt;br /&gt;
&lt;br /&gt;
Check [[Portal:DeveloperDocs|Portal:DeveloperDocs - documentation for netfilter developers]].&lt;br /&gt;
&lt;br /&gt;
Some hints on the general development progress:&lt;br /&gt;
&lt;br /&gt;
* [[List of updates since Linux kernel 3.13]]&lt;br /&gt;
* [[List of updates in the nft command line tool]]&lt;br /&gt;
* [[Supported features compared to xtables|Supported features compared to {ip,ip6,eb,arp}tables]]&lt;br /&gt;
* [[List of available translations via iptables-translate tool]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= External links =&lt;br /&gt;
&lt;br /&gt;
Watch some videos:&lt;br /&gt;
&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=FXTRRwXi3b4 Getting a grasp of nftables], thanks to [https://www.nluug.nl/index-en.html NLUUG association] for recording this.&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=CaYp0d2wiuU#t=1m47s The ultimate packet classifier for GNU/Linux], thanks to the FSFE for paying my trip to Barcelona and for recommending me as speaker to the KDE Spanish branch.&lt;br /&gt;
* [https://www.youtube.com/watch?v=Sy0JDX451ns Florian Westphal - Why nftables?]&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=0wQfSfDVN94 NLUUG - Goodbye iptables, Hello nftables]&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=Uf5ULkEWPL0 LCA2018 - nftables from a user perspective]&lt;br /&gt;
&lt;br /&gt;
Watch videos to track updates:&lt;br /&gt;
&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=qXVOA2MKA1s Netdev 2.1 - Netfilter mini-workshop (2017)]&lt;br /&gt;
* Watch [https://youtu.be/iCj10vEKPrw Netdev 2.2 - Netf‌ilter mini-workshop (2018)]&lt;br /&gt;
* Watch [https://youtu.be/0hqfzp6tpZo Netdev 0x12 - Netf‌ilter mini-workshop (2019)]&lt;br /&gt;
* Watch [https://www.youtube.com/watch?v=GqGGo4svj7s&amp;amp;feature=youtu.be Netdev 0x14 - Netfilter mini-Workshop (2020)] &lt;br /&gt;
&lt;br /&gt;
Additional documentations and articles:&lt;br /&gt;
&lt;br /&gt;
* Tutorial [https://zasdfgbnm.github.io/2017/09/07/Extending-nftables/ Extending nftables by Xiang Gao]&lt;br /&gt;
* Article [http://ral-arturo.org/2017/05/05/debian-stretch-stable-nftables.html New in Debian stable Stretch: nftables]&lt;br /&gt;
* Article [https://ral-arturo.org/2020/11/22/python-nftables-tutorial.html How to use nftables from python] and git repository [https://github.com/aborrero/python-nftables-tutorial python-nftables-tutorial.git]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Thanks =&lt;br /&gt;
&lt;br /&gt;
To the NLnet foundation for initial sponsorship of this HOWTO:&lt;br /&gt;
&lt;br /&gt;
[https://nlnet.nl https://nlnet.nl/image/logo.gif]&lt;br /&gt;
&lt;br /&gt;
To Eric Leblond, for boostrapping the [https://home.regit.org/netfilter-en/nftables-quick-howto/ Nftables quick howto] in 2013.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Data_types&amp;diff=969</id>
		<title>Data types</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Data_types&amp;diff=969"/>
		<updated>2021-04-20T15:05:08Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Linked ethernet &amp;amp; IP Wikipedia pages, and conntrack page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &#039;&#039;nft describe&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft describe&#039;&#039; to get information about a data type, to find out the data type of a particular selector, and to list predefined symbolic constants for that selector. Some examples:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;% nft describe iif&lt;br /&gt;
meta expression, datatype iface_index (network interface index) (basetype integer), 32 bits&lt;br /&gt;
&lt;br /&gt;
% nft describe iifname&lt;br /&gt;
meta expression, datatype ifname (network interface name) (basetype string), 16 characters&lt;br /&gt;
&lt;br /&gt;
% nft describe tcp flags&lt;br /&gt;
payload expression, datatype tcp_flag (TCP flag) (basetype bitmask, integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in hexadecimal):&lt;br /&gt;
        fin                             0x01&lt;br /&gt;
        syn                             0x02&lt;br /&gt;
        rst                             0x04&lt;br /&gt;
        psh                             0x08&lt;br /&gt;
        ack                             0x10&lt;br /&gt;
        urg                             0x20&lt;br /&gt;
        ecn                             0x40&lt;br /&gt;
        cwr                             0x80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= List of data types =&lt;br /&gt;
&lt;br /&gt;
== Date and time types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Date and time types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| day&lt;br /&gt;
| Day of week of packet reception (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;Sunday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Monday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Tuesday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Wednesday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Thursday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Friday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Saturday&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;day&#039;&#039;]]&lt;br /&gt;
| &#039;&#039;Sunday&#039;&#039; = 0, &#039;&#039;Saturday&#039;&#039; = 6.&lt;br /&gt;
Symbolic constants are case insensitive, and unique abbreviations are accepted: &#039;&#039;Sun&#039;&#039; = &#039;&#039;sun&#039;&#039; = &#039;&#039;Sunday&#039;&#039; = 0.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| hour&lt;br /&gt;
| Hour of day of packet reception (32 bit integer).&lt;br /&gt;
Specify as string in 24-hour format, hh:mm[:ss].&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;hour&#039;&#039;]]&lt;br /&gt;
| Seconds are optional: &#039;&#039;17:00&#039;&#039; = &#039;&#039;17:00:00&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| time&lt;br /&gt;
| Relative time of packet reception (64 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;time&#039;&#039;]]&lt;br /&gt;
| Can be specified as a date in ISO format, i.e. &amp;quot;2019-06-06 17:00&amp;quot;. Hour and seconds are optional and can be omitted if desired. If omitted, midnight will be assumed. The following three are equivalent: &amp;quot;2019-06-06&amp;quot; = &amp;quot;2019-06-06 00:00&amp;quot; = &amp;quot;2019-06-06 00:00:00&amp;quot;.&lt;br /&gt;
When an integer is specified, it is assumed to be a UNIX timestamp.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Network interface types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Network interface types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| devgroup&lt;br /&gt;
| Device group (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifgroup&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifgroup&#039;&#039;}]]&lt;br /&gt;
| Can be specified numerically or as symbolic name defined in /etc/iproute2/group.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| iface_index&lt;br /&gt;
| Interface index (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oif&#039;&#039;}]]&lt;br /&gt;
| Can be specified numerically or as name of an existing interface.&lt;br /&gt;
Use ifname instead for interfaces whose name and/or index can change (i.e. those that appear / disappear dynamically).&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| iface_type&lt;br /&gt;
| Interface type (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;ether&#039;&#039;&lt;br /&gt;
* &#039;&#039;ppp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipip&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipip6&#039;&#039;&lt;br /&gt;
* &#039;&#039;loopback&#039;&#039;&lt;br /&gt;
* &#039;&#039;sit&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipgre&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iiftype&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oiftype&#039;&#039;}]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ifkind&lt;br /&gt;
| Interface kind name (16 byte string).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifkind&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifkind&#039;&#039;}]]&lt;br /&gt;
| dev-&amp;gt;rtnl_link_ops-&amp;gt;kind&lt;br /&gt;
The &#039;&#039;man 8 ip-link&#039;&#039; TYPES section lists valid ifkinds. It&#039;s missing at least one: &#039;&#039;tun&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ifname&lt;br /&gt;
| Interface name (16 byte string).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifname&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifname&#039;&#039;}]]&lt;br /&gt;
| Does not have to exist.&lt;br /&gt;
Slower than iface_index but good for interfaces that can dynamically appear / disappear.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ethernet types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|[https://en.wikipedia.org/wiki/Ethernet Ethernet] types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ether_addr&lt;br /&gt;
| Ethernet address (48 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_ethernet_headers|&#039;&#039;ether&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ether&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ether_type&lt;br /&gt;
| [https://en.wikipedia.org/wiki/EtherType EtherType] (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ip&#039;&#039;&lt;br /&gt;
* &#039;&#039;ip6&#039;&#039;&lt;br /&gt;
* &#039;&#039;vlan&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;protocol&#039;&#039;]]&lt;br /&gt;
| [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/if_ether.h ether.h] has known types.&lt;br /&gt;
NOTE that ether.h lists EtherTypes in [https://en.wikipedia.org/wiki/Endianness#Networking network&amp;amp;nbsp;order], while nft uses little-endian order on x86. (Check output of &#039;&#039;nft describe ether_type&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ARP types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|[https://en.wikipedia.org/wiki/Address_Resolution_Protocol ARP] types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| ARP HLEN, hardware address length in octets (8 bit integer)&lt;br /&gt;
| [[Matching_packet_headers#Matching_ARP_headers|&#039;&#039;arp hlen&#039;&#039; &amp;amp;laquo;HLEN&amp;amp;raquo;]]&lt;br /&gt;
| Unnamed 8-bit integer in nftables.&lt;br /&gt;
For ethernet HLEN&amp;amp;nbsp;=&amp;amp;nbsp;6.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| ARP HTYPE, hardware type (16 bit integer)&lt;br /&gt;
| [[Matching_packet_headers#Matching_ARP_headers|&#039;&#039;arp htype&#039;&#039; &amp;amp;laquo;HTYPE&amp;amp;raquo;]]&lt;br /&gt;
| Unnamed 16-bit integer in nftables.&lt;br /&gt;
[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/if_arp.h if_arp.h] has known types.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| ARP PLEN, internetwork address length in octets (8 bit integer)&lt;br /&gt;
| [[Matching_packet_headers#Matching_ARP_headers|&#039;&#039;arp plen&#039;&#039; &amp;amp;laquo;PLEN&amp;amp;raquo;]]&lt;br /&gt;
| Unnamed 8-bit integer in nftables.&lt;br /&gt;
For IPv4 PLEN&amp;amp;nbsp;=&amp;amp;nbsp;4.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| arp_op&lt;br /&gt;
| ARP operation (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;request&#039;&#039; = 1&lt;br /&gt;
* &#039;&#039;reply&#039;&#039; = 2&lt;br /&gt;
* &#039;&#039;rrequest&#039;&#039; = 3&lt;br /&gt;
* &#039;&#039;rreply&#039;&#039; = 4&lt;br /&gt;
* &#039;&#039;inrequest&#039;&#039; = 8&lt;br /&gt;
* &#039;&#039;inreply&#039;&#039; = 9&lt;br /&gt;
* &#039;&#039;nak&#039;&#039; = 10&lt;br /&gt;
| [[Matching_packet_headers#Matching_ARP_headers|&#039;&#039;arp operation&#039;&#039; &amp;amp;laquo;arp_op&amp;amp;raquo;]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IP types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|[https://en.wikipedia.org/wiki/Internet_Protocol IP] types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet_proto&lt;br /&gt;
| Internet protocol (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;tcp&#039;&#039;&lt;br /&gt;
* &#039;&#039;udp&#039;&#039;&lt;br /&gt;
* &#039;&#039;udplite&#039;&#039;&lt;br /&gt;
* &#039;&#039;esp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ah&#039;&#039;&lt;br /&gt;
* &#039;&#039;icmp&#039;&#039;&lt;br /&gt;
* &#039;&#039;icmpv6&#039;&#039;&lt;br /&gt;
* &#039;&#039;comp&#039;&#039;&lt;br /&gt;
* &#039;&#039;dccp&#039;&#039;&lt;br /&gt;
* &#039;&#039;sctp&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_transport_protocol|&#039;&#039;ip protocol&#039;&#039;]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv6_headers|&#039;&#039;ip6 nexthdr&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ah nexthdr&#039;&#039;&lt;br /&gt;
* &#039;&#039;comp nexthdr&#039;&#039;&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;protocol&#039;&#039;]]&lt;br /&gt;
| [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/in.h in.h] has known types.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet_service&lt;br /&gt;
| Network service port number (16 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;udp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;tcp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;udplite&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;sctp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;dccp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ipv4_addr&lt;br /&gt;
| IPv4 address (32 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv4_headers|&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;} ]]&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* [[Matching routing information|&#039;&#039;rt&amp;amp;nbsp;ip&amp;amp;nbsp;nexthop&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ipsec&#039;&#039;&amp;amp;nbsp;{&#039;&#039;in&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;out&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ipv6_addr&lt;br /&gt;
| IPv6 address (128 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv6_headers|&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;} ]]&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* [[Matching routing information|&#039;&#039;rt&amp;amp;nbsp;ip6&amp;amp;nbsp;nexthop&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ipsec&#039;&#039;&amp;amp;nbsp;{&#039;&#039;in&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;out&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conntrack types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|[[Connection_Tracking_System|Conntrack]] types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_dir&lt;br /&gt;
| Conntrack direction (8 bit integer).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
original       0&lt;br /&gt;
reply          1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_event&lt;br /&gt;
| Conntrack event bits (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new            1&lt;br /&gt;
related        2&lt;br /&gt;
destroy        4&lt;br /&gt;
reply          8&lt;br /&gt;
assured       16&lt;br /&gt;
protoinfo     32&lt;br /&gt;
helper        64&lt;br /&gt;
mark         128&lt;br /&gt;
seqadj       256&lt;br /&gt;
secmark      512&lt;br /&gt;
label       1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_label&lt;br /&gt;
| Conntrack label (128 bit bitmask).&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_state&lt;br /&gt;
| Conntrack state (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
invalid        1&lt;br /&gt;
established    2&lt;br /&gt;
related        4&lt;br /&gt;
new            8&lt;br /&gt;
untracked     64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_status&lt;br /&gt;
| Conntrack status (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
expected       1&lt;br /&gt;
seen-reply     2&lt;br /&gt;
assured        4&lt;br /&gt;
confirmed      8&lt;br /&gt;
snat          16&lt;br /&gt;
dnat          32&lt;br /&gt;
dying        512&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Other types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| gid&lt;br /&gt;
| Group ID (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;skgid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as group name.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| mark&lt;br /&gt;
| Packet mark (32 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_metainformation#Matching_by_packet_mark.2C_routing_class_and_realm|&#039;&#039;meta&amp;amp;nbsp;mark&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;socket&amp;amp;nbsp;mark&#039;&#039;&lt;br /&gt;
* [[Matching routing information|&#039;&#039;fib&amp;amp;nbsp;mark&amp;amp;nbsp;.&amp;amp;nbsp;&#039;&#039;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;iif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oif&#039;&#039;}&amp;amp;nbsp;[.&amp;amp;nbsp;...]&amp;amp;nbsp;{&#039;&#039;oif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifname&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;type&#039;&#039;}]]&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&amp;amp;nbsp;mark&#039;&#039;]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| pkt_type&lt;br /&gt;
| Packet type (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;host&#039;&#039; or &#039;&#039;unicast&#039;&#039; - addressed to local host&lt;br /&gt;
* &#039;&#039;broadcast&#039;&#039; - to all&lt;br /&gt;
* &#039;&#039;multicast&#039;&#039; - to group&lt;br /&gt;
* &#039;&#039;other&#039;&#039; - addressed to another host&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;pkttype&#039;&#039;]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| realm&lt;br /&gt;
| Routing Realm (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;rtclassid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as symbolic name defined in /etc/iproute2/rt_realms.&lt;br /&gt;
Routing realm references:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://linux-ip.net/gl/ip-cref/ip-cref-node172.html linux-ip.net]&lt;br /&gt;
&amp;lt;li&amp;gt;[http://www.policyrouting.org/PolicyRoutingBook/ONLINE/CH07.web.html policyrouting.org]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| uid&lt;br /&gt;
| User ID (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;skuid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as user name.&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Data_types&amp;diff=968</id>
		<title>Data types</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Data_types&amp;diff=968"/>
		<updated>2021-04-20T15:00:19Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: ARP types: added example expression links and Wikipedia protocol link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &#039;&#039;nft describe&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft describe&#039;&#039; to get information about a data type, to find out the data type of a particular selector, and to list predefined symbolic constants for that selector. Some examples:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;% nft describe iif&lt;br /&gt;
meta expression, datatype iface_index (network interface index) (basetype integer), 32 bits&lt;br /&gt;
&lt;br /&gt;
% nft describe iifname&lt;br /&gt;
meta expression, datatype ifname (network interface name) (basetype string), 16 characters&lt;br /&gt;
&lt;br /&gt;
% nft describe tcp flags&lt;br /&gt;
payload expression, datatype tcp_flag (TCP flag) (basetype bitmask, integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in hexadecimal):&lt;br /&gt;
        fin                             0x01&lt;br /&gt;
        syn                             0x02&lt;br /&gt;
        rst                             0x04&lt;br /&gt;
        psh                             0x08&lt;br /&gt;
        ack                             0x10&lt;br /&gt;
        urg                             0x20&lt;br /&gt;
        ecn                             0x40&lt;br /&gt;
        cwr                             0x80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= List of data types =&lt;br /&gt;
&lt;br /&gt;
== Date and time types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Date and time types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| day&lt;br /&gt;
| Day of week of packet reception (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;Sunday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Monday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Tuesday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Wednesday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Thursday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Friday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Saturday&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;day&#039;&#039;]]&lt;br /&gt;
| &#039;&#039;Sunday&#039;&#039; = 0, &#039;&#039;Saturday&#039;&#039; = 6.&lt;br /&gt;
Symbolic constants are case insensitive, and unique abbreviations are accepted: &#039;&#039;Sun&#039;&#039; = &#039;&#039;sun&#039;&#039; = &#039;&#039;Sunday&#039;&#039; = 0.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| hour&lt;br /&gt;
| Hour of day of packet reception (32 bit integer).&lt;br /&gt;
Specify as string in 24-hour format, hh:mm[:ss].&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;hour&#039;&#039;]]&lt;br /&gt;
| Seconds are optional: &#039;&#039;17:00&#039;&#039; = &#039;&#039;17:00:00&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| time&lt;br /&gt;
| Relative time of packet reception (64 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;time&#039;&#039;]]&lt;br /&gt;
| Can be specified as a date in ISO format, i.e. &amp;quot;2019-06-06 17:00&amp;quot;. Hour and seconds are optional and can be omitted if desired. If omitted, midnight will be assumed. The following three are equivalent: &amp;quot;2019-06-06&amp;quot; = &amp;quot;2019-06-06 00:00&amp;quot; = &amp;quot;2019-06-06 00:00:00&amp;quot;.&lt;br /&gt;
When an integer is specified, it is assumed to be a UNIX timestamp.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Network interface types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Network interface types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| devgroup&lt;br /&gt;
| Device group (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifgroup&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifgroup&#039;&#039;}]]&lt;br /&gt;
| Can be specified numerically or as symbolic name defined in /etc/iproute2/group.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| iface_index&lt;br /&gt;
| Interface index (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oif&#039;&#039;}]]&lt;br /&gt;
| Can be specified numerically or as name of an existing interface.&lt;br /&gt;
Use ifname instead for interfaces whose name and/or index can change (i.e. those that appear / disappear dynamically).&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| iface_type&lt;br /&gt;
| Interface type (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;ether&#039;&#039;&lt;br /&gt;
* &#039;&#039;ppp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipip&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipip6&#039;&#039;&lt;br /&gt;
* &#039;&#039;loopback&#039;&#039;&lt;br /&gt;
* &#039;&#039;sit&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipgre&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iiftype&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oiftype&#039;&#039;}]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ifkind&lt;br /&gt;
| Interface kind name (16 byte string).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifkind&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifkind&#039;&#039;}]]&lt;br /&gt;
| dev-&amp;gt;rtnl_link_ops-&amp;gt;kind&lt;br /&gt;
The &#039;&#039;man 8 ip-link&#039;&#039; TYPES section lists valid ifkinds. It&#039;s missing at least one: &#039;&#039;tun&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ifname&lt;br /&gt;
| Interface name (16 byte string).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifname&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifname&#039;&#039;}]]&lt;br /&gt;
| Does not have to exist.&lt;br /&gt;
Slower than iface_index but good for interfaces that can dynamically appear / disappear.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ethernet types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Ethernet types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ether_addr&lt;br /&gt;
| Ethernet address (48 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_ethernet_headers|&#039;&#039;ether&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ether&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ether_type&lt;br /&gt;
| [https://en.wikipedia.org/wiki/EtherType EtherType] (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ip&#039;&#039;&lt;br /&gt;
* &#039;&#039;ip6&#039;&#039;&lt;br /&gt;
* &#039;&#039;vlan&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;protocol&#039;&#039;]]&lt;br /&gt;
| [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/if_ether.h ether.h] has known types.&lt;br /&gt;
NOTE that ether.h lists EtherTypes in [https://en.wikipedia.org/wiki/Endianness#Networking network&amp;amp;nbsp;order], while nft uses little-endian order on x86. (Check output of &#039;&#039;nft describe ether_type&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ARP types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|[https://en.wikipedia.org/wiki/Address_Resolution_Protocol ARP] types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| ARP HLEN, hardware address length in octets (8 bit integer)&lt;br /&gt;
| [[Matching_packet_headers#Matching_ARP_headers|&#039;&#039;arp hlen&#039;&#039; &amp;amp;laquo;HLEN&amp;amp;raquo;]]&lt;br /&gt;
| Unnamed 8-bit integer in nftables.&lt;br /&gt;
For ethernet HLEN&amp;amp;nbsp;=&amp;amp;nbsp;6.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| ARP HTYPE, hardware type (16 bit integer)&lt;br /&gt;
| [[Matching_packet_headers#Matching_ARP_headers|&#039;&#039;arp htype&#039;&#039; &amp;amp;laquo;HTYPE&amp;amp;raquo;]]&lt;br /&gt;
| Unnamed 16-bit integer in nftables.&lt;br /&gt;
[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/if_arp.h if_arp.h] has known types.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| ARP PLEN, internetwork address length in octets (8 bit integer)&lt;br /&gt;
| [[Matching_packet_headers#Matching_ARP_headers|&#039;&#039;arp plen&#039;&#039; &amp;amp;laquo;PLEN&amp;amp;raquo;]]&lt;br /&gt;
| Unnamed 8-bit integer in nftables.&lt;br /&gt;
For IPv4 PLEN&amp;amp;nbsp;=&amp;amp;nbsp;4.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| arp_op&lt;br /&gt;
| ARP operation (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;request&#039;&#039; = 1&lt;br /&gt;
* &#039;&#039;reply&#039;&#039; = 2&lt;br /&gt;
* &#039;&#039;rrequest&#039;&#039; = 3&lt;br /&gt;
* &#039;&#039;rreply&#039;&#039; = 4&lt;br /&gt;
* &#039;&#039;inrequest&#039;&#039; = 8&lt;br /&gt;
* &#039;&#039;inreply&#039;&#039; = 9&lt;br /&gt;
* &#039;&#039;nak&#039;&#039; = 10&lt;br /&gt;
| [[Matching_packet_headers#Matching_ARP_headers|&#039;&#039;arp operation&#039;&#039; &amp;amp;laquo;arp_op&amp;amp;raquo;]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IP types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|IP types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet_proto&lt;br /&gt;
| Internet protocol (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;tcp&#039;&#039;&lt;br /&gt;
* &#039;&#039;udp&#039;&#039;&lt;br /&gt;
* &#039;&#039;udplite&#039;&#039;&lt;br /&gt;
* &#039;&#039;esp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ah&#039;&#039;&lt;br /&gt;
* &#039;&#039;icmp&#039;&#039;&lt;br /&gt;
* &#039;&#039;icmpv6&#039;&#039;&lt;br /&gt;
* &#039;&#039;comp&#039;&#039;&lt;br /&gt;
* &#039;&#039;dccp&#039;&#039;&lt;br /&gt;
* &#039;&#039;sctp&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_transport_protocol|&#039;&#039;ip protocol&#039;&#039;]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv6_headers|&#039;&#039;ip6 nexthdr&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ah nexthdr&#039;&#039;&lt;br /&gt;
* &#039;&#039;comp nexthdr&#039;&#039;&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;protocol&#039;&#039;]]&lt;br /&gt;
| [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/in.h in.h] has known types.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet_service&lt;br /&gt;
| Network service port number (16 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;udp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;tcp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;udplite&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;sctp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;dccp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ipv4_addr&lt;br /&gt;
| IPv4 address (32 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv4_headers|&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;} ]]&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* [[Matching routing information|&#039;&#039;rt&amp;amp;nbsp;ip&amp;amp;nbsp;nexthop&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ipsec&#039;&#039;&amp;amp;nbsp;{&#039;&#039;in&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;out&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ipv6_addr&lt;br /&gt;
| IPv6 address (128 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv6_headers|&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;} ]]&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* [[Matching routing information|&#039;&#039;rt&amp;amp;nbsp;ip6&amp;amp;nbsp;nexthop&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ipsec&#039;&#039;&amp;amp;nbsp;{&#039;&#039;in&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;out&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conntrack types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Conntrack types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_dir&lt;br /&gt;
| Conntrack direction (8 bit integer).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
original       0&lt;br /&gt;
reply          1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_event&lt;br /&gt;
| Conntrack event bits (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new            1&lt;br /&gt;
related        2&lt;br /&gt;
destroy        4&lt;br /&gt;
reply          8&lt;br /&gt;
assured       16&lt;br /&gt;
protoinfo     32&lt;br /&gt;
helper        64&lt;br /&gt;
mark         128&lt;br /&gt;
seqadj       256&lt;br /&gt;
secmark      512&lt;br /&gt;
label       1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_label&lt;br /&gt;
| Conntrack label (128 bit bitmask).&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_state&lt;br /&gt;
| Conntrack state (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
invalid        1&lt;br /&gt;
established    2&lt;br /&gt;
related        4&lt;br /&gt;
new            8&lt;br /&gt;
untracked     64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_status&lt;br /&gt;
| Conntrack status (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
expected       1&lt;br /&gt;
seen-reply     2&lt;br /&gt;
assured        4&lt;br /&gt;
confirmed      8&lt;br /&gt;
snat          16&lt;br /&gt;
dnat          32&lt;br /&gt;
dying        512&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Other types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| gid&lt;br /&gt;
| Group ID (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;skgid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as group name.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| mark&lt;br /&gt;
| Packet mark (32 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_metainformation#Matching_by_packet_mark.2C_routing_class_and_realm|&#039;&#039;meta&amp;amp;nbsp;mark&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;socket&amp;amp;nbsp;mark&#039;&#039;&lt;br /&gt;
* [[Matching routing information|&#039;&#039;fib&amp;amp;nbsp;mark&amp;amp;nbsp;.&amp;amp;nbsp;&#039;&#039;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;iif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oif&#039;&#039;}&amp;amp;nbsp;[.&amp;amp;nbsp;...]&amp;amp;nbsp;{&#039;&#039;oif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifname&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;type&#039;&#039;}]]&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&amp;amp;nbsp;mark&#039;&#039;]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| pkt_type&lt;br /&gt;
| Packet type (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;host&#039;&#039; or &#039;&#039;unicast&#039;&#039; - addressed to local host&lt;br /&gt;
* &#039;&#039;broadcast&#039;&#039; - to all&lt;br /&gt;
* &#039;&#039;multicast&#039;&#039; - to group&lt;br /&gt;
* &#039;&#039;other&#039;&#039; - addressed to another host&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;pkttype&#039;&#039;]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| realm&lt;br /&gt;
| Routing Realm (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;rtclassid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as symbolic name defined in /etc/iproute2/rt_realms.&lt;br /&gt;
Routing realm references:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://linux-ip.net/gl/ip-cref/ip-cref-node172.html linux-ip.net]&lt;br /&gt;
&amp;lt;li&amp;gt;[http://www.policyrouting.org/PolicyRoutingBook/ONLINE/CH07.web.html policyrouting.org]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| uid&lt;br /&gt;
| User ID (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;skuid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as user name.&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=967</id>
		<title>Matching packet headers</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=967"/>
		<updated>2021-04-20T14:55:09Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Matching ARP headers: added brief descriptions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;nft&#039;&#039; command line utility supports the following layer 4 protocols: AH, ESP, UDP, UDPlite, TCP, DCCP, SCTP and IPComp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ethernet headers =&lt;br /&gt;
&lt;br /&gt;
You can match packets on [https://en.wikipedia.org/wiki/Ethernet ethernet] source or destination address or on [https://en.wikipedia.org/wiki/EtherType EtherType]:&lt;br /&gt;
* &#039;&#039;ether&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr&#039;&#039;} &amp;amp;laquo;[[Data_types#Ethernet_types|ether_addr]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;ether type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo;&lt;br /&gt;
&lt;br /&gt;
If you want to match ethernet traffic whose destination address is ff:ff:ff:ff:ff:ff, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ether daddr ff:ff:ff:ff:ff:ff counter &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also match packets on [https://en.wikipedia.org/wiki/IEEE_802.1Q IEEE 802.1Q] VLAN fields, if present:&lt;br /&gt;
* &#039;&#039;vlan type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo; - always &#039;&#039;vlan&#039;&#039; for 802.1Q&lt;br /&gt;
* &#039;&#039;vlan id&#039;&#039; &amp;amp;laquo;12-bit integer&amp;amp;raquo; - match VID, the VLAN ID&lt;br /&gt;
* &#039;&#039;vlan cfi&#039;&#039; &amp;amp;laquo;1-bit integer&amp;amp;raquo; - match DEI, Drop Eligible Indicator (formerly CFI, Canonical Format Indicator) &lt;br /&gt;
* &#039;&#039;vlan pcp&#039;&#039; &amp;amp;laquo;3-bit integer&amp;amp;raquo; - match [https://en.wikipedia.org/wiki/IEEE_P802.1p IEEE P802.1p PCP, Priority Code Point]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do not forget that the [https://en.wikipedia.org/wiki/Link_layer layer 2] header information is only available in the input path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ARP headers =&lt;br /&gt;
&lt;br /&gt;
You can match [https://en.wikipedia.org/wiki/Address_Resolution_Protocol ARP] headers:&lt;br /&gt;
* &#039;&#039;arp htype&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|16-bit integer HTYPE]]&amp;amp;raquo; - match hardware link protocol type (1 for ethernet)&lt;br /&gt;
* &#039;&#039;arp ptype&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo; - match EtherType&lt;br /&gt;
* &#039;&#039;arp hlen&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|8-bit integer HLEN]]&amp;amp;raquo; - match hardware address length in octets (6 for ethernet)&lt;br /&gt;
* &#039;&#039;arp plen&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|8-bit integer PLEN]]&amp;amp;raquo; - match internetwork protocol address length in octets (4 for IPv4)&lt;br /&gt;
* &#039;&#039;arp operation&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|arp_op]]&amp;amp;raquo; - match ARP operation&lt;br /&gt;
* &#039;&#039;arp&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr &#039;&#039;} &#039;&#039;ether&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_addr]]&amp;amp;raquo; - &#039;&#039;saddr&#039;&#039; matches SHA, Sender Hardware Address; &#039;&#039;daddr&#039;&#039; matches THA, Target Hardware Address &lt;br /&gt;
* &#039;&#039;arp&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr &#039;&#039;} &#039;&#039;ip&#039;&#039; &amp;amp;laquo;[[Data_types#IP_types|ipv4_addr]]&amp;amp;raquo; - &#039;&#039;saddr&#039;&#039; matches SPA, Sender Protocol Address; &#039;&#039;daddr&#039;&#039; matches TPA, Target Protocol Address&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv4 headers =&lt;br /&gt;
&lt;br /&gt;
You can also match traffic based on the IPv4 source and destination, the following example shows how to account all traffic that comes from 192.168.1.100 and that is addressed to 192.168.1.1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip saddr 192.168.1.100 ip daddr 192.168.1.1 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that, since the rule is attached to the input chain, your local machine needs to use the 192.168.1.1 address, otherwise you won&#039;t see any matching ;-).&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;protocol&#039;&#039; keyword:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input protocol tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ICMP traffic =&lt;br /&gt;
&lt;br /&gt;
You can drop all [https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol ICMP] echo requests (popularly known as &#039;&#039;pings&#039;&#039;) via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input icmp type echo-request counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft describe&#039;&#039; to find &#039;&#039;nft&#039;&#039;&#039;s available &#039;&#039;icmp type&#039;&#039; keywords:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp type&lt;br /&gt;
payload expression, datatype icmp_type (ICMP type) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        echo-reply                                         0&lt;br /&gt;
        destination-unreachable                            3&lt;br /&gt;
        source-quench                                      4&lt;br /&gt;
        redirect                                           5&lt;br /&gt;
        echo-request                                       8&lt;br /&gt;
        router-advertisement                               9&lt;br /&gt;
        router-solicitation                               10&lt;br /&gt;
        time-exceeded                                     11&lt;br /&gt;
        parameter-problem                                 12&lt;br /&gt;
        timestamp-request                                 13&lt;br /&gt;
        timestamp-reply                                   14&lt;br /&gt;
        info-request                                      15&lt;br /&gt;
        info-reply                                        16&lt;br /&gt;
        address-mask-request                              17&lt;br /&gt;
        address-mask-reply                                18&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also be more specific by matching a single icmp code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp code&lt;br /&gt;
payload expression, datatype icmp_code (icmp code) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        net-unreachable                                    0&lt;br /&gt;
        host-unreachable                                   1&lt;br /&gt;
        prot-unreachable                                   2&lt;br /&gt;
        port-unreachable                                   3&lt;br /&gt;
        net-prohibited                                     9&lt;br /&gt;
        host-prohibited                                   10&lt;br /&gt;
        admin-prohibited                                  13&lt;br /&gt;
        frag-needed                                        4&lt;br /&gt;
&lt;br /&gt;
% nft add rule filter output icmp code frag-needed counter accept&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv6 headers =&lt;br /&gt;
&lt;br /&gt;
If you want to account IPv6 traffic that is addressed to &#039;&#039;abcd::100&#039;&#039;, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip6 daddr abcd::100 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;nexthdr&#039;&#039; keyword:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip6 nexthdr tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do not forget to create an &#039;&#039;ip6&#039;&#039; [[Configuring tables|table]] and register the corresponding [[Configuring chains|chains]] to run the examples.&lt;br /&gt;
&lt;br /&gt;
NOTE: the syntax mixing IPv6/IPv4 notation is not supported yet: &#039;::ffff:192.168.1.0&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching transport protocol =&lt;br /&gt;
&lt;br /&gt;
The following rule shows how to match any kind of &#039;&#039;TCP&#039;&#039; traffic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip protocol tcp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching TCP/UDP/UDPlite traffic =&lt;br /&gt;
&lt;br /&gt;
The following examples show how to drop all tcp traffic for low TCP ports (1-1024):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp dport 1-1024 counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this rule is using an [[intervals|interval]] (from 1 to 1024).&lt;br /&gt;
&lt;br /&gt;
To match on TCP flags, you need to use a binary operation. For example, to count packets that are not SYN ones:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp flags != syn counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More complex filters can be used. For example, to count and log TCP packets with flags SYN and ACK set:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft -i&lt;br /&gt;
nft&amp;gt; add rule filter output tcp flags &amp;amp; (syn | ack) == syn | ack counter log&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example drops TCP SYN packets which a MSS lower than 500:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule inet filter input tcp flags syn tcp option maxseg size 1-500 drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching UDP/TCP headers in the same rule =&lt;br /&gt;
&lt;br /&gt;
The following example uses an anonymous l4proto [[Sets|set]] and a &#039;&#039;th&#039;&#039; (transport header) expression to match both TCP and UDP packets directed to port 53 (DNS):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  th dport 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Before nftables 0.9.2 and Linux kernel 5.3 the &#039;&#039;th&#039;&#039; expression is not available. In this case you can use a raw payload expression to do the same job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  @th,16,16 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=966</id>
		<title>Matching packet headers</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=966"/>
		<updated>2021-04-20T14:34:05Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Reordered sections, moving up network layers and matching man page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;nft&#039;&#039; command line utility supports the following layer 4 protocols: AH, ESP, UDP, UDPlite, TCP, DCCP, SCTP and IPComp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ethernet headers =&lt;br /&gt;
&lt;br /&gt;
You can match packets on [https://en.wikipedia.org/wiki/Ethernet ethernet] source or destination address or on [https://en.wikipedia.org/wiki/EtherType EtherType]:&lt;br /&gt;
* &#039;&#039;ether&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr&#039;&#039;} &amp;amp;laquo;[[Data_types#Ethernet_types|ether_addr]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;ether type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo;&lt;br /&gt;
&lt;br /&gt;
If you want to match ethernet traffic whose destination address is ff:ff:ff:ff:ff:ff, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ether daddr ff:ff:ff:ff:ff:ff counter &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also match packets on [https://en.wikipedia.org/wiki/IEEE_802.1Q IEEE 802.1Q] VLAN fields, if present:&lt;br /&gt;
* &#039;&#039;vlan type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo; - always &#039;&#039;vlan&#039;&#039; for 802.1Q&lt;br /&gt;
* &#039;&#039;vlan id&#039;&#039; &amp;amp;laquo;12-bit integer&amp;amp;raquo; - match VID, the VLAN ID&lt;br /&gt;
* &#039;&#039;vlan cfi&#039;&#039; &amp;amp;laquo;1-bit integer&amp;amp;raquo; - match DEI, Drop Eligible Indicator (formerly CFI, Canonical Format Indicator) &lt;br /&gt;
* &#039;&#039;vlan pcp&#039;&#039; &amp;amp;laquo;3-bit integer&amp;amp;raquo; - match [https://en.wikipedia.org/wiki/IEEE_P802.1p IEEE P802.1p PCP, Priority Code Point]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do not forget that the [https://en.wikipedia.org/wiki/Link_layer layer 2] header information is only available in the input path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ARP headers =&lt;br /&gt;
&lt;br /&gt;
You can match [https://en.wikipedia.org/wiki/Address_Resolution_Protocol ARP] headers:&lt;br /&gt;
* &#039;&#039;arp htype&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|16-bit integer HTYPE]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp ptype&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp hlen&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|8-bit integer HLEN]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp plen&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|8-bit integer PLEN]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp operation&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|arp_op]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr &#039;&#039;} &#039;&#039;ether&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_addr]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr &#039;&#039;} &#039;&#039;ip&#039;&#039; &amp;amp;laquo;[[Data_types#IP_types|ipv4_addr]]&amp;amp;raquo;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv4 headers =&lt;br /&gt;
&lt;br /&gt;
You can also match traffic based on the IPv4 source and destination, the following example shows how to account all traffic that comes from 192.168.1.100 and that is addressed to 192.168.1.1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip saddr 192.168.1.100 ip daddr 192.168.1.1 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that, since the rule is attached to the input chain, your local machine needs to use the 192.168.1.1 address, otherwise you won&#039;t see any matching ;-).&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;protocol&#039;&#039; keyword:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input protocol tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ICMP traffic =&lt;br /&gt;
&lt;br /&gt;
You can drop all [https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol ICMP] echo requests (popularly known as &#039;&#039;pings&#039;&#039;) via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input icmp type echo-request counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft describe&#039;&#039; to find &#039;&#039;nft&#039;&#039;&#039;s available &#039;&#039;icmp type&#039;&#039; keywords:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp type&lt;br /&gt;
payload expression, datatype icmp_type (ICMP type) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        echo-reply                                         0&lt;br /&gt;
        destination-unreachable                            3&lt;br /&gt;
        source-quench                                      4&lt;br /&gt;
        redirect                                           5&lt;br /&gt;
        echo-request                                       8&lt;br /&gt;
        router-advertisement                               9&lt;br /&gt;
        router-solicitation                               10&lt;br /&gt;
        time-exceeded                                     11&lt;br /&gt;
        parameter-problem                                 12&lt;br /&gt;
        timestamp-request                                 13&lt;br /&gt;
        timestamp-reply                                   14&lt;br /&gt;
        info-request                                      15&lt;br /&gt;
        info-reply                                        16&lt;br /&gt;
        address-mask-request                              17&lt;br /&gt;
        address-mask-reply                                18&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also be more specific by matching a single icmp code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp code&lt;br /&gt;
payload expression, datatype icmp_code (icmp code) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        net-unreachable                                    0&lt;br /&gt;
        host-unreachable                                   1&lt;br /&gt;
        prot-unreachable                                   2&lt;br /&gt;
        port-unreachable                                   3&lt;br /&gt;
        net-prohibited                                     9&lt;br /&gt;
        host-prohibited                                   10&lt;br /&gt;
        admin-prohibited                                  13&lt;br /&gt;
        frag-needed                                        4&lt;br /&gt;
&lt;br /&gt;
% nft add rule filter output icmp code frag-needed counter accept&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv6 headers =&lt;br /&gt;
&lt;br /&gt;
If you want to account IPv6 traffic that is addressed to &#039;&#039;abcd::100&#039;&#039;, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip6 daddr abcd::100 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;nexthdr&#039;&#039; keyword:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip6 nexthdr tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do not forget to create an &#039;&#039;ip6&#039;&#039; [[Configuring tables|table]] and register the corresponding [[Configuring chains|chains]] to run the examples.&lt;br /&gt;
&lt;br /&gt;
NOTE: the syntax mixing IPv6/IPv4 notation is not supported yet: &#039;::ffff:192.168.1.0&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching transport protocol =&lt;br /&gt;
&lt;br /&gt;
The following rule shows how to match any kind of &#039;&#039;TCP&#039;&#039; traffic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip protocol tcp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching TCP/UDP/UDPlite traffic =&lt;br /&gt;
&lt;br /&gt;
The following examples show how to drop all tcp traffic for low TCP ports (1-1024):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp dport 1-1024 counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this rule is using an [[intervals|interval]] (from 1 to 1024).&lt;br /&gt;
&lt;br /&gt;
To match on TCP flags, you need to use a binary operation. For example, to count packets that are not SYN ones:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp flags != syn counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More complex filters can be used. For example, to count and log TCP packets with flags SYN and ACK set:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft -i&lt;br /&gt;
nft&amp;gt; add rule filter output tcp flags &amp;amp; (syn | ack) == syn | ack counter log&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example drops TCP SYN packets which a MSS lower than 500:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule inet filter input tcp flags syn tcp option maxseg size 1-500 drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching UDP/TCP headers in the same rule =&lt;br /&gt;
&lt;br /&gt;
The following example uses an anonymous l4proto [[Sets|set]] and a &#039;&#039;th&#039;&#039; (transport header) expression to match both TCP and UDP packets directed to port 53 (DNS):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  th dport 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Before nftables 0.9.2 and Linux kernel 5.3 the &#039;&#039;th&#039;&#039; expression is not available. In this case you can use a raw payload expression to do the same job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  @th,16,16 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=965</id>
		<title>Matching packet headers</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=965"/>
		<updated>2021-04-20T14:28:04Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Added section: Matching ARP headers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;nft&#039;&#039; command line utility supports the following layer 4 protocols: AH, ESP, UDP, UDPlite, TCP, DCCP, SCTP and IPComp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ethernet headers =&lt;br /&gt;
&lt;br /&gt;
You can match packets on [https://en.wikipedia.org/wiki/Ethernet ethernet] source or destination address or on [https://en.wikipedia.org/wiki/EtherType EtherType]:&lt;br /&gt;
* &#039;&#039;ether&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr&#039;&#039;} &amp;amp;laquo;[[Data_types#Ethernet_types|ether_addr]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;ether type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo;&lt;br /&gt;
&lt;br /&gt;
If you want to match ethernet traffic whose destination address is ff:ff:ff:ff:ff:ff, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ether daddr ff:ff:ff:ff:ff:ff counter &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also match packets on [https://en.wikipedia.org/wiki/IEEE_802.1Q IEEE 802.1Q] VLAN fields, if present:&lt;br /&gt;
* &#039;&#039;vlan type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo; - always &#039;&#039;vlan&#039;&#039; for 802.1Q&lt;br /&gt;
* &#039;&#039;vlan id&#039;&#039; &amp;amp;laquo;12-bit integer&amp;amp;raquo; - match VID, the VLAN ID&lt;br /&gt;
* &#039;&#039;vlan cfi&#039;&#039; &amp;amp;laquo;1-bit integer&amp;amp;raquo; - match DEI, Drop Eligible Indicator (formerly CFI, Canonical Format Indicator) &lt;br /&gt;
* &#039;&#039;vlan pcp&#039;&#039; &amp;amp;laquo;3-bit integer&amp;amp;raquo; - match [https://en.wikipedia.org/wiki/IEEE_P802.1p IEEE P802.1p PCP, Priority Code Point]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do not forget that the [https://en.wikipedia.org/wiki/Link_layer layer 2] header information is only available in the input path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ARP headers =&lt;br /&gt;
&lt;br /&gt;
You can match [https://en.wikipedia.org/wiki/Address_Resolution_Protocol ARP] headers:&lt;br /&gt;
* &#039;&#039;arp htype&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|16-bit integer HTYPE]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp ptype&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp hlen&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|8-bit integer HLEN]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp plen&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|8-bit integer PLEN]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp operation&#039;&#039; &amp;amp;laquo;[[Data_types#ARP_types|arp_op]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr &#039;&#039;} &#039;&#039;ether&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_addr]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;arp&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr &#039;&#039;} &#039;&#039;ip&#039;&#039; &amp;amp;laquo;[[Data_types#IP_types|ipv4_addr]]&amp;amp;raquo;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching transport protocol =&lt;br /&gt;
&lt;br /&gt;
The following rule shows how to match any kind of &#039;&#039;TCP&#039;&#039; traffic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip protocol tcp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv4 headers =&lt;br /&gt;
&lt;br /&gt;
You can also match traffic based on the IPv4 source and destination, the following example shows how to account all traffic that comes from 192.168.1.100 and that is addressed to 192.168.1.1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip saddr 192.168.1.100 ip daddr 192.168.1.1 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that, since the rule is attached to the input chain, your local machine needs to use the 192.168.1.1 address, otherwise you won&#039;t see any matching ;-).&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;protocol&#039;&#039; keyword:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input protocol tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv6 headers =&lt;br /&gt;
&lt;br /&gt;
If you want to account IPv6 traffic that is addressed to &#039;&#039;abcd::100&#039;&#039;, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip6 daddr abcd::100 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;nexthdr&#039;&#039; keyword:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip6 nexthdr tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do not forget to create an &#039;&#039;ip6&#039;&#039; [[Configuring tables|table]] and register the corresponding [[Configuring chains|chains]] to run the examples.&lt;br /&gt;
&lt;br /&gt;
NOTE: the syntax mixing IPv6/IPv4 notation is not supported yet: &#039;::ffff:192.168.1.0&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching TCP/UDP/UDPlite traffic =&lt;br /&gt;
&lt;br /&gt;
The following examples show how to drop all tcp traffic for low TCP ports (1-1024):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp dport 1-1024 counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this rule is using an [[intervals|interval]] (from 1 to 1024).&lt;br /&gt;
&lt;br /&gt;
To match on TCP flags, you need to use a binary operation. For example, to count packets that are not SYN ones:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp flags != syn counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More complex filters can be used. For example, to count and log TCP packets with flags SYN and ACK set:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft -i&lt;br /&gt;
nft&amp;gt; add rule filter output tcp flags &amp;amp; (syn | ack) == syn | ack counter log&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example drops TCP SYN packets which a MSS lower than 500:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule inet filter input tcp flags syn tcp option maxseg size 1-500 drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ICMP traffic =&lt;br /&gt;
&lt;br /&gt;
You can drop all [https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol ICMP] echo requests (popularly known as &#039;&#039;pings&#039;&#039;) via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input icmp type echo-request counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft describe&#039;&#039; to find &#039;&#039;nft&#039;&#039;&#039;s available &#039;&#039;icmp type&#039;&#039; keywords:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp type&lt;br /&gt;
payload expression, datatype icmp_type (ICMP type) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        echo-reply                                         0&lt;br /&gt;
        destination-unreachable                            3&lt;br /&gt;
        source-quench                                      4&lt;br /&gt;
        redirect                                           5&lt;br /&gt;
        echo-request                                       8&lt;br /&gt;
        router-advertisement                               9&lt;br /&gt;
        router-solicitation                               10&lt;br /&gt;
        time-exceeded                                     11&lt;br /&gt;
        parameter-problem                                 12&lt;br /&gt;
        timestamp-request                                 13&lt;br /&gt;
        timestamp-reply                                   14&lt;br /&gt;
        info-request                                      15&lt;br /&gt;
        info-reply                                        16&lt;br /&gt;
        address-mask-request                              17&lt;br /&gt;
        address-mask-reply                                18&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also be more specific by matching a single icmp code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp code&lt;br /&gt;
payload expression, datatype icmp_code (icmp code) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        net-unreachable                                    0&lt;br /&gt;
        host-unreachable                                   1&lt;br /&gt;
        prot-unreachable                                   2&lt;br /&gt;
        port-unreachable                                   3&lt;br /&gt;
        net-prohibited                                     9&lt;br /&gt;
        host-prohibited                                   10&lt;br /&gt;
        admin-prohibited                                  13&lt;br /&gt;
        frag-needed                                        4&lt;br /&gt;
&lt;br /&gt;
% nft add rule filter output icmp code frag-needed counter accept&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching UDP/TCP headers in the same rule =&lt;br /&gt;
&lt;br /&gt;
The following example uses an anonymous l4proto [[Sets|set]] and a &#039;&#039;th&#039;&#039; (transport header) expression to match both TCP and UDP packets directed to port 53 (DNS):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  th dport 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Before nftables 0.9.2 and Linux kernel 5.3 the &#039;&#039;th&#039;&#039; expression is not available. In this case you can use a raw payload expression to do the same job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  @th,16,16 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Data_types&amp;diff=964</id>
		<title>Data types</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Data_types&amp;diff=964"/>
		<updated>2021-04-20T14:27:24Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: ARP types: added descriptions of some unnamed types.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &#039;&#039;nft describe&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft describe&#039;&#039; to get information about a data type, to find out the data type of a particular selector, and to list predefined symbolic constants for that selector. Some examples:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;% nft describe iif&lt;br /&gt;
meta expression, datatype iface_index (network interface index) (basetype integer), 32 bits&lt;br /&gt;
&lt;br /&gt;
% nft describe iifname&lt;br /&gt;
meta expression, datatype ifname (network interface name) (basetype string), 16 characters&lt;br /&gt;
&lt;br /&gt;
% nft describe tcp flags&lt;br /&gt;
payload expression, datatype tcp_flag (TCP flag) (basetype bitmask, integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in hexadecimal):&lt;br /&gt;
        fin                             0x01&lt;br /&gt;
        syn                             0x02&lt;br /&gt;
        rst                             0x04&lt;br /&gt;
        psh                             0x08&lt;br /&gt;
        ack                             0x10&lt;br /&gt;
        urg                             0x20&lt;br /&gt;
        ecn                             0x40&lt;br /&gt;
        cwr                             0x80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= List of data types =&lt;br /&gt;
&lt;br /&gt;
== Date and time types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Date and time types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| day&lt;br /&gt;
| Day of week of packet reception (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;Sunday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Monday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Tuesday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Wednesday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Thursday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Friday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Saturday&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;day&#039;&#039;]]&lt;br /&gt;
| &#039;&#039;Sunday&#039;&#039; = 0, &#039;&#039;Saturday&#039;&#039; = 6.&lt;br /&gt;
Symbolic constants are case insensitive, and unique abbreviations are accepted: &#039;&#039;Sun&#039;&#039; = &#039;&#039;sun&#039;&#039; = &#039;&#039;Sunday&#039;&#039; = 0.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| hour&lt;br /&gt;
| Hour of day of packet reception (32 bit integer).&lt;br /&gt;
Specify as string in 24-hour format, hh:mm[:ss].&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;hour&#039;&#039;]]&lt;br /&gt;
| Seconds are optional: &#039;&#039;17:00&#039;&#039; = &#039;&#039;17:00:00&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| time&lt;br /&gt;
| Relative time of packet reception (64 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;time&#039;&#039;]]&lt;br /&gt;
| Can be specified as a date in ISO format, i.e. &amp;quot;2019-06-06 17:00&amp;quot;. Hour and seconds are optional and can be omitted if desired. If omitted, midnight will be assumed. The following three are equivalent: &amp;quot;2019-06-06&amp;quot; = &amp;quot;2019-06-06 00:00&amp;quot; = &amp;quot;2019-06-06 00:00:00&amp;quot;.&lt;br /&gt;
When an integer is specified, it is assumed to be a UNIX timestamp.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Network interface types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Network interface types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| devgroup&lt;br /&gt;
| Device group (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifgroup&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifgroup&#039;&#039;}]]&lt;br /&gt;
| Can be specified numerically or as symbolic name defined in /etc/iproute2/group.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| iface_index&lt;br /&gt;
| Interface index (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oif&#039;&#039;}]]&lt;br /&gt;
| Can be specified numerically or as name of an existing interface.&lt;br /&gt;
Use ifname instead for interfaces whose name and/or index can change (i.e. those that appear / disappear dynamically).&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| iface_type&lt;br /&gt;
| Interface type (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;ether&#039;&#039;&lt;br /&gt;
* &#039;&#039;ppp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipip&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipip6&#039;&#039;&lt;br /&gt;
* &#039;&#039;loopback&#039;&#039;&lt;br /&gt;
* &#039;&#039;sit&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipgre&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iiftype&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oiftype&#039;&#039;}]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ifkind&lt;br /&gt;
| Interface kind name (16 byte string).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifkind&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifkind&#039;&#039;}]]&lt;br /&gt;
| dev-&amp;gt;rtnl_link_ops-&amp;gt;kind&lt;br /&gt;
The &#039;&#039;man 8 ip-link&#039;&#039; TYPES section lists valid ifkinds. It&#039;s missing at least one: &#039;&#039;tun&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ifname&lt;br /&gt;
| Interface name (16 byte string).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifname&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifname&#039;&#039;}]]&lt;br /&gt;
| Does not have to exist.&lt;br /&gt;
Slower than iface_index but good for interfaces that can dynamically appear / disappear.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ethernet types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Ethernet types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ether_addr&lt;br /&gt;
| Ethernet address (48 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_ethernet_headers|&#039;&#039;ether&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ether&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ether_type&lt;br /&gt;
| [https://en.wikipedia.org/wiki/EtherType EtherType] (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ip&#039;&#039;&lt;br /&gt;
* &#039;&#039;ip6&#039;&#039;&lt;br /&gt;
* &#039;&#039;vlan&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;protocol&#039;&#039;]]&lt;br /&gt;
| [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/if_ether.h ether.h] has known types.&lt;br /&gt;
NOTE that ether.h lists EtherTypes in [https://en.wikipedia.org/wiki/Endianness#Networking network&amp;amp;nbsp;order], while nft uses little-endian order on x86. (Check output of &#039;&#039;nft describe ether_type&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ARP types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|ARP types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| ARP HLEN, hardware address length in octets (8 bit integer)&lt;br /&gt;
| &#039;&#039;arp hlen&#039;&#039; &amp;amp;laquo;HLEN&amp;amp;raquo;&lt;br /&gt;
| Unnamed 8-bit integer in nftables.&lt;br /&gt;
For ethernet HLEN&amp;amp;nbsp;=&amp;amp;nbsp;6.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| ARP HTYPE, hardware type (16 bit integer)&lt;br /&gt;
| &#039;&#039;arp htype&#039;&#039; &amp;amp;laquo;HTYPE&amp;amp;raquo;&lt;br /&gt;
| Unnamed 16-bit integer in nftables.&lt;br /&gt;
[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/if_arp.h if_arp.h] has known types.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| ARP PLEN, internetwork address length in octets (8 bit integer)&lt;br /&gt;
| &#039;&#039;arp plen&#039;&#039; &amp;amp;laquo;PLEN&amp;amp;raquo;&lt;br /&gt;
| Unnamed 8-bit integer in nftables.&lt;br /&gt;
For IPv4 PLEN&amp;amp;nbsp;=&amp;amp;nbsp;4.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| arp_op&lt;br /&gt;
| ARP operation (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;request&#039;&#039; = 1&lt;br /&gt;
* &#039;&#039;reply&#039;&#039; = 2&lt;br /&gt;
* &#039;&#039;rrequest&#039;&#039; = 3&lt;br /&gt;
* &#039;&#039;rreply&#039;&#039; = 4&lt;br /&gt;
* &#039;&#039;inrequest&#039;&#039; = 8&lt;br /&gt;
* &#039;&#039;inreply&#039;&#039; = 9&lt;br /&gt;
* &#039;&#039;nak&#039;&#039; = 10&lt;br /&gt;
| &#039;&#039;arp operation&#039;&#039; &amp;amp;laquo;arp_op&amp;amp;raquo;&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IP types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|IP types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet_proto&lt;br /&gt;
| Internet protocol (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;tcp&#039;&#039;&lt;br /&gt;
* &#039;&#039;udp&#039;&#039;&lt;br /&gt;
* &#039;&#039;udplite&#039;&#039;&lt;br /&gt;
* &#039;&#039;esp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ah&#039;&#039;&lt;br /&gt;
* &#039;&#039;icmp&#039;&#039;&lt;br /&gt;
* &#039;&#039;icmpv6&#039;&#039;&lt;br /&gt;
* &#039;&#039;comp&#039;&#039;&lt;br /&gt;
* &#039;&#039;dccp&#039;&#039;&lt;br /&gt;
* &#039;&#039;sctp&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_transport_protocol|&#039;&#039;ip protocol&#039;&#039;]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv6_headers|&#039;&#039;ip6 nexthdr&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ah nexthdr&#039;&#039;&lt;br /&gt;
* &#039;&#039;comp nexthdr&#039;&#039;&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;protocol&#039;&#039;]]&lt;br /&gt;
| [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/in.h in.h] has known types.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet_service&lt;br /&gt;
| Network service port number (16 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;udp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;tcp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;udplite&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;sctp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;dccp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ipv4_addr&lt;br /&gt;
| IPv4 address (32 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv4_headers|&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;} ]]&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* [[Matching routing information|&#039;&#039;rt&amp;amp;nbsp;ip&amp;amp;nbsp;nexthop&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ipsec&#039;&#039;&amp;amp;nbsp;{&#039;&#039;in&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;out&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ipv6_addr&lt;br /&gt;
| IPv6 address (128 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv6_headers|&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;} ]]&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* [[Matching routing information|&#039;&#039;rt&amp;amp;nbsp;ip6&amp;amp;nbsp;nexthop&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ipsec&#039;&#039;&amp;amp;nbsp;{&#039;&#039;in&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;out&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conntrack types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Conntrack types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_dir&lt;br /&gt;
| Conntrack direction (8 bit integer).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
original       0&lt;br /&gt;
reply          1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_event&lt;br /&gt;
| Conntrack event bits (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new            1&lt;br /&gt;
related        2&lt;br /&gt;
destroy        4&lt;br /&gt;
reply          8&lt;br /&gt;
assured       16&lt;br /&gt;
protoinfo     32&lt;br /&gt;
helper        64&lt;br /&gt;
mark         128&lt;br /&gt;
seqadj       256&lt;br /&gt;
secmark      512&lt;br /&gt;
label       1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_label&lt;br /&gt;
| Conntrack label (128 bit bitmask).&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_state&lt;br /&gt;
| Conntrack state (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
invalid        1&lt;br /&gt;
established    2&lt;br /&gt;
related        4&lt;br /&gt;
new            8&lt;br /&gt;
untracked     64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_status&lt;br /&gt;
| Conntrack status (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
expected       1&lt;br /&gt;
seen-reply     2&lt;br /&gt;
assured        4&lt;br /&gt;
confirmed      8&lt;br /&gt;
snat          16&lt;br /&gt;
dnat          32&lt;br /&gt;
dying        512&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Other types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| gid&lt;br /&gt;
| Group ID (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;skgid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as group name.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| mark&lt;br /&gt;
| Packet mark (32 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_metainformation#Matching_by_packet_mark.2C_routing_class_and_realm|&#039;&#039;meta&amp;amp;nbsp;mark&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;socket&amp;amp;nbsp;mark&#039;&#039;&lt;br /&gt;
* [[Matching routing information|&#039;&#039;fib&amp;amp;nbsp;mark&amp;amp;nbsp;.&amp;amp;nbsp;&#039;&#039;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;iif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oif&#039;&#039;}&amp;amp;nbsp;[.&amp;amp;nbsp;...]&amp;amp;nbsp;{&#039;&#039;oif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifname&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;type&#039;&#039;}]]&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&amp;amp;nbsp;mark&#039;&#039;]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| pkt_type&lt;br /&gt;
| Packet type (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;host&#039;&#039; or &#039;&#039;unicast&#039;&#039; - addressed to local host&lt;br /&gt;
* &#039;&#039;broadcast&#039;&#039; - to all&lt;br /&gt;
* &#039;&#039;multicast&#039;&#039; - to group&lt;br /&gt;
* &#039;&#039;other&#039;&#039; - addressed to another host&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;pkttype&#039;&#039;]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| realm&lt;br /&gt;
| Routing Realm (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;rtclassid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as symbolic name defined in /etc/iproute2/rt_realms.&lt;br /&gt;
Routing realm references:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://linux-ip.net/gl/ip-cref/ip-cref-node172.html linux-ip.net]&lt;br /&gt;
&amp;lt;li&amp;gt;[http://www.policyrouting.org/PolicyRoutingBook/ONLINE/CH07.web.html policyrouting.org]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| uid&lt;br /&gt;
| User ID (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;skuid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as user name.&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Data_types&amp;diff=963</id>
		<title>Data types</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Data_types&amp;diff=963"/>
		<updated>2021-04-20T13:59:17Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Added ARP types.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &#039;&#039;nft describe&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft describe&#039;&#039; to get information about a data type, to find out the data type of a particular selector, and to list predefined symbolic constants for that selector. Some examples:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;% nft describe iif&lt;br /&gt;
meta expression, datatype iface_index (network interface index) (basetype integer), 32 bits&lt;br /&gt;
&lt;br /&gt;
% nft describe iifname&lt;br /&gt;
meta expression, datatype ifname (network interface name) (basetype string), 16 characters&lt;br /&gt;
&lt;br /&gt;
% nft describe tcp flags&lt;br /&gt;
payload expression, datatype tcp_flag (TCP flag) (basetype bitmask, integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in hexadecimal):&lt;br /&gt;
        fin                             0x01&lt;br /&gt;
        syn                             0x02&lt;br /&gt;
        rst                             0x04&lt;br /&gt;
        psh                             0x08&lt;br /&gt;
        ack                             0x10&lt;br /&gt;
        urg                             0x20&lt;br /&gt;
        ecn                             0x40&lt;br /&gt;
        cwr                             0x80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= List of data types =&lt;br /&gt;
&lt;br /&gt;
== Date and time types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Date and time types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| day&lt;br /&gt;
| Day of week of packet reception (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;Sunday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Monday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Tuesday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Wednesday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Thursday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Friday&#039;&#039;&lt;br /&gt;
* &#039;&#039;Saturday&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;day&#039;&#039;]]&lt;br /&gt;
| &#039;&#039;Sunday&#039;&#039; = 0, &#039;&#039;Saturday&#039;&#039; = 6.&lt;br /&gt;
Symbolic constants are case insensitive, and unique abbreviations are accepted: &#039;&#039;Sun&#039;&#039; = &#039;&#039;sun&#039;&#039; = &#039;&#039;Sunday&#039;&#039; = 0.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| hour&lt;br /&gt;
| Hour of day of packet reception (32 bit integer).&lt;br /&gt;
Specify as string in 24-hour format, hh:mm[:ss].&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;hour&#039;&#039;]]&lt;br /&gt;
| Seconds are optional: &#039;&#039;17:00&#039;&#039; = &#039;&#039;17:00:00&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| time&lt;br /&gt;
| Relative time of packet reception (64 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;time&#039;&#039;]]&lt;br /&gt;
| Can be specified as a date in ISO format, i.e. &amp;quot;2019-06-06 17:00&amp;quot;. Hour and seconds are optional and can be omitted if desired. If omitted, midnight will be assumed. The following three are equivalent: &amp;quot;2019-06-06&amp;quot; = &amp;quot;2019-06-06 00:00&amp;quot; = &amp;quot;2019-06-06 00:00:00&amp;quot;.&lt;br /&gt;
When an integer is specified, it is assumed to be a UNIX timestamp.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Network interface types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Network interface types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| devgroup&lt;br /&gt;
| Device group (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifgroup&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifgroup&#039;&#039;}]]&lt;br /&gt;
| Can be specified numerically or as symbolic name defined in /etc/iproute2/group.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| iface_index&lt;br /&gt;
| Interface index (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oif&#039;&#039;}]]&lt;br /&gt;
| Can be specified numerically or as name of an existing interface.&lt;br /&gt;
Use ifname instead for interfaces whose name and/or index can change (i.e. those that appear / disappear dynamically).&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| iface_type&lt;br /&gt;
| Interface type (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;ether&#039;&#039;&lt;br /&gt;
* &#039;&#039;ppp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipip&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipip6&#039;&#039;&lt;br /&gt;
* &#039;&#039;loopback&#039;&#039;&lt;br /&gt;
* &#039;&#039;sit&#039;&#039;&lt;br /&gt;
* &#039;&#039;ipgre&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iiftype&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oiftype&#039;&#039;}]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ifkind&lt;br /&gt;
| Interface kind name (16 byte string).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifkind&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifkind&#039;&#039;}]]&lt;br /&gt;
| dev-&amp;gt;rtnl_link_ops-&amp;gt;kind&lt;br /&gt;
The &#039;&#039;man 8 ip-link&#039;&#039; TYPES section lists valid ifkinds. It&#039;s missing at least one: &#039;&#039;tun&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ifname&lt;br /&gt;
| Interface name (16 byte string).&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&#039;&#039;&amp;amp;nbsp;{&#039;&#039;iifname&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifname&#039;&#039;}]]&lt;br /&gt;
| Does not have to exist.&lt;br /&gt;
Slower than iface_index but good for interfaces that can dynamically appear / disappear.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ethernet types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Ethernet types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ether_addr&lt;br /&gt;
| Ethernet address (48 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_ethernet_headers|&#039;&#039;ether&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ether&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ether_type&lt;br /&gt;
| [https://en.wikipedia.org/wiki/EtherType EtherType] (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ip&#039;&#039;&lt;br /&gt;
* &#039;&#039;ip6&#039;&#039;&lt;br /&gt;
* &#039;&#039;vlan&#039;&#039;&lt;br /&gt;
| [[Matching_packet_metainformation|&#039;&#039;meta&amp;amp;nbsp;protocol&#039;&#039;]]&lt;br /&gt;
| [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/if_ether.h ether.h] has known types.&lt;br /&gt;
NOTE that ether.h lists EtherTypes in [https://en.wikipedia.org/wiki/Endianness#Networking network&amp;amp;nbsp;order], while nft uses little-endian order on x86. (Check output of &#039;&#039;nft describe ether_type&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ARP types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|ARP types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| arp_op&lt;br /&gt;
| ARP operation (16 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;request&#039;&#039; = 1&lt;br /&gt;
* &#039;&#039;reply&#039;&#039; = 2&lt;br /&gt;
* &#039;&#039;rrequest&#039;&#039; = 3&lt;br /&gt;
* &#039;&#039;rreply&#039;&#039; = 4&lt;br /&gt;
* &#039;&#039;inrequest&#039;&#039; = 8&lt;br /&gt;
* &#039;&#039;inreply&#039;&#039; = 9&lt;br /&gt;
* &#039;&#039;nak&#039;&#039; = 10&lt;br /&gt;
| &#039;&#039;arp operation&#039;&#039; &amp;amp;laquo;arp_op&amp;amp;raquo;&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IP types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|IP types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet_proto&lt;br /&gt;
| Internet protocol (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;tcp&#039;&#039;&lt;br /&gt;
* &#039;&#039;udp&#039;&#039;&lt;br /&gt;
* &#039;&#039;udplite&#039;&#039;&lt;br /&gt;
* &#039;&#039;esp&#039;&#039;&lt;br /&gt;
* &#039;&#039;ah&#039;&#039;&lt;br /&gt;
* &#039;&#039;icmp&#039;&#039;&lt;br /&gt;
* &#039;&#039;icmpv6&#039;&#039;&lt;br /&gt;
* &#039;&#039;comp&#039;&#039;&lt;br /&gt;
* &#039;&#039;dccp&#039;&#039;&lt;br /&gt;
* &#039;&#039;sctp&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_transport_protocol|&#039;&#039;ip protocol&#039;&#039;]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv6_headers|&#039;&#039;ip6 nexthdr&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ah nexthdr&#039;&#039;&lt;br /&gt;
* &#039;&#039;comp nexthdr&#039;&#039;&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;protocol&#039;&#039;]]&lt;br /&gt;
| [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/in.h in.h] has known types.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| inet_service&lt;br /&gt;
| Network service port number (16 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;udp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;tcp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;udplite&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;sctp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
* [[Matching_packet_headers#Matching_TCP.2FUDP.2FUDPlite_traffic|&#039;&#039;dccp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;sport&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;dport&#039;&#039;}]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ipv4_addr&lt;br /&gt;
| IPv4 address (32 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv4_headers|&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;} ]]&lt;br /&gt;
* &#039;&#039;arp&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* [[Matching routing information|&#039;&#039;rt&amp;amp;nbsp;ip&amp;amp;nbsp;nexthop&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ipsec&#039;&#039;&amp;amp;nbsp;{&#039;&#039;in&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;out&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ipv6_addr&lt;br /&gt;
| IPv6 address (128 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_headers#Matching_IPv6_headers|&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;} ]]&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&#039;&#039;&amp;amp;nbsp;{&#039;&#039;original&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;reply&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}]]&lt;br /&gt;
* [[Matching routing information|&#039;&#039;rt&amp;amp;nbsp;ip6&amp;amp;nbsp;nexthop&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;ipsec&#039;&#039;&amp;amp;nbsp;{&#039;&#039;in&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;out&#039;&#039;}&amp;amp;nbsp;&#039;&#039;ip6&#039;&#039;&amp;amp;nbsp;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;}&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conntrack types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Conntrack types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_dir&lt;br /&gt;
| Conntrack direction (8 bit integer).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
original       0&lt;br /&gt;
reply          1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_event&lt;br /&gt;
| Conntrack event bits (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new            1&lt;br /&gt;
related        2&lt;br /&gt;
destroy        4&lt;br /&gt;
reply          8&lt;br /&gt;
assured       16&lt;br /&gt;
protoinfo     32&lt;br /&gt;
helper        64&lt;br /&gt;
mark         128&lt;br /&gt;
seqadj       256&lt;br /&gt;
secmark      512&lt;br /&gt;
label       1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_label&lt;br /&gt;
| Conntrack label (128 bit bitmask).&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_state&lt;br /&gt;
| Conntrack state (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
invalid        1&lt;br /&gt;
established    2&lt;br /&gt;
related        4&lt;br /&gt;
new            8&lt;br /&gt;
untracked     64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| ct_status&lt;br /&gt;
| Conntrack status (4 byte bitmask).&lt;br /&gt;
| &lt;br /&gt;
| Symbolic constants:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
expected       1&lt;br /&gt;
seen-reply     2&lt;br /&gt;
assured        4&lt;br /&gt;
confirmed      8&lt;br /&gt;
snat          16&lt;br /&gt;
dnat          32&lt;br /&gt;
dying        512&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Other types&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Expressions&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| gid&lt;br /&gt;
| Group ID (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;skgid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as group name.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| mark&lt;br /&gt;
| Packet mark (32 bit integer).&lt;br /&gt;
|&lt;br /&gt;
* [[Matching_packet_metainformation#Matching_by_packet_mark.2C_routing_class_and_realm|&#039;&#039;meta&amp;amp;nbsp;mark&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;socket&amp;amp;nbsp;mark&#039;&#039;&lt;br /&gt;
* [[Matching routing information|&#039;&#039;fib&amp;amp;nbsp;mark&amp;amp;nbsp;.&amp;amp;nbsp;&#039;&#039;{&#039;&#039;saddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;daddr&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;iif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oif&#039;&#039;}&amp;amp;nbsp;[.&amp;amp;nbsp;...]&amp;amp;nbsp;{&#039;&#039;oif&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;oifname&#039;&#039;&amp;amp;nbsp;|&amp;amp;nbsp;&#039;&#039;type&#039;&#039;}]]&lt;br /&gt;
* [[Matching_connection_tracking_stateful_metainformation|&#039;&#039;ct&amp;amp;nbsp;mark&#039;&#039;]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| pkt_type&lt;br /&gt;
| Packet type (8 bit integer, with pre-defined symbolic constants):&lt;br /&gt;
* &#039;&#039;host&#039;&#039; or &#039;&#039;unicast&#039;&#039; - addressed to local host&lt;br /&gt;
* &#039;&#039;broadcast&#039;&#039; - to all&lt;br /&gt;
* &#039;&#039;multicast&#039;&#039; - to group&lt;br /&gt;
* &#039;&#039;other&#039;&#039; - addressed to another host&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;pkttype&#039;&#039;]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| realm&lt;br /&gt;
| Routing Realm (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;rtclassid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as symbolic name defined in /etc/iproute2/rt_realms.&lt;br /&gt;
Routing realm references:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://linux-ip.net/gl/ip-cref/ip-cref-node172.html linux-ip.net]&lt;br /&gt;
&amp;lt;li&amp;gt;[http://www.policyrouting.org/PolicyRoutingBook/ONLINE/CH07.web.html policyrouting.org]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| uid&lt;br /&gt;
| User ID (32 bit integer).&lt;br /&gt;
| [[Matching_packet_metainformation |&#039;&#039;meta&amp;amp;nbsp;skuid&#039;&#039;]]&lt;br /&gt;
| Can be specified numerically or as user name.&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=962</id>
		<title>Matching packet headers</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=962"/>
		<updated>2021-04-20T12:29:09Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Link references to ethernet, EtherType, L2.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;nft&#039;&#039; command line utility supports the following layer 4 protocols: AH, ESP, UDP, UDPlite, TCP, DCCP, SCTP and IPComp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ethernet headers =&lt;br /&gt;
&lt;br /&gt;
You can match packets on [https://en.wikipedia.org/wiki/Ethernet ethernet] source or destination address or on [https://en.wikipedia.org/wiki/EtherType EtherType]:&lt;br /&gt;
* &#039;&#039;ether&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr&#039;&#039;} &amp;amp;laquo;[[Data_types#Ethernet_types|ether_addr]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;ether type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo;&lt;br /&gt;
&lt;br /&gt;
If you want to match ethernet traffic whose destination address is ff:ff:ff:ff:ff:ff, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ether daddr ff:ff:ff:ff:ff:ff counter &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also match packets on [https://en.wikipedia.org/wiki/IEEE_802.1Q IEEE 802.1Q] VLAN fields, if present:&lt;br /&gt;
* &#039;&#039;vlan type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo; - always &#039;&#039;vlan&#039;&#039; for 802.1Q&lt;br /&gt;
* &#039;&#039;vlan id&#039;&#039; &amp;amp;laquo;12-bit integer&amp;amp;raquo; - match VID, the VLAN ID&lt;br /&gt;
* &#039;&#039;vlan cfi&#039;&#039; &amp;amp;laquo;1-bit integer&amp;amp;raquo; - match DEI, Drop Eligible Indicator (formerly CFI, Canonical Format Indicator) &lt;br /&gt;
* &#039;&#039;vlan pcp&#039;&#039; &amp;amp;laquo;3-bit integer&amp;amp;raquo; - match [https://en.wikipedia.org/wiki/IEEE_P802.1p IEEE P802.1p PCP, Priority Code Point]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do not forget that the [https://en.wikipedia.org/wiki/Link_layer layer 2] header information is only available in the input path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching transport protocol =&lt;br /&gt;
&lt;br /&gt;
The following rule shows how to match any kind of &#039;&#039;TCP&#039;&#039; traffic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip protocol tcp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv4 headers =&lt;br /&gt;
&lt;br /&gt;
You can also match traffic based on the IPv4 source and destination, the following example shows how to account all traffic that comes from 192.168.1.100 and that is addressed to 192.168.1.1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip saddr 192.168.1.100 ip daddr 192.168.1.1 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that, since the rule is attached to the input chain, your local machine needs to use the 192.168.1.1 address, otherwise you won&#039;t see any matching ;-).&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;protocol&#039;&#039; keyword:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input protocol tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv6 headers =&lt;br /&gt;
&lt;br /&gt;
If you want to account IPv6 traffic that is addressed to &#039;&#039;abcd::100&#039;&#039;, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip6 daddr abcd::100 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;nexthdr&#039;&#039; keyword:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip6 nexthdr tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do not forget to create an &#039;&#039;ip6&#039;&#039; [[Configuring tables|table]] and register the corresponding [[Configuring chains|chains]] to run the examples.&lt;br /&gt;
&lt;br /&gt;
NOTE: the syntax mixing IPv6/IPv4 notation is not supported yet: &#039;::ffff:192.168.1.0&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching TCP/UDP/UDPlite traffic =&lt;br /&gt;
&lt;br /&gt;
The following examples show how to drop all tcp traffic for low TCP ports (1-1024):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp dport 1-1024 counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this rule is using an [[intervals|interval]] (from 1 to 1024).&lt;br /&gt;
&lt;br /&gt;
To match on TCP flags, you need to use a binary operation. For example, to count packets that are not SYN ones:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp flags != syn counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More complex filters can be used. For example, to count and log TCP packets with flags SYN and ACK set:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft -i&lt;br /&gt;
nft&amp;gt; add rule filter output tcp flags &amp;amp; (syn | ack) == syn | ack counter log&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example drops TCP SYN packets which a MSS lower than 500:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule inet filter input tcp flags syn tcp option maxseg size 1-500 drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ICMP traffic =&lt;br /&gt;
&lt;br /&gt;
You can drop all [https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol ICMP] echo requests (popularly known as &#039;&#039;pings&#039;&#039;) via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input icmp type echo-request counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft describe&#039;&#039; to find &#039;&#039;nft&#039;&#039;&#039;s available &#039;&#039;icmp type&#039;&#039; keywords:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp type&lt;br /&gt;
payload expression, datatype icmp_type (ICMP type) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        echo-reply                                         0&lt;br /&gt;
        destination-unreachable                            3&lt;br /&gt;
        source-quench                                      4&lt;br /&gt;
        redirect                                           5&lt;br /&gt;
        echo-request                                       8&lt;br /&gt;
        router-advertisement                               9&lt;br /&gt;
        router-solicitation                               10&lt;br /&gt;
        time-exceeded                                     11&lt;br /&gt;
        parameter-problem                                 12&lt;br /&gt;
        timestamp-request                                 13&lt;br /&gt;
        timestamp-reply                                   14&lt;br /&gt;
        info-request                                      15&lt;br /&gt;
        info-reply                                        16&lt;br /&gt;
        address-mask-request                              17&lt;br /&gt;
        address-mask-reply                                18&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also be more specific by matching a single icmp code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp code&lt;br /&gt;
payload expression, datatype icmp_code (icmp code) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        net-unreachable                                    0&lt;br /&gt;
        host-unreachable                                   1&lt;br /&gt;
        prot-unreachable                                   2&lt;br /&gt;
        port-unreachable                                   3&lt;br /&gt;
        net-prohibited                                     9&lt;br /&gt;
        host-prohibited                                   10&lt;br /&gt;
        admin-prohibited                                  13&lt;br /&gt;
        frag-needed                                        4&lt;br /&gt;
&lt;br /&gt;
% nft add rule filter output icmp code frag-needed counter accept&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching UDP/TCP headers in the same rule =&lt;br /&gt;
&lt;br /&gt;
The following example uses an anonymous l4proto [[Sets|set]] and a &#039;&#039;th&#039;&#039; (transport header) expression to match both TCP and UDP packets directed to port 53 (DNS):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  th dport 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Before nftables 0.9.2 and Linux kernel 5.3 the &#039;&#039;th&#039;&#039; expression is not available. In this case you can use a raw payload expression to do the same job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  @th,16,16 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=961</id>
		<title>Matching packet headers</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Matching_packet_headers&amp;diff=961"/>
		<updated>2021-04-20T12:21:00Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Use left and right angle quotes for literals.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;nft&#039;&#039; command line utility supports the following layer 4 protocols: AH, ESP, UDP, UDPlite, TCP, DCCP, SCTP and IPComp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ethernet headers =&lt;br /&gt;
&lt;br /&gt;
You can match packets on ethernet source or destination address or on EtherType:&lt;br /&gt;
* &#039;&#039;ether&#039;&#039; {&#039;&#039;saddr&#039;&#039; | &#039;&#039;daddr&#039;&#039;} &amp;amp;laquo;[[Data_types#Ethernet_types|ether_addr]]&amp;amp;raquo;&lt;br /&gt;
* &#039;&#039;ether type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo;&lt;br /&gt;
&lt;br /&gt;
If you want to match ethernet traffic whose destination address is ff:ff:ff:ff:ff:ff, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ether daddr ff:ff:ff:ff:ff:ff counter &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also match packets on [https://en.wikipedia.org/wiki/IEEE_802.1Q IEEE 802.1Q] VLAN fields, if present:&lt;br /&gt;
* &#039;&#039;vlan type&#039;&#039; &amp;amp;laquo;[[Data_types#Ethernet_types|ether_type]]&amp;amp;raquo; - always &#039;&#039;vlan&#039;&#039; for 802.1Q&lt;br /&gt;
* &#039;&#039;vlan id&#039;&#039; &amp;amp;laquo;12-bit integer&amp;amp;raquo; - match VID, the VLAN ID&lt;br /&gt;
* &#039;&#039;vlan cfi&#039;&#039; &amp;amp;laquo;1-bit integer&amp;amp;raquo; - match DEI, Drop Eligible Indicator (formerly CFI, Canonical Format Indicator) &lt;br /&gt;
* &#039;&#039;vlan pcp&#039;&#039; &amp;amp;laquo;3-bit integer&amp;amp;raquo; - match [https://en.wikipedia.org/wiki/IEEE_P802.1p IEEE P802.1p PCP, Priority Code Point]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do not forget that the layer 2 header information is only available in the input path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching transport protocol =&lt;br /&gt;
&lt;br /&gt;
The following rule shows how to match any kind of &#039;&#039;TCP&#039;&#039; traffic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip protocol tcp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv4 headers =&lt;br /&gt;
&lt;br /&gt;
You can also match traffic based on the IPv4 source and destination, the following example shows how to account all traffic that comes from 192.168.1.100 and that is addressed to 192.168.1.1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip saddr 192.168.1.100 ip daddr 192.168.1.1 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that, since the rule is attached to the input chain, your local machine needs to use the 192.168.1.1 address, otherwise you won&#039;t see any matching ;-).&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;protocol&#039;&#039; keyword:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input protocol tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching IPv6 headers =&lt;br /&gt;
&lt;br /&gt;
If you want to account IPv6 traffic that is addressed to &#039;&#039;abcd::100&#039;&#039;, you can type the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter output ip6 daddr abcd::100 counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To filter on a layer 4 protocol like TCP, you can use the &#039;&#039;nexthdr&#039;&#039; keyword:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip6 nexthdr tcp counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do not forget to create an &#039;&#039;ip6&#039;&#039; [[Configuring tables|table]] and register the corresponding [[Configuring chains|chains]] to run the examples.&lt;br /&gt;
&lt;br /&gt;
NOTE: the syntax mixing IPv6/IPv4 notation is not supported yet: &#039;::ffff:192.168.1.0&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching TCP/UDP/UDPlite traffic =&lt;br /&gt;
&lt;br /&gt;
The following examples show how to drop all tcp traffic for low TCP ports (1-1024):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp dport 1-1024 counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this rule is using an [[intervals|interval]] (from 1 to 1024).&lt;br /&gt;
&lt;br /&gt;
To match on TCP flags, you need to use a binary operation. For example, to count packets that are not SYN ones:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input tcp flags != syn counter&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More complex filters can be used. For example, to count and log TCP packets with flags SYN and ACK set:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft -i&lt;br /&gt;
nft&amp;gt; add rule filter output tcp flags &amp;amp; (syn | ack) == syn | ack counter log&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example drops TCP SYN packets which a MSS lower than 500:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule inet filter input tcp flags syn tcp option maxseg size 1-500 drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching ICMP traffic =&lt;br /&gt;
&lt;br /&gt;
You can drop all [https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol ICMP] echo requests (popularly known as &#039;&#039;pings&#039;&#039;) via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input icmp type echo-request counter drop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;nft describe&#039;&#039; to find &#039;&#039;nft&#039;&#039;&#039;s available &#039;&#039;icmp type&#039;&#039; keywords:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp type&lt;br /&gt;
payload expression, datatype icmp_type (ICMP type) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        echo-reply                                         0&lt;br /&gt;
        destination-unreachable                            3&lt;br /&gt;
        source-quench                                      4&lt;br /&gt;
        redirect                                           5&lt;br /&gt;
        echo-request                                       8&lt;br /&gt;
        router-advertisement                               9&lt;br /&gt;
        router-solicitation                               10&lt;br /&gt;
        time-exceeded                                     11&lt;br /&gt;
        parameter-problem                                 12&lt;br /&gt;
        timestamp-request                                 13&lt;br /&gt;
        timestamp-reply                                   14&lt;br /&gt;
        info-request                                      15&lt;br /&gt;
        info-reply                                        16&lt;br /&gt;
        address-mask-request                              17&lt;br /&gt;
        address-mask-reply                                18&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also be more specific by matching a single icmp code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft describe icmp code&lt;br /&gt;
payload expression, datatype icmp_code (icmp code) (basetype integer), 8 bits&lt;br /&gt;
&lt;br /&gt;
pre-defined symbolic constants (in decimal):&lt;br /&gt;
        net-unreachable                                    0&lt;br /&gt;
        host-unreachable                                   1&lt;br /&gt;
        prot-unreachable                                   2&lt;br /&gt;
        port-unreachable                                   3&lt;br /&gt;
        net-prohibited                                     9&lt;br /&gt;
        host-prohibited                                   10&lt;br /&gt;
        admin-prohibited                                  13&lt;br /&gt;
        frag-needed                                        4&lt;br /&gt;
&lt;br /&gt;
% nft add rule filter output icmp code frag-needed counter accept&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matching UDP/TCP headers in the same rule =&lt;br /&gt;
&lt;br /&gt;
The following example uses an anonymous l4proto [[Sets|set]] and a &#039;&#039;th&#039;&#039; (transport header) expression to match both TCP and UDP packets directed to port 53 (DNS):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  th dport 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Before nftables 0.9.2 and Linux kernel 5.3 the &#039;&#039;th&#039;&#039; expression is not available. In this case you can use a raw payload expression to do the same job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input meta l4proto { tcp, udp }  @th,16,16 53  counter packets 0 bytes 0  accept  comment \&amp;quot;accept DNS\&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Maps&amp;diff=960</id>
		<title>Maps</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Maps&amp;diff=960"/>
		<updated>2021-04-20T01:49:59Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Use &amp;quot;snat to&amp;quot; and &amp;quot;dnat to&amp;quot;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An nftables map stores key-value pairs, like [https://en.wikipedia.org/wiki/Associative_array associative arrays / dictionaries / hashes] do in many programming languages. In an nftables rule you can specify a packet field (e.g. &#039;&#039;tcp dport&#039;&#039;) and reference a map to search for the map element whose key matches the packet field&#039;s value, and return that map element&#039;s value (or failure if the map contains no matching element). Some examples below will help clarify this general description.&lt;br /&gt;
&lt;br /&gt;
You can think of a map as a [[Sets|set]] that returns a value instead of just an &amp;quot;in set / not in set&amp;quot; result. Behind the scenes both sets and maps use the same generic set infrastructure and therefore share many of the same options and semantics.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Anonymous maps =&lt;br /&gt;
&lt;br /&gt;
The following rule uses a map to [[Performing_Network_Address_Translation_(NAT)|DNAT]] packets to different destination IP addresses depending on the packet&#039;s destination tcp port:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule ip nat prerouting dnat to tcp dport map { 80 : 192.168.1.100, 8888 : 192.168.1.101 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a very concise and efficient way to perform classical port redirection when the real servers are located behind a firewall. It can be read as it follows:&lt;br /&gt;
&lt;br /&gt;
* If the TCP destination port is 80, then the packet is DNAT&#039;ed to 192.168.1.100.&lt;br /&gt;
* If the TCP destination port is 8888, then the packet is DNAT&#039;ed to 192.168.1.101.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Named maps =&lt;br /&gt;
&lt;br /&gt;
You can also declare named maps, to which you can then add or delete elements at anytime. For example, with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add map nat porttoip  { type inet_service: ipv4_addr\; }&lt;br /&gt;
% nft add element nat porttoip { 80 : 192.168.1.100, 8888 : 192.168.1.101 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we first define a map &#039;&#039;porttoip&#039;&#039; which looks up an IP address based on a UDP or TCP port number, and then add a couple of elements. The map itself only cares about the [[Data_types|data&amp;amp;nbsp;types]] of its keys and values. It is up to us to use meaningful values for both, and to use the map appropriately in rules. In this example we use &#039;&#039;porttoip&#039;&#039; to map tcp destination ports to source IP addresses. Then we can perform [[Performing_Network_Address_Translation_(NAT)|SNAT]] using the rule:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule ip nat postrouting snat to tcp dport map @porttoip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now outgoing packets to TCP/80 use source IP address 192.168.1.100, those to TCP/8888 are SNAT&#039;ed to 192.168.1.101. We can easily adjust our SNAT at anytime simply by adding or deleting elements in &#039;&#039;porttoip&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Concatenations&amp;diff=959</id>
		<title>Concatenations</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Concatenations&amp;diff=959"/>
		<updated>2021-04-20T01:48:36Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: Use &amp;quot;dnat to&amp;quot;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since Linux kernel 4.1, nftables supports concatenations.&lt;br /&gt;
&lt;br /&gt;
This new feature allows you to put two or more selectors together to perform very fast lookups in [[sets]], [[maps]], [[Verdict_Maps_(vmaps) | vmaps]] and [[meters]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Anonymous sets =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule ip filter input ip saddr . ip daddr . ip protocol { 1.1.1.1 . 2.2.2.2 . tcp, 1.1.1.1 . 3.3.3.3 . udp} counter accept&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So if the packet&#039;s source IP address AND destination IP address AND level 4 protocol match:&lt;br /&gt;
&lt;br /&gt;
* 1.1.1.1 and 2.2.2.2 and TCP.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
* 1.1.1.1 and 3.3.3.3 and UDP.&lt;br /&gt;
&lt;br /&gt;
nftables updates the counter for this rule and then accepts the packet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Named verdict maps =&lt;br /&gt;
&lt;br /&gt;
The following example creates the &#039;&#039;whitelist&#039;&#039; vmap using a concatenation of two selectors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add map filter whitelist { type ipv4_addr . inet_service : verdict \; }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you create the vmap, you can use it from a rule that creates the following concatenation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule filter input ip saddr . tcp dport vmap @whitelist&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rule above looks up a verdict based on the source IP address AND the TCP destination port.&lt;br /&gt;
&lt;br /&gt;
The verdict map is initially empty. You can dynamically populate it with elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add element filter whitelist { 1.2.3.4 . 22 : accept}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When declaring concatenations, you can use [[Sets | generic sets options]], such as the &#039;&#039;&#039;typeof&#039;&#039;&#039; keyword and the &#039;&#039;&#039;counter&#039;&#039;&#039; feature:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
table inet fmytable {&lt;br /&gt;
	set myset {&lt;br /&gt;
		typeof ip daddr . tcp dport&lt;br /&gt;
		counter&lt;br /&gt;
		elements = { 1.1.1.4 . 22 counter packets 0 bytes 0,&lt;br /&gt;
			     1.1.1.5 . 23 counter packets 0 bytes 0,&lt;br /&gt;
			     1.1.1.6 . 24 counter packets 0 bytes 0 }&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Anonymous maps =&lt;br /&gt;
&lt;br /&gt;
The rule below determines the destination IP address that is used to perform DNAT to the packet based on:&lt;br /&gt;
&lt;br /&gt;
* the source IP address&lt;br /&gt;
&lt;br /&gt;
AND&lt;br /&gt;
&lt;br /&gt;
* the destination TCP port&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule ip nat prerouting dnat to ip saddr . tcp dport map { 1.1.1.1 . 80 : 192.168.1.100, 2.2.2.2 . 8888 : 192.168.1.101 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
Some concrete example concatenations so you get an idea on how powerful this new feature is.&lt;br /&gt;
&lt;br /&gt;
== Network addresses ==&lt;br /&gt;
&lt;br /&gt;
The example below implements a vmap using network masks in each element:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
table inet mytable {&lt;br /&gt;
    set myset {&lt;br /&gt;
        type ipv4_addr . ipv4_addr&lt;br /&gt;
        flags interval&lt;br /&gt;
        elements = { 192.168.0.0/16 . 172.16.0.0/25,&lt;br /&gt;
                     10.0.0.0/30 . 192.168.1.0/24,&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    chain mychain {&lt;br /&gt;
        ip saddr . ip daddr @myset counter accept&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: before Linux kernel 5.6 and nftables 0.9.4 the CIDR notation wasn&#039;t available, you would need to use a workaround:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule tablename chainname ip saddr and 255.255.255.0 . ip daddr and 255.255.255.0 vmap { 10.10.10.0 . 10.10.20.0 : accept }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is not an interval, this is masking the ip saddr and ip daddr, then concate both results. This concatenation is used to lookup for a matching of this the result in the map. This syntax may be compacted in future releases to support CIDR notation.&lt;br /&gt;
&lt;br /&gt;
This could be easily implemented using a named map as well:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add map tablename myMap { type ipv4_addr . ipv4_addr : verdict \; }&lt;br /&gt;
% nft add rule tablename chainname ip saddr and 255.255.255.0 . ip saddr and 255.255.255.0 vmap @myMap&lt;br /&gt;
% nft add element tablename myMap { 10.10.10.0 . 10.10.20.0 : accept }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
&lt;br /&gt;
The example below checks both input and output interfaces of a forwarded packet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule tablename chainname iif . oif vmap { eth0 . eth1 : accept }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some ipset types ==&lt;br /&gt;
&lt;br /&gt;
These ipset types can be implemented in nftables using concatenations. Probably more equivalences exists, it just a matter of combining data types.&lt;br /&gt;
Of course, you could implement these as named maps/sets as well.&lt;br /&gt;
&lt;br /&gt;
See examples in the [[Moving_from_ipset_to_nftables | moving from ipset to nftables]] page.&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Multiple_NATs_using_nftables_maps&amp;diff=958</id>
		<title>Multiple NATs using nftables maps</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Multiple_NATs_using_nftables_maps&amp;diff=958"/>
		<updated>2021-04-20T01:45:49Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: &amp;quot;{snat|dnat} &amp;lt;ip_addr&amp;gt;&amp;quot; -&amp;gt; &amp;quot;{snat|dnat} to &amp;lt;ip_addr&amp;gt;}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Thanks to nftables [[Maps]], if you have a previous iptables NAT (destination NAT) ruleset like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% iptables -t nat -A PREROUTING -p tcp --dport 1000 -j DNAT --to-destination 1.1.1.1:1234&lt;br /&gt;
% iptables -t nat -A PREROUTING -p udp --dport 2000 -j DNAT --to-destination 2.2.2.2:2345&lt;br /&gt;
% iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination 3.3.3.3:3456&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be easily translated to nftables in a single line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule nat prerouting dnat to \&lt;br /&gt;
      tcp dport map { 1000 : 1.1.1.1, 2000 : 2.2.2.2, 3000 : 3.3.3.3} \&lt;br /&gt;
      : tcp dport map { 1000 : 1234, 2000 : 2345, 3000 : 3456 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, in iptables NAT (source NAT):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% iptables -t nat -A POSTROUTING -s 192.168.1.1 -j SNAT --to-source 1.1.1.1&lt;br /&gt;
% iptables -t nat -A POSTROUTING -s 192.168.2.2 -j SNAT --to-source 2.2.2.2&lt;br /&gt;
% iptables -t nat -A POSTROUTING -s 192.168.3.3 -j SNAT --to-source 3.3.3.3&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translated to a nftables one-liner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule nat postrouting snat to \&lt;br /&gt;
      ip saddr map { 192.168.1.1 : 1.1.1.1, 192.168.2.2 : 2.2.2.2, 192.168.3.3 : 3.3.3.3 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Performing_Network_Address_Translation_(NAT) | Performing NAT with nftables]]&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
	<entry>
		<id>http://wiki.nftables.org/wiki-nftables/index.php?title=Quick_reference-nftables_in_10_minutes&amp;diff=957</id>
		<title>Quick reference-nftables in 10 minutes</title>
		<link rel="alternate" type="text/html" href="http://wiki.nftables.org/wiki-nftables/index.php?title=Quick_reference-nftables_in_10_minutes&amp;diff=957"/>
		<updated>2021-04-20T01:34:09Z</updated>

		<summary type="html">&lt;p&gt;Fmyhr: /* Nat */ Missed a couple of &amp;quot;to&amp;quot;&amp;#039;s.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Find below some basic concepts to know before using nftables.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;table&#039;&#039;&#039; refers to a container of [[Configuring chains|chains]] with no specific semantics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;chain&#039;&#039;&#039; within a [[Configuring tables|table]] refers to a container of [[Simple rule management|rules]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rule&#039;&#039;&#039; refers to an action to be configured within a &#039;&#039;chain&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= nft command line =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;nft&#039;&#039; is the command line tool in order to interact with nftables at userspace.&lt;br /&gt;
&lt;br /&gt;
== Tables ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;family&#039;&#039;&#039; refers to a one of the following table types: &#039;&#039;ip&#039;&#039;, &#039;&#039;arp&#039;&#039;, &#039;&#039;ip6&#039;&#039;, &#039;&#039;bridge&#039;&#039;, &#039;&#039;inet&#039;&#039;, &#039;&#039;netdev&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft list tables [&amp;lt;family&amp;gt;]&lt;br /&gt;
% nft list table [&amp;lt;family&amp;gt;] &amp;lt;name&amp;gt; [-n] [-a]&lt;br /&gt;
% nft (add | delete | flush) table [&amp;lt;family&amp;gt;] &amp;lt;name&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The argument &#039;&#039;-n&#039;&#039; shows the addresses and other information that uses names in numeric format. The &#039;&#039;-a&#039;&#039; argument is used to display the &#039;&#039;handle&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Chains ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;type&#039;&#039;&#039; refers to the kind of chain to be created. Possible types are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;filter&#039;&#039;: Supported by &#039;&#039;arp&#039;&#039;, &#039;&#039;bridge&#039;&#039;, &#039;&#039;ip&#039;&#039;, &#039;&#039;ip6&#039;&#039; and &#039;&#039;inet&#039;&#039; table families.&lt;br /&gt;
* &#039;&#039;route&#039;&#039;: Mark packets (like mangle for the &#039;&#039;output&#039;&#039; hook, for other hooks use the type &#039;&#039;filter&#039;&#039; instead), supported by &#039;&#039;ip&#039;&#039; and &#039;&#039;ip6&#039;&#039;.&lt;br /&gt;
* &#039;&#039;nat&#039;&#039;: In order to perform Network Address Translation, supported by &#039;&#039;ip&#039;&#039; and &#039;&#039;ip6&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;hook&#039;&#039;&#039; refers to an specific stage of the packet while it&#039;s being processed through the kernel. More info in [[Netfilter_hooks|Netfilter hooks]].&lt;br /&gt;
&lt;br /&gt;
* The hooks for &#039;&#039;ip&#039;&#039;, &#039;&#039;ip6&#039;&#039; and &#039;&#039;inet&#039;&#039; families are: &#039;&#039;prerouting&#039;&#039;, &#039;&#039;input&#039;&#039;, &#039;&#039;forward&#039;&#039;, &#039;&#039;output&#039;&#039;, &#039;&#039;postrouting&#039;&#039;.&lt;br /&gt;
* The hooks for &#039;&#039;arp&#039;&#039; family are: &#039;&#039; input&#039;&#039;, &#039;&#039;output&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;bridge&#039;&#039; family handles ethernet packets traversing bridge devices.&lt;br /&gt;
* The hook for &#039;&#039;netdev&#039;&#039; is: &#039;&#039;ingress&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;priority&#039;&#039;&#039; refers to a number used to order the chains or to set them between some Netfilter operations. Possible values are: &#039;&#039;NF_IP_PRI_CONNTRACK_DEFRAG (-400)&#039;&#039;, &#039;&#039;NF_IP_PRI_RAW (-300)&#039;&#039;, &#039;&#039;NF_IP_PRI_SELINUX_FIRST (-225)&#039;&#039;, &#039;&#039;NF_IP_PRI_CONNTRACK (-200)&#039;&#039;, &#039;&#039;NF_IP_PRI_MANGLE (-150)&#039;&#039;, &#039;&#039;NF_IP_PRI_NAT_DST (-100)&#039;&#039;, &#039;&#039;NF_IP_PRI_FILTER (0)&#039;&#039;, &#039;&#039;NF_IP_PRI_SECURITY (50)&#039;&#039;, &#039;&#039;NF_IP_PRI_NAT_SRC (100)&#039;&#039;, &#039;&#039;NF_IP_PRI_SELINUX_LAST (225)&#039;&#039;, &#039;&#039;NF_IP_PRI_CONNTRACK_HELPER (300)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;policy&#039;&#039;&#039; is the default verdict statement to control the flow in the chain. Possible values are: &#039;&#039;accept&#039;&#039;, &#039;&#039;drop&#039;&#039;, &#039;&#039;queue&#039;&#039;, &#039;&#039;continue&#039;&#039;, &#039;&#039;return&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft (add | create) chain [&amp;lt;family&amp;gt;] &amp;lt;table&amp;gt; &amp;lt;name&amp;gt; [ { type &amp;lt;type&amp;gt; hook &amp;lt;hook&amp;gt; [device &amp;lt;device&amp;gt;] priority &amp;lt;priority&amp;gt; \; [policy &amp;lt;policy&amp;gt; \;] } ]&lt;br /&gt;
% nft (delete | list | flush) chain [&amp;lt;family&amp;gt;] &amp;lt;table&amp;gt; &amp;lt;name&amp;gt;&lt;br /&gt;
% nft rename chain [&amp;lt;family&amp;gt;] &amp;lt;table&amp;gt; &amp;lt;name&amp;gt; &amp;lt;newname&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;handle&#039;&#039;&#039; is an internal number that identifies a certain &#039;&#039;rule&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;position&#039;&#039;&#039; is an internal number that is used to insert a &#039;&#039;rule&#039;&#039; before a certain &#039;&#039;handle&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft add rule [&amp;lt;family&amp;gt;] &amp;lt;table&amp;gt; &amp;lt;chain&amp;gt; &amp;lt;matches&amp;gt; &amp;lt;statements&amp;gt;&lt;br /&gt;
% nft insert rule [&amp;lt;family&amp;gt;] &amp;lt;table&amp;gt; &amp;lt;chain&amp;gt; [position &amp;lt;position&amp;gt;] &amp;lt;matches&amp;gt; &amp;lt;statements&amp;gt;&lt;br /&gt;
% nft replace rule [&amp;lt;family&amp;gt;] &amp;lt;table&amp;gt; &amp;lt;chain&amp;gt; [handle &amp;lt;handle&amp;gt;] &amp;lt;matches&amp;gt; &amp;lt;statements&amp;gt;&lt;br /&gt;
% nft delete rule [&amp;lt;family&amp;gt;] &amp;lt;table&amp;gt; &amp;lt;chain&amp;gt; [handle &amp;lt;handle&amp;gt;]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Matches ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;matches&#039;&#039;&#039; are clues used to access to certain packet information and create filters according to them.&lt;br /&gt;
&lt;br /&gt;
==== Ip ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|ip match&lt;br /&gt;
|-&lt;br /&gt;
| | &#039;&#039;dscp &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip dscp cs1&lt;br /&gt;
ip dscp != cs1&lt;br /&gt;
ip dscp 0x38&lt;br /&gt;
ip dscp != 0x20&lt;br /&gt;
ip dscp {cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, af11, af12, af13, af21, &lt;br /&gt;
af22, af23, af31, af32, af33, af41, af42, af43, ef}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;length &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| Total packet length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip length 232&lt;br /&gt;
ip length != 233&lt;br /&gt;
ip length 333-435&lt;br /&gt;
ip length != 333-453&lt;br /&gt;
ip length { 333, 553, 673, 838}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;id &amp;lt;id&amp;gt;&#039;&#039;&lt;br /&gt;
| IP ID&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip id 22&lt;br /&gt;
ip id != 233&lt;br /&gt;
ip id 33-45&lt;br /&gt;
ip id != 33-45&lt;br /&gt;
ip id { 33, 55, 67, 88 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;frag-off &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| Fragmentation offset&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip frag-off 222&lt;br /&gt;
ip frag-off != 233&lt;br /&gt;
ip frag-off 33-45&lt;br /&gt;
ip frag-off != 33-45&lt;br /&gt;
ip frag-off { 33, 55, 67, 88 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;ttl &amp;lt;ttl&amp;gt;&#039;&#039;&lt;br /&gt;
| Time to live&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip ttl 0&lt;br /&gt;
ip ttl 233&lt;br /&gt;
ip ttl 33-55&lt;br /&gt;
ip ttl != 45-50&lt;br /&gt;
ip ttl { 43, 53, 45 }&lt;br /&gt;
ip ttl { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;protocol &amp;lt;protocol&amp;gt;&#039;&#039;&lt;br /&gt;
| Upper layer protocol&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip protocol tcp&lt;br /&gt;
ip protocol 6&lt;br /&gt;
ip protocol != tcp&lt;br /&gt;
ip protocol { icmp, esp, ah, comp, udp, udplite, tcp, dccp, sctp }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;checksum &amp;lt;checksum&amp;gt;&#039;&#039;&lt;br /&gt;
| IP header checksum&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip checksum 13172&lt;br /&gt;
ip checksum 22&lt;br /&gt;
ip checksum != 233&lt;br /&gt;
ip checksum 33-45&lt;br /&gt;
ip checksum != 33-45&lt;br /&gt;
ip checksum { 33, 55, 67, 88 }&lt;br /&gt;
ip checksum { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;saddr &amp;lt;ip source address&amp;gt;&#039;&#039;&lt;br /&gt;
| Source address&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip saddr 192.168.2.0/24&lt;br /&gt;
ip saddr != 192.168.2.0/24&lt;br /&gt;
ip saddr 192.168.3.1 ip daddr 192.168.3.100&lt;br /&gt;
ip saddr != 1.1.1.1&lt;br /&gt;
ip saddr 1.1.1.1&lt;br /&gt;
ip saddr &amp;amp; 0xff == 1&lt;br /&gt;
ip saddr &amp;amp; 0.0.0.255 &amp;lt; 0.0.0.127&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;daddr &amp;lt;ip destination address&amp;gt;&#039;&#039;&lt;br /&gt;
| Destination address&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip daddr 192.168.0.1&lt;br /&gt;
ip daddr != 192.168.0.1&lt;br /&gt;
ip daddr 192.168.0.1-192.168.0.250&lt;br /&gt;
ip daddr 10.0.0.0-10.255.255.255&lt;br /&gt;
ip daddr 172.16.0.0-172.31.255.255&lt;br /&gt;
ip daddr 192.168.3.1-192.168.4.250&lt;br /&gt;
ip daddr != 192.168.0.1-192.168.0.250&lt;br /&gt;
ip daddr { 192.168.0.1-192.168.0.250 }&lt;br /&gt;
ip daddr { 192.168.5.1, 192.168.5.2, 192.168.5.3 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;version &amp;lt;version&amp;gt;&#039;&#039;&lt;br /&gt;
| Ip Header version&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip version 4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;hdrlength &amp;lt;header length&amp;gt;&#039;&#039;&lt;br /&gt;
| IP header length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip hdrlength 0&lt;br /&gt;
ip hdrlength 15&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Ip6 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|ip6 match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;dscp &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip6 dscp cs1&lt;br /&gt;
ip6 dscp != cs1&lt;br /&gt;
ip6 dscp 0x38&lt;br /&gt;
ip6 dscp != 0x20&lt;br /&gt;
ip6 dscp {cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, af11, af12, af13, af21, af22, af23, af31, af32, af33, af41, af42, af43, ef}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;flowlabel &amp;lt;label&amp;gt;&#039;&#039;&lt;br /&gt;
| Flow label&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip6 flowlabel 22&lt;br /&gt;
ip6 flowlabel != 233&lt;br /&gt;
ip6 flowlabel { 33, 55, 67, 88 }&lt;br /&gt;
ip6 flowlabel { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;length &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| Payload length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip6 length 232&lt;br /&gt;
ip6 length != 233&lt;br /&gt;
ip6 length 333-435&lt;br /&gt;
ip6 length != 333-453&lt;br /&gt;
ip6 length { 333, 553, 673, 838}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;nexthdr &amp;lt;header&amp;gt;&#039;&#039;&lt;br /&gt;
| Next header type (Upper layer protocol number)&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip6 nexthdr {esp, udp, ah, comp, udplite, tcp, dccp, sctp, icmpv6}&lt;br /&gt;
ip6 nexthdr esp&lt;br /&gt;
ip6 nexthdr != esp&lt;br /&gt;
ip6 nexthdr { 33-44 }&lt;br /&gt;
ip6 nexthdr 33-44&lt;br /&gt;
ip6 nexthdr != 33-44&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;hoplimit &amp;lt;hoplimit&amp;gt;&#039;&#039;&lt;br /&gt;
| Hop limit&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip6 hoplimit 1&lt;br /&gt;
ip6 hoplimit != 233&lt;br /&gt;
ip6 hoplimit 33-45&lt;br /&gt;
ip6 hoplimit != 33-45&lt;br /&gt;
ip6 hoplimit {33, 55, 67, 88}&lt;br /&gt;
ip6 hoplimit {33-55}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;saddr &amp;lt;ip source address&amp;gt;&#039;&#039;&lt;br /&gt;
| Source Address&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip6 saddr 1234:1234:1234:1234:1234:1234:1234:1234&lt;br /&gt;
ip6 saddr ::1234:1234:1234:1234:1234:1234:1234&lt;br /&gt;
ip6 saddr ::/64&lt;br /&gt;
ip6 saddr ::1 ip6 daddr ::2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;daddr &amp;lt;ip destination address&amp;gt;&#039;&#039;&lt;br /&gt;
| Destination Address&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip6 daddr 1234:1234:1234:1234:1234:1234:1234:1234&lt;br /&gt;
ip6 daddr != ::1234:1234:1234:1234:1234:1234:1234-1234:1234::1234:1234:1234:1234:1234&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;version &amp;lt;version&amp;gt;&#039;&#039;&lt;br /&gt;
| IP header version&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip6 version 6&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tcp ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|tcp match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;dport &amp;lt;destination port&amp;gt;&#039;&#039;&lt;br /&gt;
| Destination port&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tcp dport 22&lt;br /&gt;
tcp dport != 33-45&lt;br /&gt;
tcp dport { 33-55 }&lt;br /&gt;
tcp dport {telnet, http, https }&lt;br /&gt;
tcp dport vmap { 22 : accept, 23 : drop }&lt;br /&gt;
tcp dport vmap { 25:accept, 28:drop }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;sport &amp;lt; source port&amp;gt;&#039;&#039;&lt;br /&gt;
| Source port&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tcp sport 22&lt;br /&gt;
tcp sport != 33-45&lt;br /&gt;
tcp sport { 33, 55, 67, 88}&lt;br /&gt;
tcp sport { 33-55}&lt;br /&gt;
tcp sport vmap { 25:accept, 28:drop }&lt;br /&gt;
tcp sport 1024 tcp dport 22&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;sequence &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| Sequence number&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tcp sequence 22&lt;br /&gt;
tcp sequence != 33-45&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;ackseq &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| Acknowledgement number&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tcp ackseq 22&lt;br /&gt;
tcp ackseq != 33-45&lt;br /&gt;
tcp ackseq { 33, 55, 67, 88 }&lt;br /&gt;
tcp ackseq { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;flags &amp;lt;flags&amp;gt;&#039;&#039;&lt;br /&gt;
| TCP flags&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tcp flags { fin, syn, rst, psh, ack, urg, ecn, cwr}&lt;br /&gt;
tcp flags cwr&lt;br /&gt;
tcp flags != cwr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;window &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| Window&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tcp window 22&lt;br /&gt;
tcp window != 33-45&lt;br /&gt;
tcp window { 33, 55, 67, 88 }&lt;br /&gt;
tcp window { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;checksum &amp;lt;checksum&amp;gt;&#039;&#039;&lt;br /&gt;
| IP header checksum&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tcp checksum 22&lt;br /&gt;
tcp checksum != 33-45&lt;br /&gt;
tcp checksum { 33, 55, 67, 88 }&lt;br /&gt;
tcp checksum { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;urgptr &amp;lt;pointer&amp;gt;&#039;&#039;&lt;br /&gt;
| Urgent pointer&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tcp urgptr 22&lt;br /&gt;
tcp urgptr != 33-45&lt;br /&gt;
tcp urgptr { 33, 55, 67, 88 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;doff &amp;lt;offset&amp;gt;&#039;&#039;&lt;br /&gt;
| Data offset&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tcp doff 8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Udp ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|udp match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;dport &amp;lt;destination port&amp;gt;&#039;&#039;&lt;br /&gt;
| Destination port&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
udp dport 22&lt;br /&gt;
udp dport != 33-45&lt;br /&gt;
udp dport { 33-55 }&lt;br /&gt;
udp dport {telnet, http, https }&lt;br /&gt;
udp dport vmap { 22 : accept, 23 : drop }&lt;br /&gt;
udp dport vmap { 25:accept, 28:drop }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;sport &amp;lt; source port&amp;gt;&#039;&#039;&lt;br /&gt;
| Source port&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
udp sport 22&lt;br /&gt;
udp sport != 33-45&lt;br /&gt;
udp sport { 33, 55, 67, 88}&lt;br /&gt;
udp sport { 33-55}&lt;br /&gt;
udp sport vmap { 25:accept, 28:drop }&lt;br /&gt;
udp sport 1024 tcp dport 22&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;length &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| Total packet length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
udp length 6666&lt;br /&gt;
udp length != 50-65&lt;br /&gt;
udp length { 50, 65 }&lt;br /&gt;
udp length { 35-50 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;checksum &amp;lt;checksum&amp;gt;&#039;&#039;&lt;br /&gt;
| UDP checksum&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
udp checksum 22&lt;br /&gt;
udp checksum != 33-45&lt;br /&gt;
udp checksum { 33, 55, 67, 88 }&lt;br /&gt;
udp checksum { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Udplite ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|udplite match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;dport &amp;lt;destination port&amp;gt;&#039;&#039;&lt;br /&gt;
| Destination port&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
udplite dport 22&lt;br /&gt;
udplite dport != 33-45&lt;br /&gt;
udplite dport { 33-55 }&lt;br /&gt;
udplite dport {telnet, http, https }&lt;br /&gt;
udplite dport vmap { 22 : accept, 23 : drop }&lt;br /&gt;
udplite dport vmap { 25:accept, 28:drop }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;sport &amp;lt; source port&amp;gt;&#039;&#039;&lt;br /&gt;
| Source port&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
udplite sport 22&lt;br /&gt;
udplite sport != 33-45&lt;br /&gt;
udplite sport { 33, 55, 67, 88}&lt;br /&gt;
udplite sport { 33-55}&lt;br /&gt;
udplite sport vmap { 25:accept, 28:drop }&lt;br /&gt;
udplite sport 1024 tcp dport 22&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;checksum &amp;lt;checksum&amp;gt;&#039;&#039;&lt;br /&gt;
| Checksum&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
udplite checksum 22&lt;br /&gt;
udplite checksum != 33-45&lt;br /&gt;
udplite checksum { 33, 55, 67, 88 }&lt;br /&gt;
udplite checksum { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Sctp ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|sctp match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;dport &amp;lt;destination port&amp;gt;&#039;&#039;&lt;br /&gt;
| Destination port&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sctp dport 22&lt;br /&gt;
sctp dport != 33-45&lt;br /&gt;
sctp dport { 33-55 }&lt;br /&gt;
sctp dport {telnet, http, https }&lt;br /&gt;
sctp dport vmap { 22 : accept, 23 : drop }&lt;br /&gt;
sctp dport vmap { 25:accept, 28:drop }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;sport &amp;lt; source port&amp;gt;&#039;&#039;&lt;br /&gt;
| Source port&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sctp sport 22&lt;br /&gt;
sctp sport != 33-45&lt;br /&gt;
sctp sport { 33, 55, 67, 88}&lt;br /&gt;
sctp sport { 33-55}&lt;br /&gt;
sctp sport vmap { 25:accept, 28:drop }&lt;br /&gt;
sctp sport 1024 tcp dport 22&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;checksum &amp;lt;checksum&amp;gt;&#039;&#039;&lt;br /&gt;
| Checksum&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sctp checksum 22&lt;br /&gt;
sctp checksum != 33-45&lt;br /&gt;
sctp checksum { 33, 55, 67, 88 }&lt;br /&gt;
sctp checksum { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;vtag &amp;lt;tag&amp;gt;&#039;&#039;&lt;br /&gt;
| Verification tag&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sctp vtag 22&lt;br /&gt;
sctp vtag != 33-45&lt;br /&gt;
sctp vtag { 33, 55, 67, 88 }&lt;br /&gt;
sctp vtag { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Dccp ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|dccp match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;dport &amp;lt;destination port&amp;gt;&#039;&#039;&lt;br /&gt;
| Destination port&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dccp dport 22&lt;br /&gt;
dccp dport != 33-45&lt;br /&gt;
dccp dport { 33-55 }&lt;br /&gt;
dccp dport {telnet, http, https }&lt;br /&gt;
dccp dport vmap { 22 : accept, 23 : drop }&lt;br /&gt;
dccp dport vmap { 25:accept, 28:drop }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;sport &amp;lt; source port&amp;gt;&#039;&#039;&lt;br /&gt;
| Source port&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dccp sport 22&lt;br /&gt;
dccp sport != 33-45&lt;br /&gt;
dccp sport { 33, 55, 67, 88}&lt;br /&gt;
dccp sport { 33-55}&lt;br /&gt;
dccp sport vmap { 25:accept, 28:drop }&lt;br /&gt;
dccp sport 1024 tcp dport 22&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type &amp;lt;type&amp;gt;&#039;&#039;&lt;br /&gt;
| Type of packet&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dccp type {request, response, data, ack, dataack, closereq, close, reset, sync, syncack}&lt;br /&gt;
dccp type request&lt;br /&gt;
dccp type != request&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ah ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|ah match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;hdrlength &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| AH header length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ah hdrlength 11-23&lt;br /&gt;
ah hdrlength != 11-23&lt;br /&gt;
ah hdrlength {11, 23, 44 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;reserved &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ah reserved 22&lt;br /&gt;
ah reserved != 33-45&lt;br /&gt;
ah reserved {23, 100 }&lt;br /&gt;
ah reserved { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;spi &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ah spi 111&lt;br /&gt;
ah spi != 111-222&lt;br /&gt;
ah spi {111, 122 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;sequence &amp;lt;sequence&amp;gt;&#039;&#039;&lt;br /&gt;
| Sequence Number&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ah sequence 123&lt;br /&gt;
ah sequence {23, 25, 33}&lt;br /&gt;
ah sequence != 23-33&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Esp ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|esp match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;spi &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
esp spi 111&lt;br /&gt;
esp spi != 111-222&lt;br /&gt;
esp spi {111, 122 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;sequence &amp;lt;sequence&amp;gt;&#039;&#039;&lt;br /&gt;
| Sequence Number&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
esp sequence 123&lt;br /&gt;
esp sequence {23, 25, 33}&lt;br /&gt;
esp sequence != 23-33&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Comp ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|comp match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;nexthdr &amp;lt;protocol&amp;gt;&#039;&#039;&lt;br /&gt;
| Next header protocol (Upper layer protocol)&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
comp nexthdr != esp&lt;br /&gt;
comp nexthdr {esp, ah, comp, udp, udplite, tcp, tcp, dccp, sctp}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;flags &amp;lt;flags&amp;gt;&#039;&#039;&lt;br /&gt;
| Flags&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
comp flags 0x0&lt;br /&gt;
comp flags != 0x33-0x45&lt;br /&gt;
comp flags {0x33, 0x55, 0x67, 0x88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;cpi &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| Compression Parameter Index&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
comp cpi 22&lt;br /&gt;
comp cpi != 33-45&lt;br /&gt;
comp cpi {33, 55, 67, 88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Icmp ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|icmp match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type &amp;lt;type&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMP packet type&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmp type {echo-reply, destination-unreachable, source-quench, redirect, echo-request, time-exceeded, parameter-problem, timestamp-request, timestamp-reply, info-request, info-reply, address-mask-request, address-mask-reply, router-advertisement, router-solicitation}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;code &amp;lt;code&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMP packet code&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmp code 111&lt;br /&gt;
icmp code != 33-55&lt;br /&gt;
icmp code { 2, 4, 54, 33, 56}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;checksum &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMP packet checksum&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmp checksum 12343&lt;br /&gt;
icmp checksum != 11-343&lt;br /&gt;
icmp checksum { 1111, 222, 343 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;id &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMP packet id&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmp id 12343&lt;br /&gt;
icmp id != 11-343&lt;br /&gt;
icmp id { 1111, 222, 343 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;sequence &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMP packet sequence&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmp sequence 12343&lt;br /&gt;
icmp sequence != 11-343&lt;br /&gt;
icmp sequence { 1111, 222, 343 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;mtu &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMP packet mtu&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmp mtu 12343&lt;br /&gt;
icmp mtu != 11-343&lt;br /&gt;
icmp mtu { 1111, 222, 343 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;gateway &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMP packet gateway&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmp gateway 12343&lt;br /&gt;
icmp gateway != 11-343&lt;br /&gt;
icmp gateway { 1111, 222, 343 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Icmpv6 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|icmpv6 match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type &amp;lt;type&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMPv6 packet type&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmpv6 type {destination-unreachable, packet-too-big, time-exceeded, echo-request, echo-reply, mld-listener-query, mld-listener-report, mld-listener-reduction, nd-router-solicit, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert, nd-redirect, parameter-problem, router-renumbering}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;code &amp;lt;code&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMPv6 packet code&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmpv6 code 4&lt;br /&gt;
icmpv6 code 3-66&lt;br /&gt;
icmpv6 code {5, 6, 7}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;checksum &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMPv6 packet checksum&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmpv6 checksum 12343&lt;br /&gt;
icmpv6 checksum != 11-343&lt;br /&gt;
icmpv6 checksum { 1111, 222, 343 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;id &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMPv6 packet id&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmpv6 id 12343&lt;br /&gt;
icmpv6 id != 11-343&lt;br /&gt;
icmpv6 id { 1111, 222, 343 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;sequence &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMPv6 packet sequence&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmpv6 sequence 12343&lt;br /&gt;
icmpv6 sequence != 11-343&lt;br /&gt;
icmpv6 sequence { 1111, 222, 343 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;mtu &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMPv6 packet mtu&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmpv6 mtu 12343&lt;br /&gt;
icmpv6 mtu != 11-343&lt;br /&gt;
icmpv6 mtu { 1111, 222, 343 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;max-delay &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| ICMPv6 packet max delay&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
icmpv6 max-delay 33-45&lt;br /&gt;
icmpv6 max-delay != 33-45&lt;br /&gt;
icmpv6 max-delay {33, 55, 67, 88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ether ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|ether match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;saddr &amp;lt;mac address&amp;gt;&#039;&#039;&lt;br /&gt;
| Source mac address&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ether saddr 00:0f:54:0c:11:04&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type &amp;lt;type&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ether type vlan&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Dst ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|dst match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;nexthdr &amp;lt;proto&amp;gt;&#039;&#039;&lt;br /&gt;
| Next protocol header&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dst nexthdr { udplite, ipcomp, udp, ah, sctp, esp, dccp, tcp, ipv6-icmp}&lt;br /&gt;
dst nexthdr 22&lt;br /&gt;
dst nexthdr != 33-45&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;hdrlength &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| Header Length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dst hdrlength 22&lt;br /&gt;
dst hdrlength != 33-45&lt;br /&gt;
dst hdrlength { 33, 55, 67, 88 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Frag ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|frag match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;nexthdr &amp;lt;proto&amp;gt;&#039;&#039;&lt;br /&gt;
| Next protocol header&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
frag nexthdr { udplite, comp, udp, ah, sctp, esp, dccp, tcp, ipv6-icmp, icmp}&lt;br /&gt;
frag nexthdr 6&lt;br /&gt;
frag nexthdr != 50-51&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;reserved &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
frag reserved 22&lt;br /&gt;
frag reserved != 33-45&lt;br /&gt;
frag reserved { 33, 55, 67, 88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;frag-off &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
frag frag-off 22&lt;br /&gt;
frag frag-off != 33-45&lt;br /&gt;
frag frag-off { 33, 55, 67, 88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;more-fragments &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
frag more-fragments 0&lt;br /&gt;
frag more-fragments 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;id &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
frag id 1&lt;br /&gt;
frag id 33-45&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hbh ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|hbh match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;nexthdr &amp;lt;proto&amp;gt;&#039;&#039;&lt;br /&gt;
| Next protocol header&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hbh nexthdr { udplite, comp, udp, ah, sctp, esp, dccp, tcp, icmpv6}&lt;br /&gt;
hbh nexthdr 22&lt;br /&gt;
hbh nexthdr != 33-45&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;hdrlength &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| Header Length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hbh hdrlength 22&lt;br /&gt;
hbh hdrlength != 33-45&lt;br /&gt;
hbh hdrlength { 33, 55, 67, 88 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mh ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|mh match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;nexthdr &amp;lt;proto&amp;gt;&#039;&#039;&lt;br /&gt;
| Next protocol header&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mh nexthdr { udplite, ipcomp, udp, ah, sctp, esp, dccp, tcp, ipv6-icmp }&lt;br /&gt;
mh nexthdr 22&lt;br /&gt;
mh nexthdr != 33-45&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;hdrlength &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| Header Length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mh hdrlength 22&lt;br /&gt;
mh hdrlength != 33-45&lt;br /&gt;
mh hdrlength { 33, 55, 67, 88 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type &amp;lt;type&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mh type {binding-refresh-request, home-test-init, careof-test-init, home-test, careof-test, binding-update, binding-acknowledgement, binding-error, fast-binding-update, fast-binding-acknowledgement, fast-binding-advertisement, experimental-mobility-header, home-agent-switch-message}&lt;br /&gt;
mh type home-agent-switch-message&lt;br /&gt;
mh type != home-agent-switch-message&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;reserved &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mh reserved 22&lt;br /&gt;
mh reserved != 33-45&lt;br /&gt;
mh reserved { 33, 55, 67, 88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;checksum &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mh checksum 22&lt;br /&gt;
mh checksum != 33-45&lt;br /&gt;
mh checksum { 33, 55, 67, 88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Rt ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|rt match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;nexthdr &amp;lt;proto&amp;gt;&#039;&#039;&lt;br /&gt;
| Next protocol header&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rt nexthdr { udplite, ipcomp, udp, ah, sctp, esp, dccp, tcp, ipv6-icmp }&lt;br /&gt;
rt nexthdr 22&lt;br /&gt;
rt nexthdr != 33-45&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;hdrlength &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| Header Length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rt hdrlength 22&lt;br /&gt;
rt hdrlength != 33-45&lt;br /&gt;
rt hdrlength { 33, 55, 67, 88 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type &amp;lt;type&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rt type 22&lt;br /&gt;
rt type != 33-45&lt;br /&gt;
rt type { 33, 55, 67, 88 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;seg-left &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rt seg-left 22&lt;br /&gt;
rt seg-left != 33-45&lt;br /&gt;
rt seg-left { 33, 55, 67, 88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Vlan ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|vlan match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;id &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| Vlan tag ID&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vlan id 4094&lt;br /&gt;
vlan id 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;cfi &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vlan cfi 0&lt;br /&gt;
vlan cfi 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;pcp &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vlan pcp 7&lt;br /&gt;
vlan pcp 3&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Arp ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|arp match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;ptype &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| Payload type&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
arp ptype 0x0800&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;htype &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| Header type&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
arp htype 1&lt;br /&gt;
arp htype != 33-45&lt;br /&gt;
arp htype { 33, 55, 67, 88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;hlen &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| Header Length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
arp hlen 1&lt;br /&gt;
arp hlen != 33-45&lt;br /&gt;
arp hlen { 33, 55, 67, 88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;plen &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| Payload length&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
arp plen 1&lt;br /&gt;
arp plen != 33-45&lt;br /&gt;
arp plen { 33, 55, 67, 88}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;operation &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
arp operation {nak, inreply, inrequest, rreply, rrequest, reply, request}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ct ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|ct match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;state &amp;lt;state&amp;gt;&#039;&#039;&lt;br /&gt;
| State of the connection&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct state { new, established, related, untracked }&lt;br /&gt;
ct state != related&lt;br /&gt;
ct state established&lt;br /&gt;
ct state 8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;direction &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| Direction of the packet relative to the connection&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct direction original&lt;br /&gt;
ct direction != original&lt;br /&gt;
ct direction {reply, original}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;status &amp;lt;status&amp;gt;&#039;&#039;&lt;br /&gt;
| Status of the connection&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct status expected&lt;br /&gt;
(ct status &amp;amp; expected) != expected&lt;br /&gt;
ct status {expected,seen-reply,assured,confirmed,snat,dnat,dying}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;mark [set] &amp;lt;mark&amp;gt;&#039;&#039;&lt;br /&gt;
| Mark of the connection&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct mark 0&lt;br /&gt;
ct mark or 0x23 == 0x11&lt;br /&gt;
ct mark or 0x3 != 0x1&lt;br /&gt;
ct mark and 0x23 == 0x11&lt;br /&gt;
ct mark and 0x3 != 0x1&lt;br /&gt;
ct mark xor 0x23 == 0x11&lt;br /&gt;
ct mark xor 0x3 != 0x1&lt;br /&gt;
ct mark 0x00000032&lt;br /&gt;
ct mark != 0x00000032&lt;br /&gt;
ct mark 0x00000032-0x00000045&lt;br /&gt;
ct mark != 0x00000032-0x00000045&lt;br /&gt;
ct mark {0x32, 0x2222, 0x42de3}&lt;br /&gt;
ct mark {0x32-0x2222, 0x4444-0x42de3}&lt;br /&gt;
ct mark set 0x11 xor 0x1331&lt;br /&gt;
ct mark set 0x11333 and 0x11&lt;br /&gt;
ct mark set 0x12 or 0x11&lt;br /&gt;
ct mark set 0x11&lt;br /&gt;
ct mark set mark&lt;br /&gt;
ct mark set mark map { 1 : 10, 2 : 20, 3 : 30 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;expiration &amp;lt;time&amp;gt;&#039;&#039;&lt;br /&gt;
| Connection expiration time&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct expiration 30&lt;br /&gt;
ct expiration 30s&lt;br /&gt;
ct expiration != 233&lt;br /&gt;
ct expiration != 3m53s&lt;br /&gt;
ct expiration 33-45&lt;br /&gt;
ct expiration 33s-45s&lt;br /&gt;
ct expiration != 33-45&lt;br /&gt;
ct expiration != 33s-45s&lt;br /&gt;
ct expiration {33, 55, 67, 88}&lt;br /&gt;
ct expiration { 1m7s, 33s, 55s, 1m28s}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;helper &amp;quot;&amp;lt;helper&amp;gt;&amp;quot;&#039;&#039;&lt;br /&gt;
| Helper associated with the connection&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct helper &amp;quot;ftp&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| | &#039;&#039;[original | reply] bytes &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct original bytes &amp;gt; 100000&lt;br /&gt;
ct bytes &amp;gt; 100000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| | &#039;&#039;[original | reply] packets &amp;lt;value&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct reply packets &amp;lt; 100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| | &#039;&#039;[original | reply] ip saddr &amp;lt;ip source address&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct original ip saddr 192.168.0.1&lt;br /&gt;
ct reply ip saddr 192.168.0.1&lt;br /&gt;
ct original ip saddr 192.168.1.0/24&lt;br /&gt;
ct reply ip saddr 192.168.1.0/24&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| | &#039;&#039;[original | reply] ip daddr &amp;lt;ip destination address&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct original ip daddr 192.168.0.1&lt;br /&gt;
ct reply ip daddr 192.168.0.1&lt;br /&gt;
ct original ip daddr 192.168.1.0/24&lt;br /&gt;
ct reply ip daddr 192.168.1.0/24&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| | &#039;&#039;[original | reply] l3proto &amp;lt;protocol&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct original l3proto ipv4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| | &#039;&#039;[original | reply] protocol &amp;lt;protocol&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct original protocol 6&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| | &#039;&#039;[original | reply] proto-dst &amp;lt;port&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct original proto-dst 22&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| | &#039;&#039;[original | reply] proto-src &amp;lt;port&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ct reply proto-src 53&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Meta ====&lt;br /&gt;
&lt;br /&gt;
[[Matching packet metainformation|&#039;&#039;meta&#039;&#039;]] matches packet by metainformation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|meta match&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;iifname &amp;lt;input interface name&amp;gt;&#039;&#039;&lt;br /&gt;
| Input interface name&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta iifname &amp;quot;eth0&amp;quot;&lt;br /&gt;
meta iifname != &amp;quot;eth0&amp;quot;&lt;br /&gt;
meta iifname {&amp;quot;eth0&amp;quot;, &amp;quot;lo&amp;quot;}&lt;br /&gt;
meta iifname &amp;quot;eth*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;oifname &amp;lt;output interface name&amp;gt;&#039;&#039;&lt;br /&gt;
| Output interface name&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta oifname &amp;quot;eth0&amp;quot;&lt;br /&gt;
meta oifname != &amp;quot;eth0&amp;quot;&lt;br /&gt;
meta oifname {&amp;quot;eth0&amp;quot;, &amp;quot;lo&amp;quot;}&lt;br /&gt;
meta oifname &amp;quot;eth*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;iif &amp;lt;input interface index&amp;gt;&#039;&#039;&lt;br /&gt;
| Input interface index&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta iif eth0&lt;br /&gt;
meta iif != eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;oif &amp;lt;output interface index&amp;gt;&#039;&#039;&lt;br /&gt;
| Output interface index&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta oif lo&lt;br /&gt;
meta oif != lo&lt;br /&gt;
meta oif {eth0, lo}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;iiftype &amp;lt;input interface type&amp;gt;&#039;&#039;&lt;br /&gt;
| Input interface type&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta iiftype {ether, ppp, ipip, ipip6, loopback, sit, ipgre}&lt;br /&gt;
meta iiftype != ether&lt;br /&gt;
meta iiftype ether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;oiftype &amp;lt;output interface type&amp;gt;&#039;&#039;&lt;br /&gt;
| Output interface hardware type&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta oiftype {ether, ppp, ipip, ipip6, loopback, sit, ipgre}&lt;br /&gt;
meta oiftype != ether&lt;br /&gt;
meta oiftype ether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;length &amp;lt;length&amp;gt;&#039;&#039;&lt;br /&gt;
| Length of the packet in bytes&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta length 1000&lt;br /&gt;
meta length != 1000&lt;br /&gt;
meta length &amp;gt; 1000&lt;br /&gt;
meta length 33-45&lt;br /&gt;
meta length != 33-45&lt;br /&gt;
meta length { 33, 55, 67, 88 }&lt;br /&gt;
meta length { 33-55, 67-88 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;protocol &amp;lt;protocol&amp;gt;&#039;&#039;&lt;br /&gt;
| ethertype protocol&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta protocol ip&lt;br /&gt;
meta protocol != ip&lt;br /&gt;
meta protocol { ip, arp, ip6, vlan }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;nfproto &amp;lt;protocol&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta nfproto ipv4&lt;br /&gt;
meta nfproto != ipv6&lt;br /&gt;
meta nfproto { ipv4, ipv6 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;l4proto &amp;lt;protocol&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta l4proto 22&lt;br /&gt;
meta l4proto != 233&lt;br /&gt;
meta l4proto 33-45&lt;br /&gt;
meta l4proto { 33, 55, 67, 88 }&lt;br /&gt;
meta l4proto { 33-55 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;mark [set] &amp;lt;mark&amp;gt;&#039;&#039;&lt;br /&gt;
| Packet mark&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta mark 0x4&lt;br /&gt;
meta mark 0x00000032&lt;br /&gt;
meta mark and 0x03 == 0x01&lt;br /&gt;
meta mark and 0x03 != 0x01&lt;br /&gt;
meta mark != 0x10&lt;br /&gt;
meta mark or 0x03 == 0x01&lt;br /&gt;
meta mark or 0x03 != 0x01&lt;br /&gt;
meta mark xor 0x03 == 0x01&lt;br /&gt;
meta mark xor 0x03 != 0x01&lt;br /&gt;
meta mark set 0xffffffc8 xor 0x16&lt;br /&gt;
meta mark set 0x16 and 0x16&lt;br /&gt;
meta mark set 0xffffffe9 or 0x16&lt;br /&gt;
meta mark set 0xffffffde and 0x16&lt;br /&gt;
meta mark set 0x32 or 0xfffff&lt;br /&gt;
meta mark set 0xfffe xor 0x16&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;priority [set] &amp;lt;priority&amp;gt;&#039;&#039;&lt;br /&gt;
| tc class id&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta priority none&lt;br /&gt;
meta priority 0x1:0x1&lt;br /&gt;
meta priority 0x1:0xffff&lt;br /&gt;
meta priority 0xffff:0xffff&lt;br /&gt;
meta priority set 0x1:0x1&lt;br /&gt;
meta priority set 0x1:0xffff&lt;br /&gt;
meta priority set 0xffff:0xffff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;skuid &amp;lt;user id&amp;gt;&#039;&#039;&lt;br /&gt;
| UID associated with originating socket&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta skuid {bin, root, daemon}&lt;br /&gt;
meta skuid root&lt;br /&gt;
meta skuid != root&lt;br /&gt;
meta skuid lt 3000&lt;br /&gt;
meta skuid gt 3000&lt;br /&gt;
meta skuid eq 3000&lt;br /&gt;
meta skuid 3001-3005&lt;br /&gt;
meta skuid != 2001-2005&lt;br /&gt;
meta skuid { 2001-2005 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;skgid &amp;lt;group id&amp;gt;&#039;&#039;&lt;br /&gt;
| GID associated with originating socket&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta skgid {bin, root, daemon}&lt;br /&gt;
meta skgid root&lt;br /&gt;
meta skgid != root&lt;br /&gt;
meta skgid lt 3000&lt;br /&gt;
meta skgid gt 3000&lt;br /&gt;
meta skgid eq 3000&lt;br /&gt;
meta skgid 3001-3005&lt;br /&gt;
meta skgid != 2001-2005&lt;br /&gt;
meta skgid { 2001-2005 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;rtclassid &amp;lt;class&amp;gt;&#039;&#039;&lt;br /&gt;
| Routing realm&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta rtclassid cosmos&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;pkttype &amp;lt;type&amp;gt;&#039;&#039;&lt;br /&gt;
| Packet type&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta pkttype broadcast&lt;br /&gt;
meta pkttype != broadcast&lt;br /&gt;
meta pkttype { broadcast, unicast, multicast}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;cpu &amp;lt;cpu index&amp;gt;&#039;&#039;&lt;br /&gt;
| CPU ID&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta cpu 1&lt;br /&gt;
meta cpu != 1&lt;br /&gt;
meta cpu 1-3&lt;br /&gt;
meta cpu != 1-2&lt;br /&gt;
meta cpu { 2,3 }&lt;br /&gt;
meta cpu { 2-3, 5-7 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;iifgroup &amp;lt;input group&amp;gt;&#039;&#039;&lt;br /&gt;
| Input interface group&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta iifgroup 0&lt;br /&gt;
meta iifgroup != 0&lt;br /&gt;
meta iifgroup default&lt;br /&gt;
meta iifgroup != default&lt;br /&gt;
meta iifgroup {default}&lt;br /&gt;
meta iifgroup { 11,33 }&lt;br /&gt;
meta iifgroup {11-33}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;oifgroup &amp;lt;group&amp;gt;&#039;&#039;&lt;br /&gt;
| Output interface group&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta oifgroup 0&lt;br /&gt;
meta oifgroup != 0&lt;br /&gt;
meta oifgroup default&lt;br /&gt;
meta oifgroup != default&lt;br /&gt;
meta oifgroup {default}&lt;br /&gt;
meta oifgroup { 11,33 }&lt;br /&gt;
meta oifgroup {11-33}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;cgroup &amp;lt;group&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
meta cgroup 1048577&lt;br /&gt;
meta cgroup != 1048577&lt;br /&gt;
meta cgroup { 1048577, 1048578 }&lt;br /&gt;
meta cgroup 1048577-1048578&lt;br /&gt;
meta cgroup != 1048577-1048578&lt;br /&gt;
meta cgroup {1048577-1048578}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Statements ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;statement&#039;&#039;&#039; is the action performed when the packet match the rule. It could be &#039;&#039;terminal&#039;&#039; and &#039;&#039;non-terminal&#039;&#039;. In a certain rule we can consider several non-terminal statements but only a single terminal statement.&lt;br /&gt;
&lt;br /&gt;
==== Verdict statements ====&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;verdict statement&#039;&#039;&#039; alters control flow in the ruleset and issues policy decisions for packets. The valid verdict statements are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;accept&#039;&#039;: Accept the packet and stop the remain rules evaluation.&lt;br /&gt;
* &#039;&#039;drop&#039;&#039;: Drop the packet and stop the remain rules evaluation.&lt;br /&gt;
* &#039;&#039;queue&#039;&#039;: Queue the packet to userspace and stop the remain rules evaluation.&lt;br /&gt;
* &#039;&#039;continue&#039;&#039;: Continue the ruleset evaluation with the next rule.&lt;br /&gt;
* &#039;&#039;return&#039;&#039;: Return from the current chain and continue at the next rule of the last chain. In a base chain it is equivalent to accept&lt;br /&gt;
* &#039;&#039;jump &amp;lt;chain&amp;gt;&#039;&#039;: Continue at the first rule of &amp;lt;chain&amp;gt;. It will continue at the next rule after a return statement is issued&lt;br /&gt;
* &#039;&#039;goto &amp;lt;chain&amp;gt;&#039;&#039;: Similar to jump, but after the new chain the evaluation will continue at the last chain instead of the one containing the goto statement&lt;br /&gt;
&lt;br /&gt;
==== Log ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|log statement&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;level [over] &amp;lt;value&amp;gt; &amp;lt;unit&amp;gt; [burst &amp;lt;value&amp;gt; &amp;lt;unit&amp;gt;]&#039;&#039;&lt;br /&gt;
| Log level&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
log&lt;br /&gt;
log level emerg&lt;br /&gt;
log level alert&lt;br /&gt;
log level crit&lt;br /&gt;
log level err&lt;br /&gt;
log level warn&lt;br /&gt;
log level notice&lt;br /&gt;
log level info&lt;br /&gt;
log level debug&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;group &amp;lt;value&amp;gt; [queue-threshold &amp;lt;value&amp;gt;] [snaplen &amp;lt;value&amp;gt;] [prefix &amp;quot;&amp;lt;prefix&amp;gt;&amp;quot;]&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
log prefix aaaaa-aaaaaa group 2 snaplen 33&lt;br /&gt;
log group 2 queue-threshold 2&lt;br /&gt;
log group 2 snaplen 33&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Reject ====&lt;br /&gt;
&lt;br /&gt;
The default &#039;&#039;&#039;reject&#039;&#039;&#039; will be the ICMP type &#039;&#039;&#039;port-unreachable&#039;&#039;&#039;. The &#039;&#039;&#039;icmpx&#039;&#039;&#039; is only used for inet family support.&lt;br /&gt;
&lt;br /&gt;
More information on the [[Rejecting_traffic]] page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|reject statement&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;with &amp;lt;protocol&amp;gt; type &amp;lt;type&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
reject&lt;br /&gt;
reject with icmp type host-unreachable&lt;br /&gt;
reject with icmp type net-unreachable&lt;br /&gt;
reject with icmp type prot-unreachable&lt;br /&gt;
reject with icmp type port-unreachable&lt;br /&gt;
reject with icmp type net-prohibited&lt;br /&gt;
reject with icmp type host-prohibited&lt;br /&gt;
reject with icmp type admin-prohibited&lt;br /&gt;
reject with icmpv6 type no-route&lt;br /&gt;
reject with icmpv6 type admin-prohibited&lt;br /&gt;
reject with icmpv6 type addr-unreachable&lt;br /&gt;
reject with icmpv6 type port-unreachable&lt;br /&gt;
reject with icmpx type host-unreachable&lt;br /&gt;
reject with icmpx type no-route&lt;br /&gt;
reject with icmpx type admin-prohibited&lt;br /&gt;
reject with icmpx type port-unreachable&lt;br /&gt;
ip protocol tcp reject with tcp reset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Counter ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|counter statement&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;packets &amp;lt;packets&amp;gt; bytes &amp;lt;bytes&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
counter&lt;br /&gt;
counter packets 0 bytes 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Limit ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|limit statement&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;rate [over] &amp;lt;value&amp;gt; &amp;lt;unit&amp;gt; [burst &amp;lt;value&amp;gt; &amp;lt;unit&amp;gt;]&#039;&#039;&lt;br /&gt;
| Rate limit&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
limit rate 400/minute&lt;br /&gt;
limit rate 400/hour&lt;br /&gt;
limit rate over 40/day&lt;br /&gt;
limit rate over 400/week&lt;br /&gt;
limit rate over 1023/second burst 10 packets&lt;br /&gt;
limit rate 1025 kbytes/second&lt;br /&gt;
limit rate 1023000 mbytes/second&lt;br /&gt;
limit rate 1025 bytes/second burst 512 bytes&lt;br /&gt;
limit rate 1025 kbytes/second burst 1023 kbytes&lt;br /&gt;
limit rate 1025 mbytes/second burst 1025 kbytes&lt;br /&gt;
limit rate 1025000 mbytes/second burst 1023 mbytes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Nat ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|nat statement&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;dnat to &amp;lt;destination address&amp;gt;&#039;&#039;&lt;br /&gt;
| Destination address translation&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dnat to 192.168.3.2&lt;br /&gt;
dnat to ct mark map { 0x00000014 : 1.2.3.4}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;snat to &amp;lt;ip source address&amp;gt;&#039;&#039;&lt;br /&gt;
| Source address translation&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
snat to 192.168.3.2&lt;br /&gt;
snat to 2001:838:35f:1::-2001:838:35f:2:::100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;masquerade [&amp;lt;type&amp;gt;] [to :&amp;lt;port&amp;gt;]&#039;&#039;&lt;br /&gt;
| Masquerade&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
masquerade&lt;br /&gt;
masquerade persistent,fully-random,random&lt;br /&gt;
masquerade to :1024&lt;br /&gt;
masquerade to :1024-2048&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Queue ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|queue statement&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;num &amp;lt;value&amp;gt; &amp;lt;scheduler&amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
queue&lt;br /&gt;
queue num 2&lt;br /&gt;
queue num 2-3&lt;br /&gt;
queue num 4-5 fanout bypass&lt;br /&gt;
queue num 4-5 fanout&lt;br /&gt;
queue num 4-5 bypass&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extras ==&lt;br /&gt;
&lt;br /&gt;
=== Export Configuration ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft export (xml | json)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitor Events ===&lt;br /&gt;
&lt;br /&gt;
Monitor events from Netlink creating filters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft monitor [new | destroy] [tables | chains | sets | rules | elements] [xml | json]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Nft scripting =&lt;br /&gt;
&lt;br /&gt;
== List ruleset ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft list ruleset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flush ruleset ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft flush ruleset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Load ruleset ==&lt;br /&gt;
&lt;br /&gt;
Create a command batch file and load it with the nft interpreter,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% echo &amp;quot;flush ruleset&amp;quot; &amp;gt; /etc/nftables.rules&lt;br /&gt;
% echo &amp;quot;add table filter&amp;quot; &amp;gt;&amp;gt; /etc/nftables.rules&lt;br /&gt;
% echo &amp;quot;add chain filter input&amp;quot; &amp;gt;&amp;gt; /etc/nftables.rules&lt;br /&gt;
% echo &amp;quot;add rule filter input meta iifname lo accept&amp;quot; &amp;gt;&amp;gt; /etc/nftables.rules&lt;br /&gt;
% nft -f /etc/nftables.rules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or create an executable nft script file,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/nftables.rules&lt;br /&gt;
&amp;gt; #!/usr/local/sbin/nft -f&lt;br /&gt;
&amp;gt; flush ruleset&lt;br /&gt;
&amp;gt; add table filter&lt;br /&gt;
&amp;gt; add chain filter input&lt;br /&gt;
&amp;gt; add rule filter input meta iifname lo accept&lt;br /&gt;
&amp;gt; EOF&lt;br /&gt;
% chmod u+x /etc/nftables.rules&lt;br /&gt;
% /etc/nftables.rules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or create an executable nft script file from an already created ruleset,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
% nft list ruleset &amp;gt; /etc/nftables.rules&lt;br /&gt;
% nft flush ruleset&lt;br /&gt;
% nft -f /etc/nftables.rules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== Simple IP/IPv6 Firewall ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
flush ruleset&lt;br /&gt;
&lt;br /&gt;
table firewall {&lt;br /&gt;
  chain incoming {&lt;br /&gt;
    type filter hook input priority 0; policy drop;&lt;br /&gt;
&lt;br /&gt;
    # established/related connections&lt;br /&gt;
    ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
    # loopback interface&lt;br /&gt;
    iifname lo accept&lt;br /&gt;
&lt;br /&gt;
    # icmp&lt;br /&gt;
    icmp type echo-request accept&lt;br /&gt;
&lt;br /&gt;
    # open tcp ports: sshd (22), httpd (80)&lt;br /&gt;
    tcp dport {ssh, http} accept&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table ip6 firewall {&lt;br /&gt;
  chain incoming {&lt;br /&gt;
    type filter hook input priority 0; policy drop;&lt;br /&gt;
&lt;br /&gt;
    # established/related connections&lt;br /&gt;
    ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
    # invalid connections&lt;br /&gt;
    ct state invalid drop&lt;br /&gt;
&lt;br /&gt;
    # loopback interface&lt;br /&gt;
    iifname lo accept&lt;br /&gt;
&lt;br /&gt;
    # icmp&lt;br /&gt;
    # routers may also want: mld-listener-query, nd-router-solicit&lt;br /&gt;
    icmpv6 type {echo-request,nd-neighbor-solicit} accept&lt;br /&gt;
&lt;br /&gt;
    # open tcp ports: sshd (22), httpd (80)&lt;br /&gt;
    tcp dport {ssh, http} accept&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fmyhr</name></author>
	</entry>
</feed>