{ "nftables": [ { "metainfo": { "version": "VERSION", "release_name": "RELEASE_NAME", "json_schema_version": 1 } }, { "table": { "family": "inet", "name": "t", "handle": 0 } }, { "chain": { "family": "inet", "table": "t", "name": "c", "handle": 0 } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "meta": { "key": "iifname" } }, "right": "whatever" } }, { "match": { "op": "==", "left": { "meta": { "key": "oifname" } }, "right": "whatever" } }, { "match": { "op": "==", "left": { "meta": { "key": "iif" } }, "right": "lo" } }, { "match": { "op": "==", "left": { "meta": { "key": "oif" } }, "right": "lo" } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "meta": { "key": "iifname" } }, "right": { "set": [ "whatever" ] } } }, { "match": { "op": "==", "left": { "meta": { "key": "iif" } }, "right": { "set": [ "lo" ] } } }, { "match": { "op": "==", "left": { "meta": { "key": "mark" } }, "right": 123 } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "in", "left": { "ct": { "key": "state" } }, "right": [ "established", "related", "new" ] } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "!=", "left": { "ct": { "key": "state" } }, "right": { "|": [ { "|": [ "established", "related" ] }, "new" ] } } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "payload": { "protocol": "ip", "field": "saddr" } }, "right": "10.0.0.0" } }, { "match": { "op": "==", "left": { "payload": { "protocol": "ip", "field": "daddr" } }, "right": "10.0.0.2" } }, { "match": { "op": "==", "left": { "payload": { "protocol": "ip", "field": "saddr" } }, "right": "10.0.0.0" } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "payload": { "protocol": "ip6", "field": "daddr" } }, "right": "fe0::1" } }, { "match": { "op": "==", "left": { "payload": { "protocol": "ip6", "field": "saddr" } }, "right": "fe0::2" } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "vmap": { "key": { "payload": { "protocol": "ip", "field": "saddr" } }, "data": { "set": [ [ "10.0.0.0", { "drop": null } ], [ "10.0.0.2", { "accept": null } ] ] } } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "vmap": { "key": { "payload": { "protocol": "ip6", "field": "daddr" } }, "data": { "set": [ [ "fe0::1", { "drop": null } ], [ "fe0::2", { "accept": null } ] ] } } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "concat": [ { "payload": { "protocol": "ip6", "field": "saddr" } }, { "payload": { "protocol": "ip6", "field": "nexthdr" } } ] }, "right": { "set": [ { "concat": [ "fe0::2", "tcp" ] }, { "concat": [ "fe0::1", "udp" ] } ] } } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "vmap": { "key": { "concat": [ { "payload": { "protocol": "ip", "field": "daddr" } }, { "meta": { "key": "iif" } } ] }, "data": { "set": [ [ { "concat": [ "10.0.0.0", "lo" ] }, { "accept": null } ] ] } } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "dport" } }, "right": { "range": [ 100, 222 ] } } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "vmap": { "key": { "payload": { "protocol": "udp", "field": "dport" } }, "data": { "set": [ [ { "range": [ 100, 222 ] }, { "accept": null } ] ] } } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "sport" } }, "right": 1 } }, { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "dport" } }, "right": 1 } }, { "match": { "op": "==", "left": { "meta": { "key": "oifname" } }, "right": "foobar" } }, { "queue": { "num": 0, "flags": "bypass" } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "sport" } }, "right": 1 } }, { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "dport" } }, "right": 1 } }, { "match": { "op": "==", "left": { "meta": { "key": "oifname" } }, "right": "foobar" } }, { "queue": { "num": { "range": [ 1, 42 ] } } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "sport" } }, "right": 1 } }, { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "dport" } }, "right": 1 } }, { "match": { "op": "==", "left": { "meta": { "key": "oifname" } }, "right": "foobar" } }, { "queue": { "num": { "range": [ 1, 42 ] }, "flags": [ "bypass", "fanout" ] } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "sport" } }, "right": 1 } }, { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "dport" } }, "right": 1 } }, { "match": { "op": "==", "left": { "meta": { "key": "oifname" } }, "right": "foobar" } }, { "queue": { "num": { "symhash": { "mod": 2 } } } } ] } }, { "rule": { "family": "inet", "table": "t", "chain": "c", "handle": 0, "expr": [ { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "sport" } }, "right": 1 } }, { "match": { "op": "==", "left": { "payload": { "protocol": "tcp", "field": "dport" } }, "right": 1 } }, { "match": { "op": "==", "left": { "meta": { "key": "oifname" } }, "right": "foobar" } }, { "queue": { "num": { "jhash": { "mod": 4, "expr": { "concat": [ { "payload": { "protocol": "tcp", "field": "dport" } }, { "payload": { "protocol": "tcp", "field": "sport" } } ] } } }, "flags": "bypass" } } ] } } ] }