doc/netlink: Add spec for rt route messages

Add schema for rt route with support for getroute, newroute and
delroute.

Routes can be dumped with filter attributes like this:

./tools/net/ynl/cli.py \
    --spec Documentation/netlink/specs/rt_route.yaml \
    --dump getroute --json '{"rtm-family": 2, "rtm-table": 254}'

Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://lore.kernel.org/r/20230825122756.7603-13-donald.hunter@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Donald Hunter 2023-08-25 13:27:55 +01:00 committed by Jakub Kicinski
parent b2f63d904e
commit 023289b4f5

View File

@ -0,0 +1,327 @@
# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
name: rt-route
protocol: netlink-raw
protonum: 0
doc:
Route configuration over rtnetlink.
definitions:
-
name: rtm-type
name-prefix: rtn-
type: enum
entries:
- unspec
- unicast
- local
- broadcast
- anycast
- multicast
- blackhole
- unreachable
- prohibit
- throw
- nat
- xresolve
-
name: rtmsg
type: struct
members:
-
name: rtm-family
type: u8
-
name: rtm-dst-len
type: u8
-
name: rtm-src-len
type: u8
-
name: rtm-tos
type: u8
-
name: rtm-table
type: u8
-
name: rtm-protocol
type: u8
-
name: rtm-scope
type: u8
-
name: rtm-type
type: u8
enum: rtm-type
-
name: rtm-flags
type: u32
-
name: rta-cacheinfo
type: struct
members:
-
name: rta-clntref
type: u32
-
name: rta-lastuse
type: u32
-
name: rta-expires
type: u32
-
name: rta-error
type: u32
-
name: rta-used
type: u32
attribute-sets:
-
name: route-attrs
attributes:
-
name: rta-dst
type: binary
display-hint: ipv4
-
name: rta-src
type: binary
display-hint: ipv4
-
name: rta-iif
type: u32
-
name: rta-oif
type: u32
-
name: rta-gateway
type: binary
display-hint: ipv4
-
name: rta-priority
type: u32
-
name: rta-prefsrc
type: binary
display-hint: ipv4
-
name: rta-metrics
type: nest
nested-attributes: rta-metrics
-
name: rta-multipath
type: binary
-
name: rta-protoinfo # not used
type: binary
-
name: rta-flow
type: u32
-
name: rta-cacheinfo
type: binary
struct: rta-cacheinfo
-
name: rta-session # not used
type: binary
-
name: rta-mp-algo # not used
type: binary
-
name: rta-table
type: u32
-
name: rta-mark
type: u32
-
name: rta-mfc-stats
type: binary
-
name: rta-via
type: binary
-
name: rta-newdst
type: binary
-
name: rta-pref
type: u8
-
name: rta-encap-type
type: u16
-
name: rta-encap
type: binary # tunnel specific nest
-
name: rta-expires
type: u32
-
name: rta-pad
type: binary
-
name: rta-uid
type: u32
-
name: rta-ttl-propagate
type: u8
-
name: rta-ip-proto
type: u8
-
name: rta-sport
type: u16
-
name: rta-dport
type: u16
-
name: rta-nh-id
type: u32
-
name: rta-metrics
attributes:
-
name: rtax-unspec
type: unused
value: 0
-
name: rtax-lock
type: u32
-
name: rtax-mtu
type: u32
-
name: rtax-window
type: u32
-
name: rtax-rtt
type: u32
-
name: rtax-rttvar
type: u32
-
name: rtax-ssthresh
type: u32
-
name: rtax-cwnd
type: u32
-
name: rtax-advmss
type: u32
-
name: rtax-reordering
type: u32
-
name: rtax-hoplimit
type: u32
-
name: rtax-initcwnd
type: u32
-
name: rtax-features
type: u32
-
name: rtax-rto-min
type: u32
-
name: rtax-initrwnd
type: u32
-
name: rtax-quickack
type: u32
-
name: rtax-cc-algo
type: string
-
name: rtax-fastopen-no-cookie
type: u32
operations:
enum-model: directional
list:
-
name: getroute
doc: Dump route information.
attribute-set: route-attrs
fixed-header: rtmsg
do:
request:
value: 26
attributes:
- rtm-family
- rta-src
- rtm-src-len
- rta-dst
- rtm-dst-len
- rta-iif
- rta-oif
- rta-ip-proto
- rta-sport
- rta-dport
- rta-mark
- rta-uid
reply:
value: 24
attributes: &all-route-attrs
- rtm-family
- rtm-dst-len
- rtm-src-len
- rtm-tos
- rtm-table
- rtm-protocol
- rtm-scope
- rtm-type
- rtm-flags
- rta-dst
- rta-src
- rta-iif
- rta-oif
- rta-gateway
- rta-priority
- rta-prefsrc
- rta-metrics
- rta-multipath
- rta-flow
- rta-cacheinfo
- rta-table
- rta-mark
- rta-mfc-stats
- rta-via
- rta-newdst
- rta-pref
- rta-encap-type
- rta-encap
- rta-expires
- rta-pad
- rta-uid
- rta-ttl-propagate
- rta-ip-proto
- rta-sport
- rta-dport
- rta-nh-id
dump:
request:
value: 26
attributes:
- rtm-family
reply:
value: 24
attributes: *all-route-attrs
-
name: newroute
doc: Create a new route
attribute-set: route-attrs
fixed-header: rtmsg
do:
request:
value: 24
attributes: *all-route-attrs
-
name: delroute
doc: Delete an existing route
attribute-set: route-attrs
fixed-header: rtmsg
do:
request:
value: 25
attributes: *all-route-attrs