xref: /linux/include/uapi/linux/tcp_metrics.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*6f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2607ca46eSDavid Howells /* tcp_metrics.h - TCP Metrics Interface */
3607ca46eSDavid Howells 
4607ca46eSDavid Howells #ifndef _LINUX_TCP_METRICS_H
5607ca46eSDavid Howells #define _LINUX_TCP_METRICS_H
6607ca46eSDavid Howells 
7607ca46eSDavid Howells #include <linux/types.h>
8607ca46eSDavid Howells 
9607ca46eSDavid Howells /* NETLINK_GENERIC related info
10607ca46eSDavid Howells  */
11607ca46eSDavid Howells #define TCP_METRICS_GENL_NAME		"tcp_metrics"
12607ca46eSDavid Howells #define TCP_METRICS_GENL_VERSION	0x1
13607ca46eSDavid Howells 
14607ca46eSDavid Howells enum tcp_metric_index {
15740b0f18SEric Dumazet 	TCP_METRIC_RTT,		/* in ms units */
16740b0f18SEric Dumazet 	TCP_METRIC_RTTVAR,	/* in ms units */
17607ca46eSDavid Howells 	TCP_METRIC_SSTHRESH,
18607ca46eSDavid Howells 	TCP_METRIC_CWND,
19607ca46eSDavid Howells 	TCP_METRIC_REORDERING,
20607ca46eSDavid Howells 
21740b0f18SEric Dumazet 	TCP_METRIC_RTT_US,	/* in usec units */
22740b0f18SEric Dumazet 	TCP_METRIC_RTTVAR_US,	/* in usec units */
23740b0f18SEric Dumazet 
24607ca46eSDavid Howells 	/* Always last.  */
25607ca46eSDavid Howells 	__TCP_METRIC_MAX,
26607ca46eSDavid Howells };
27607ca46eSDavid Howells 
28607ca46eSDavid Howells #define TCP_METRIC_MAX	(__TCP_METRIC_MAX - 1)
29607ca46eSDavid Howells 
30607ca46eSDavid Howells enum {
31607ca46eSDavid Howells 	TCP_METRICS_ATTR_UNSPEC,
32607ca46eSDavid Howells 	TCP_METRICS_ATTR_ADDR_IPV4,		/* u32 */
33607ca46eSDavid Howells 	TCP_METRICS_ATTR_ADDR_IPV6,		/* binary */
34607ca46eSDavid Howells 	TCP_METRICS_ATTR_AGE,			/* msecs */
35607ca46eSDavid Howells 	TCP_METRICS_ATTR_TW_TSVAL,		/* u32, raw, rcv tsval */
36607ca46eSDavid Howells 	TCP_METRICS_ATTR_TW_TS_STAMP,		/* s32, sec age */
37607ca46eSDavid Howells 	TCP_METRICS_ATTR_VALS,			/* nested +1, u32 */
38607ca46eSDavid Howells 	TCP_METRICS_ATTR_FOPEN_MSS,		/* u16 */
39607ca46eSDavid Howells 	TCP_METRICS_ATTR_FOPEN_SYN_DROPS,	/* u16, count of drops */
40607ca46eSDavid Howells 	TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,	/* msecs age */
41607ca46eSDavid Howells 	TCP_METRICS_ATTR_FOPEN_COOKIE,		/* binary */
428a59359cSChristoph Paasch 	TCP_METRICS_ATTR_SADDR_IPV4,		/* u32 */
438a59359cSChristoph Paasch 	TCP_METRICS_ATTR_SADDR_IPV6,		/* binary */
442175d87cSNicolas Dichtel 	TCP_METRICS_ATTR_PAD,
45607ca46eSDavid Howells 
46607ca46eSDavid Howells 	__TCP_METRICS_ATTR_MAX,
47607ca46eSDavid Howells };
48607ca46eSDavid Howells 
49607ca46eSDavid Howells #define TCP_METRICS_ATTR_MAX	(__TCP_METRICS_ATTR_MAX - 1)
50607ca46eSDavid Howells 
51607ca46eSDavid Howells enum {
52607ca46eSDavid Howells 	TCP_METRICS_CMD_UNSPEC,
53607ca46eSDavid Howells 	TCP_METRICS_CMD_GET,
54607ca46eSDavid Howells 	TCP_METRICS_CMD_DEL,
55607ca46eSDavid Howells 
56607ca46eSDavid Howells 	__TCP_METRICS_CMD_MAX,
57607ca46eSDavid Howells };
58607ca46eSDavid Howells 
59607ca46eSDavid Howells #define TCP_METRICS_CMD_MAX	(__TCP_METRICS_CMD_MAX - 1)
60607ca46eSDavid Howells 
61607ca46eSDavid Howells #endif /* _LINUX_TCP_METRICS_H */
62