2024-02-20 19:46:16

by Justin Iurman

[permalink] [raw]
Subject: [PATCH net-next 0/3] multicast event support for ioam6

Add generic netlink multicast event support to ioam6 as another solution
to share IOAM data with user space. The other one being via IPv6 raw
sockets combined with ancillary data. This patchset focuses on the IOAM
Pre-allocated Trace (the only Option-Type currently supported), and so
on IOAM "trace" events. See an example of a consumer here [1].

[1] https://github.com/Advanced-Observability/ioam-agent-python/blob/netlink_event/ioam-agent.py

Suggested-By: Paolo Abeni <[email protected]>

Justin Iurman (3):
uapi: ioam6: API for netlink multicast events
ioam6: multicast event
net: exthdrs: ioam6: send trace event

include/net/ioam6.h | 4 +++
include/uapi/linux/ioam6_genl.h | 20 +++++++++++
net/ipv6/exthdrs.c | 5 +++
net/ipv6/ioam6.c | 61 +++++++++++++++++++++++++++++++++
4 files changed, 90 insertions(+)


base-commit: a6e0cb150c514efba4aaba4069927de43d80bb59
--
2.34.1



2024-02-20 19:49:08

by Justin Iurman

[permalink] [raw]
Subject: [PATCH net-next 1/3] uapi: ioam6: API for netlink multicast events

Add new api to support ioam6 events for generic netlink multicast. A
first "trace" event is added to the list of ioam6 events, which will
represent an IOAM Trace. It provides another solution to share IOAM data
with user space (an alternative to IPv6 raw sockets combined with
ancillary data).

Signed-off-by: Justin Iurman <[email protected]>
---
include/uapi/linux/ioam6_genl.h | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

diff --git a/include/uapi/linux/ioam6_genl.h b/include/uapi/linux/ioam6_genl.h
index ca4b22833754..1733fbc51fb5 100644
--- a/include/uapi/linux/ioam6_genl.h
+++ b/include/uapi/linux/ioam6_genl.h
@@ -49,4 +49,24 @@ enum {

#define IOAM6_CMD_MAX (__IOAM6_CMD_MAX - 1)

+#define IOAM6_GENL_EV_GRP_NAME "ioam6_events"
+
+enum ioam6_event_type {
+ IOAM6_EVENT_UNSPEC,
+ IOAM6_EVENT_TRACE,
+};
+
+enum ioam6_event_attr {
+ IOAM6_EVENT_ATTR_UNSPEC,
+
+ IOAM6_EVENT_ATTR_TRACE_NAMESPACE, /* u16 */
+ IOAM6_EVENT_ATTR_TRACE_NODELEN, /* u8 */
+ IOAM6_EVENT_ATTR_TRACE_TYPE, /* u32 */
+ IOAM6_EVENT_ATTR_TRACE_DATA, /* Binary */
+
+ __IOAM6_EVENT_ATTR_MAX
+};
+
+#define IOAM6_EVENT_ATTR_MAX (__IOAM6_EVENT_ATTR_MAX - 1)
+
#endif /* _UAPI_LINUX_IOAM6_GENL_H */
--
2.34.1