xref: /linux-6.15/include/uapi/linux/psample.h (revision d8bed686)
16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
26ae0a628SYotam Gigi #ifndef __UAPI_PSAMPLE_H
36ae0a628SYotam Gigi #define __UAPI_PSAMPLE_H
46ae0a628SYotam Gigi 
56ae0a628SYotam Gigi enum {
66ae0a628SYotam Gigi 	/* sampled packet metadata */
76ae0a628SYotam Gigi 	PSAMPLE_ATTR_IIFINDEX,
86ae0a628SYotam Gigi 	PSAMPLE_ATTR_OIFINDEX,
96ae0a628SYotam Gigi 	PSAMPLE_ATTR_ORIGSIZE,
106ae0a628SYotam Gigi 	PSAMPLE_ATTR_SAMPLE_GROUP,
116ae0a628SYotam Gigi 	PSAMPLE_ATTR_GROUP_SEQ,
126ae0a628SYotam Gigi 	PSAMPLE_ATTR_SAMPLE_RATE,
136ae0a628SYotam Gigi 	PSAMPLE_ATTR_DATA,
14*d8bed686SChris Mi 	PSAMPLE_ATTR_TUNNEL,
156ae0a628SYotam Gigi 
166ae0a628SYotam Gigi 	/* commands attributes */
176ae0a628SYotam Gigi 	PSAMPLE_ATTR_GROUP_REFCOUNT,
186ae0a628SYotam Gigi 
196ae0a628SYotam Gigi 	__PSAMPLE_ATTR_MAX
206ae0a628SYotam Gigi };
216ae0a628SYotam Gigi 
226ae0a628SYotam Gigi enum psample_command {
236ae0a628SYotam Gigi 	PSAMPLE_CMD_SAMPLE,
246ae0a628SYotam Gigi 	PSAMPLE_CMD_GET_GROUP,
256ae0a628SYotam Gigi 	PSAMPLE_CMD_NEW_GROUP,
266ae0a628SYotam Gigi 	PSAMPLE_CMD_DEL_GROUP,
276ae0a628SYotam Gigi };
286ae0a628SYotam Gigi 
29*d8bed686SChris Mi enum psample_tunnel_key_attr {
30*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_ID,                 /* be64 Tunnel ID */
31*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_IPV4_SRC,           /* be32 src IP address. */
32*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_IPV4_DST,           /* be32 dst IP address. */
33*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_TOS,                /* u8 Tunnel IP ToS. */
34*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_TTL,                /* u8 Tunnel IP TTL. */
35*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_DONT_FRAGMENT,      /* No argument, set DF. */
36*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_CSUM,               /* No argument. CSUM packet. */
37*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_OAM,                /* No argument. OAM frame.  */
38*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_GENEVE_OPTS,        /* Array of Geneve options. */
39*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_TP_SRC,	            /* be16 src Transport Port. */
40*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_TP_DST,		    /* be16 dst Transport Port. */
41*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_VXLAN_OPTS,	    /* Nested VXLAN opts* */
42*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_IPV6_SRC,           /* struct in6_addr src IPv6 address. */
43*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_IPV6_DST,           /* struct in6_addr dst IPv6 address. */
44*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_PAD,
45*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_ERSPAN_OPTS,        /* struct erspan_metadata */
46*d8bed686SChris Mi 	PSAMPLE_TUNNEL_KEY_ATTR_IPV4_INFO_BRIDGE,   /* No argument. IPV4_INFO_BRIDGE mode.*/
47*d8bed686SChris Mi 	__PSAMPLE_TUNNEL_KEY_ATTR_MAX
48*d8bed686SChris Mi };
49*d8bed686SChris Mi 
506ae0a628SYotam Gigi /* Can be overridden at runtime by module option */
516ae0a628SYotam Gigi #define PSAMPLE_ATTR_MAX (__PSAMPLE_ATTR_MAX - 1)
526ae0a628SYotam Gigi 
536ae0a628SYotam Gigi #define PSAMPLE_NL_MCGRP_CONFIG_NAME "config"
546ae0a628SYotam Gigi #define PSAMPLE_NL_MCGRP_SAMPLE_NAME "packets"
556ae0a628SYotam Gigi #define PSAMPLE_GENL_NAME "psample"
566ae0a628SYotam Gigi #define PSAMPLE_GENL_VERSION 1
576ae0a628SYotam Gigi 
586ae0a628SYotam Gigi #endif
59