# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) name: tcp_metrics protocol: genetlink-legacy doc: | Management interface for TCP metrics. c-family-name: tcp-metrics-genl-name c-version-name: tcp-metrics-genl-version max-by-define: true kernel-policy: global definitions: - name: tcp-fastopen-cookie-max type: const value: 16 attribute-sets: - name: tcp-metrics name-prefix: tcp-metrics-attr- attributes: - name: addr-ipv4 type: u32 byte-order: big-endian display-hint: ipv4 - name: addr-ipv6 type: binary checks: min-len: 16 byte-order: big-endian display-hint: ipv6 - name: age type: u64 - name: tw-tsval type: u32 doc: unused - name: tw-ts-stamp type: s32 doc: unused - name: vals type: nest nested-attributes: metrics - name: fopen-mss type: u16 - name: fopen-syn-drops type: u16 - name: fopen-syn-drop-ts type: u64 - name: fopen-cookie type: binary checks: min-len: tcp-fastopen-cookie-max - name: saddr-ipv4 type: u32 byte-order: big-endian display-hint: ipv4 - name: saddr-ipv6 type: binary checks: min-len: 16 byte-order: big-endian display-hint: ipv6 - name: pad type: pad - name: metrics # Intentionally don't define the name-prefix, see below. doc: | Attributes with metrics. Note that the values here do not match the TCP_METRIC_* defines in the kernel, because kernel defines are off-by one (e.g. rtt is defined as enum 0, while netlink carries attribute type 1). attributes: - name: rtt type: u32 doc: | Round Trip Time (RTT), in msecs with 3 bits fractional (left-shift by 3 to get the msec value). - name: rttvar type: u32 doc: | Round Trip Time VARiance (RTT), in msecs with 2 bits fractional (left-shift by 2 to get the msec value). - name: ssthresh type: u32 doc: Slow Start THRESHold. - name: cwnd type: u32 doc: Congestion Window. - name: reodering type: u32 doc: Reodering metric. - name: rtt-us type: u32 doc: | Round Trip Time (RTT), in usecs, with 3 bits fractional (left-shift by 3 to get the msec value). - name: rttvar-us type: u32 doc: | Round Trip Time (RTT), in usecs, with 2 bits fractional (left-shift by 3 to get the msec value). operations: list: - name: get doc: Retrieve metrics. attribute-set: tcp-metrics dont-validate: [ strict, dump ] do: request: &sel_attrs attributes: - addr-ipv4 - addr-ipv6 - saddr-ipv4 - saddr-ipv6 reply: &all_attrs attributes: - addr-ipv4 - addr-ipv6 - saddr-ipv4 - saddr-ipv6 - age - vals - fopen-mss - fopen-syn-drops - fopen-syn-drop-ts - fopen-cookie dump: reply: *all_attrs - name: del doc: Delete metrics. attribute-set: tcp-metrics dont-validate: [ strict, dump ] flags: [ admin-perm ] do: request: *sel_attrs