1/*
2 *  SR-IPv6 implementation
3 *
4 *  Author:
5 *  David Lebrun <david.lebrun@uclouvain.be>
6 *
7 *
8 *  This program is free software; you can redistribute it and/or
9 *      modify it under the terms of the GNU General Public License
10 *      as published by the Free Software Foundation; either version
11 *      2 of the License, or (at your option) any later version.
12 */
13
14#ifndef _UAPI_LINUX_SEG6_LOCAL_H
15#define _UAPI_LINUX_SEG6_LOCAL_H
16
17#include <linux/seg6.h>
18
19enum {
20	SEG6_LOCAL_UNSPEC,
21	SEG6_LOCAL_ACTION,
22	SEG6_LOCAL_SRH,
23	SEG6_LOCAL_TABLE,
24	SEG6_LOCAL_NH4,
25	SEG6_LOCAL_NH6,
26	SEG6_LOCAL_IIF,
27	SEG6_LOCAL_OIF,
28	SEG6_LOCAL_BPF,
29	__SEG6_LOCAL_MAX,
30};
31#define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
32
33enum {
34	SEG6_LOCAL_ACTION_UNSPEC	= 0,
35	/* node segment */
36	SEG6_LOCAL_ACTION_END		= 1,
37	/* adjacency segment (IPv6 cross-connect) */
38	SEG6_LOCAL_ACTION_END_X		= 2,
39	/* lookup of next seg NH in table */
40	SEG6_LOCAL_ACTION_END_T		= 3,
41	/* decap and L2 cross-connect */
42	SEG6_LOCAL_ACTION_END_DX2	= 4,
43	/* decap and IPv6 cross-connect */
44	SEG6_LOCAL_ACTION_END_DX6	= 5,
45	/* decap and IPv4 cross-connect */
46	SEG6_LOCAL_ACTION_END_DX4	= 6,
47	/* decap and lookup of DA in v6 table */
48	SEG6_LOCAL_ACTION_END_DT6	= 7,
49	/* decap and lookup of DA in v4 table */
50	SEG6_LOCAL_ACTION_END_DT4	= 8,
51	/* binding segment with insertion */
52	SEG6_LOCAL_ACTION_END_B6	= 9,
53	/* binding segment with encapsulation */
54	SEG6_LOCAL_ACTION_END_B6_ENCAP	= 10,
55	/* binding segment with MPLS encap */
56	SEG6_LOCAL_ACTION_END_BM	= 11,
57	/* lookup last seg in table */
58	SEG6_LOCAL_ACTION_END_S		= 12,
59	/* forward to SR-unaware VNF with static proxy */
60	SEG6_LOCAL_ACTION_END_AS	= 13,
61	/* forward to SR-unaware VNF with masquerading */
62	SEG6_LOCAL_ACTION_END_AM	= 14,
63	/* custom BPF action */
64	SEG6_LOCAL_ACTION_END_BPF	= 15,
65
66	__SEG6_LOCAL_ACTION_MAX,
67};
68
69#define SEG6_LOCAL_ACTION_MAX (__SEG6_LOCAL_ACTION_MAX - 1)
70
71enum {
72	SEG6_LOCAL_BPF_PROG_UNSPEC,
73	SEG6_LOCAL_BPF_PROG,
74	SEG6_LOCAL_BPF_PROG_NAME,
75	__SEG6_LOCAL_BPF_PROG_MAX,
76};
77
78#define SEG6_LOCAL_BPF_PROG_MAX (__SEG6_LOCAL_BPF_PROG_MAX - 1)
79
80#endif
81