162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci *  IPv6 IOAM Lightweight Tunnel API
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *  Author:
662306a36Sopenharmony_ci *  Justin Iurman <justin.iurman@uliege.be>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#ifndef _UAPI_LINUX_IOAM6_IPTUNNEL_H
1062306a36Sopenharmony_ci#define _UAPI_LINUX_IOAM6_IPTUNNEL_H
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci/* Encap modes:
1362306a36Sopenharmony_ci *  - inline: direct insertion
1462306a36Sopenharmony_ci *  - encap: ip6ip6 encapsulation
1562306a36Sopenharmony_ci *  - auto: inline for local packets, encap for in-transit packets
1662306a36Sopenharmony_ci */
1762306a36Sopenharmony_cienum {
1862306a36Sopenharmony_ci	__IOAM6_IPTUNNEL_MODE_MIN,
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	IOAM6_IPTUNNEL_MODE_INLINE,
2162306a36Sopenharmony_ci	IOAM6_IPTUNNEL_MODE_ENCAP,
2262306a36Sopenharmony_ci	IOAM6_IPTUNNEL_MODE_AUTO,
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	__IOAM6_IPTUNNEL_MODE_MAX,
2562306a36Sopenharmony_ci};
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci#define IOAM6_IPTUNNEL_MODE_MIN (__IOAM6_IPTUNNEL_MODE_MIN + 1)
2862306a36Sopenharmony_ci#define IOAM6_IPTUNNEL_MODE_MAX (__IOAM6_IPTUNNEL_MODE_MAX - 1)
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_cienum {
3162306a36Sopenharmony_ci	IOAM6_IPTUNNEL_UNSPEC,
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	/* Encap mode */
3462306a36Sopenharmony_ci	IOAM6_IPTUNNEL_MODE,		/* u8 */
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	/* Tunnel dst address.
3762306a36Sopenharmony_ci	 * For encap,auto modes.
3862306a36Sopenharmony_ci	 */
3962306a36Sopenharmony_ci	IOAM6_IPTUNNEL_DST,		/* struct in6_addr */
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci	/* IOAM Trace Header */
4262306a36Sopenharmony_ci	IOAM6_IPTUNNEL_TRACE,		/* struct ioam6_trace_hdr */
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	/* Insertion frequency:
4562306a36Sopenharmony_ci	 * "k over n" packets (0 < k <= n)
4662306a36Sopenharmony_ci	 * [0.0001% ... 100%]
4762306a36Sopenharmony_ci	 */
4862306a36Sopenharmony_ci#define IOAM6_IPTUNNEL_FREQ_MIN 1
4962306a36Sopenharmony_ci#define IOAM6_IPTUNNEL_FREQ_MAX 1000000
5062306a36Sopenharmony_ci	IOAM6_IPTUNNEL_FREQ_K,		/* u32 */
5162306a36Sopenharmony_ci	IOAM6_IPTUNNEL_FREQ_N,		/* u32 */
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci	__IOAM6_IPTUNNEL_MAX,
5462306a36Sopenharmony_ci};
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci#define IOAM6_IPTUNNEL_MAX (__IOAM6_IPTUNNEL_MAX - 1)
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci#endif /* _UAPI_LINUX_IOAM6_IPTUNNEL_H */
59