# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) --- name: rt-route protocol: netlink-raw uapi-header: linux/rtnetlink.h protonum: 0 doc: >- Route configuration over rtnetlink. definitions: - name: rtm-type name-prefix: rtn- enum-name: 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 - name: del-reason type: enum name-prefix: rt-del-reason- enum-name: rt-del-reason doc: | Why the kernel deleted a route. New causes may be appended. The value space is family-agnostic, a value is never reinterpreted per address family. entries: - name: unspec doc: The deletion path does not record a cause. - name: expired doc: The RTF_EXPIRES lifetime ran out and the route was garbage collected. - name: ra-withdrawn doc: A Router Advertisement withdrew the route with a zero lifetime. attribute-sets: - name: route-attrs name-prefix: rta- attributes: - name: dst type: binary display-hint: ipv4-or-v6 - name: src type: binary display-hint: ipv4-or-v6 - name: iif type: u32 - name: oif type: u32 - name: gateway type: binary display-hint: ipv4-or-v6 - name: priority type: u32 - name: prefsrc type: binary display-hint: ipv4-or-v6 - name: metrics type: nest nested-attributes: metrics - name: multipath type: binary - name: protoinfo # not used type: binary - name: flow type: u32 - name: cacheinfo type: binary struct: rta-cacheinfo - name: session # not used type: binary - name: mp-algo # not used type: binary - name: table type: u32 - name: mark type: u32 - name: mfc-stats type: binary - name: via type: binary - name: newdst type: binary - name: pref type: u8 - name: encap-type type: u16 - name: encap type: binary # tunnel specific nest - name: expires type: u32 - name: pad type: binary - name: uid type: u32 - name: ttl-propagate type: u8 - name: ip-proto type: u8 - name: sport type: u16 - name: dport type: u16 - name: nh-id type: u32 - name: flowlabel type: u32 byte-order: big-endian display-hint: hex - name: del-reason type: u32 enum: del-reason doc: | Emitted only on RTM_DELROUTE notifications, and only when the deletion path records a cause. An absent attribute means either an older kernel or a deletion path that does not record its cause, consumers must treat absent and unspec identically. Currently only IPv6 deletion paths record a cause. The attribute is notification-only, the kernel rejects it in requests. - name: metrics name-prefix: rtax- attributes: - name: unspec type: unused value: 0 - name: lock type: u32 - name: mtu type: u32 - name: window type: u32 - name: rtt type: u32 - name: rttvar type: u32 - name: ssthresh type: u32 - name: cwnd type: u32 - name: advmss type: u32 - name: reordering type: u32 - name: hoplimit type: u32 - name: initcwnd type: u32 - name: features type: u32 - name: rto-min type: u32 - name: initrwnd type: u32 - name: quickack type: u32 - name: cc-algo type: string - name: fastopen-no-cookie type: u32 operations: enum-model: directional fixed-header: rtmsg name-prefix: rtm- list: - name: getroute doc: Dump route information. attribute-set: route-attrs do: request: value: 26 attributes: - src - dst - iif - oif - ip-proto - sport - dport - mark - uid - flowlabel reply: value: 24 attributes: &all-route-attrs - dst - src - iif - oif - gateway - priority - prefsrc - metrics - multipath - flow - cacheinfo - table - mark - mfc-stats - via - newdst - pref - encap-type - encap - expires - pad - uid - ttl-propagate - ip-proto - sport - dport - nh-id - flowlabel - del-reason dump: request: value: 26 attributes: [] reply: value: 24 attributes: *all-route-attrs - name: newroute doc: Create a new route attribute-set: route-attrs do: request: value: 24 attributes: &route-req-attrs - dst - src - iif - oif - gateway - priority - prefsrc - metrics - multipath - flow - cacheinfo - table - mark - mfc-stats - via - newdst - pref - encap-type - encap - expires - pad - uid - ttl-propagate - ip-proto - sport - dport - nh-id - flowlabel - name: delroute doc: Delete an existing route attribute-set: route-attrs do: request: value: 25 attributes: *route-req-attrs - name: newroute-ntf doc: Notification about a created route. value: 24 notify: getroute - name: delroute-ntf doc: Notification about a deleted route. value: 25 notify: getroute mcast-groups: list: - name: rtnlgrp-ipv4-route value: 7 - name: rtnlgrp-ipv6-route value: 11