Commit d2088ca8 authored by Florian Westphal's avatar Florian Westphal Committed by Jakub Kicinski

netlink: specs: nftables: allow decode of default firewalld ruleset

This update allows listing default firewalld ruleset on Fedora 40 via
  tools/net/ynl/cli.py --spec \
     Documentation/netlink/specs/nftables.yaml --dump getrule

Default ruleset uses fib, reject and objref expressions which were
missing.

Other missing expressions can be added later.

Improve decoding while at it:
- add bitwise, ct and lookup attributes
- wire up the quota expression
- translate raw verdict codes to a human reable name, e.g.
  'code': 4294967293 becomes 'code': 'jump'.

v2: forgot fib addrtype in enum list (Donald Hunter)
Reviewed-by: default avatarDonald Hunter <donald.hunter@gmail.com>
Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
Link: https://patch.msgid.link/20240902214112.2549-1-fw@strlen.deSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 1232e93b
...@@ -62,6 +62,13 @@ definitions: ...@@ -62,6 +62,13 @@ definitions:
- sdif - sdif
- sdifname - sdifname
- bri-broute - bri-broute
-
name: bitwise-ops
type: enum
entries:
- bool
- lshift
- rshift
- -
name: cmp-ops name: cmp-ops
type: enum type: enum
...@@ -125,6 +132,99 @@ definitions: ...@@ -125,6 +132,99 @@ definitions:
- object - object
- concat - concat
- expr - expr
-
name: lookup-flags
type: flags
entries:
- invert
-
name: ct-keys
type: enum
entries:
- state
- direction
- status
- mark
- secmark
- expiration
- helper
- l3protocol
- src
- dst
- protocol
- proto-src
- proto-dst
- labels
- pkts
- bytes
- avgpkt
- zone
- eventmask
- src-ip
- dst-ip
- src-ip6
- dst-ip6
- ct-id
-
name: ct-direction
type: enum
entries:
- original
- reply
-
name: quota-flags
type: flags
entries:
- invert
- depleted
-
name: verdict-code
type: enum
entries:
- name: continue
value: 0xffffffff
- name: break
value: 0xfffffffe
- name: jump
value: 0xfffffffd
- name: goto
value: 0xfffffffc
- name: return
value: 0xfffffffb
- name: drop
value: 0
- name: accept
value: 1
- name: stolen
value: 2
- name: queue
value: 3
- name: repeat
value: 4
-
name: fib-result
type: enum
entries:
- oif
- oifname
- addrtype
-
name: fib-flags
type: flags
entries:
- saddr
- daddr
- mark
- iif
- oif
- present
-
name: reject-types
type: enum
entries:
- icmp-unreach
- tcp-rst
- icmpx-unreach
attribute-sets: attribute-sets:
- -
...@@ -611,9 +711,10 @@ attribute-sets: ...@@ -611,9 +711,10 @@ attribute-sets:
type: u64 type: u64
byte-order: big-endian byte-order: big-endian
- -
name: flags # TODO name: flags
type: u32 type: u32
byte-order: big-endian byte-order: big-endian
enum: quota-flags
- -
name: pad name: pad
type: pad type: pad
...@@ -664,6 +765,38 @@ attribute-sets: ...@@ -664,6 +765,38 @@ attribute-sets:
name: devs name: devs
type: nest type: nest
nested-attributes: hook-dev-attrs nested-attributes: hook-dev-attrs
-
name: expr-bitwise-attrs
attributes:
-
name: sreg
type: u32
byte-order: big-endian
-
name: dreg
type: u32
byte-order: big-endian
-
name: len
type: u32
byte-order: big-endian
-
name: mask
type: nest
nested-attributes: data-attrs
-
name: xor
type: nest
nested-attributes: data-attrs
-
name: op
type: u32
byte-order: big-endian
enum: bitwise-ops
-
name: data
type: nest
nested-attributes: data-attrs
- -
name: expr-cmp-attrs name: expr-cmp-attrs
attributes: attributes:
...@@ -698,6 +831,7 @@ attribute-sets: ...@@ -698,6 +831,7 @@ attribute-sets:
name: code name: code
type: u32 type: u32
byte-order: big-endian byte-order: big-endian
enum: verdict-code
- -
name: chain name: chain
type: string type: string
...@@ -718,6 +852,43 @@ attribute-sets: ...@@ -718,6 +852,43 @@ attribute-sets:
- -
name: pad name: pad
type: pad type: pad
-
name: expr-fib-attrs
attributes:
-
name: dreg
type: u32
byte-order: big-endian
-
name: result
type: u32
byte-order: big-endian
enum: fib-result
-
name: flags
type: u32
byte-order: big-endian
enum: fib-flags
-
name: expr-ct-attrs
attributes:
-
name: dreg
type: u32
byte-order: big-endian
-
name: key
type: u32
byte-order: big-endian
enum: ct-keys
-
name: direction
type: u8
enum: ct-direction
-
name: sreg
type: u32
byte-order: big-endian
- -
name: expr-flow-offload-attrs name: expr-flow-offload-attrs
attributes: attributes:
...@@ -736,6 +907,31 @@ attribute-sets: ...@@ -736,6 +907,31 @@ attribute-sets:
name: data name: data
type: nest type: nest
nested-attributes: data-attrs nested-attributes: data-attrs
-
name: expr-lookup-attrs
attributes:
-
name: set
type: string
doc: Name of set to use
-
name: set id
type: u32
byte-order: big-endian
doc: ID of set to use
-
name: sreg
type: u32
byte-order: big-endian
-
name: dreg
type: u32
byte-order: big-endian
-
name: flags
type: u32
byte-order: big-endian
enum: lookup-flags
- -
name: expr-meta-attrs name: expr-meta-attrs
attributes: attributes:
...@@ -820,6 +1016,17 @@ attribute-sets: ...@@ -820,6 +1016,17 @@ attribute-sets:
name: csum-flags name: csum-flags
type: u32 type: u32
byte-order: big-endian byte-order: big-endian
-
name: expr-reject-attrs
attributes:
-
name: type
type: u32
byte-order: big-endian
enum: reject-types
-
name: icmp-code
type: u8
- -
name: expr-tproxy-attrs name: expr-tproxy-attrs
attributes: attributes:
...@@ -835,13 +1042,38 @@ attribute-sets: ...@@ -835,13 +1042,38 @@ attribute-sets:
name: reg-port name: reg-port
type: u32 type: u32
byte-order: big-endian byte-order: big-endian
-
name: expr-objref-attrs
attributes:
-
name: imm-type
type: u32
byte-order: big-endian
-
name: imm-name
type: string
doc: object name
-
name: set-sreg
type: u32
byte-order: big-endian
-
name: set-name
type: string
doc: name of object map
-
name: set-id
type: u32
byte-order: big-endian
doc: id of object map
sub-messages: sub-messages:
- -
name: expr-ops name: expr-ops
formats: formats:
- -
value: bitwise # TODO value: bitwise
attribute-set: expr-bitwise-attrs
- -
value: cmp value: cmp
attribute-set: expr-cmp-attrs attribute-set: expr-cmp-attrs
...@@ -849,7 +1081,11 @@ sub-messages: ...@@ -849,7 +1081,11 @@ sub-messages:
value: counter value: counter
attribute-set: expr-counter-attrs attribute-set: expr-counter-attrs
- -
value: ct # TODO value: ct
attribute-set: expr-ct-attrs
-
value: fib
attribute-set: expr-fib-attrs
- -
value: flow_offload value: flow_offload
attribute-set: expr-flow-offload-attrs attribute-set: expr-flow-offload-attrs
...@@ -857,16 +1093,26 @@ sub-messages: ...@@ -857,16 +1093,26 @@ sub-messages:
value: immediate value: immediate
attribute-set: expr-immediate-attrs attribute-set: expr-immediate-attrs
- -
value: lookup # TODO value: lookup
attribute-set: expr-lookup-attrs
- -
value: meta value: meta
attribute-set: expr-meta-attrs attribute-set: expr-meta-attrs
- -
value: nat value: nat
attribute-set: expr-nat-attrs attribute-set: expr-nat-attrs
-
value: objref
attribute-set: expr-objref-attrs
- -
value: payload value: payload
attribute-set: expr-payload-attrs attribute-set: expr-payload-attrs
-
value: quota
attribute-set: quota-attrs
-
value: reject
attribute-set: expr-reject-attrs
- -
value: tproxy value: tproxy
attribute-set: expr-tproxy-attrs attribute-set: expr-tproxy-attrs
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment