1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2/*
3 *  IPv6 IOAM Generic Netlink API
4 *
5 *  Author:
6 *  Justin Iurman <justin.iurman@uliege.be>
7 */
8
9#ifndef _UAPI_LINUX_IOAM6_GENL_H
10#define _UAPI_LINUX_IOAM6_GENL_H
11
12#define IOAM6_GENL_NAME "IOAM6"
13#define IOAM6_GENL_VERSION 0x1
14
15enum {
16	IOAM6_ATTR_UNSPEC,
17
18	IOAM6_ATTR_NS_ID,	/* u16 */
19	IOAM6_ATTR_NS_DATA,	/* u32 */
20	IOAM6_ATTR_NS_DATA_WIDE,/* u64 */
21
22#define IOAM6_MAX_SCHEMA_DATA_LEN (255 * 4)
23	IOAM6_ATTR_SC_ID,	/* u32 */
24	IOAM6_ATTR_SC_DATA,	/* Binary */
25	IOAM6_ATTR_SC_NONE,	/* Flag */
26
27	IOAM6_ATTR_PAD,
28
29	__IOAM6_ATTR_MAX,
30};
31
32#define IOAM6_ATTR_MAX (__IOAM6_ATTR_MAX - 1)
33
34enum {
35	IOAM6_CMD_UNSPEC,
36
37	IOAM6_CMD_ADD_NAMESPACE,
38	IOAM6_CMD_DEL_NAMESPACE,
39	IOAM6_CMD_DUMP_NAMESPACES,
40
41	IOAM6_CMD_ADD_SCHEMA,
42	IOAM6_CMD_DEL_SCHEMA,
43	IOAM6_CMD_DUMP_SCHEMAS,
44
45	IOAM6_CMD_NS_SET_SCHEMA,
46
47	__IOAM6_CMD_MAX,
48};
49
50#define IOAM6_CMD_MAX (__IOAM6_CMD_MAX - 1)
51
52#define IOAM6_GENL_EV_GRP_NAME "ioam6_events"
53
54enum ioam6_event_type {
55	IOAM6_EVENT_UNSPEC,
56	IOAM6_EVENT_TRACE,
57};
58
59enum ioam6_event_attr {
60	IOAM6_EVENT_ATTR_UNSPEC,
61
62	IOAM6_EVENT_ATTR_TRACE_NAMESPACE,	/* u16 */
63	IOAM6_EVENT_ATTR_TRACE_NODELEN,		/* u8 */
64	IOAM6_EVENT_ATTR_TRACE_TYPE,		/* u32 */
65	IOAM6_EVENT_ATTR_TRACE_DATA,		/* Binary */
66
67	__IOAM6_EVENT_ATTR_MAX
68};
69
70#define IOAM6_EVENT_ATTR_MAX (__IOAM6_EVENT_ATTR_MAX - 1)
71
72#endif /* _UAPI_LINUX_IOAM6_GENL_H */
73