Linux-libre 5.4.49-gnu
[librecmc/linux-libre.git] / tools / include / uapi / linux / seg6_local.h
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
19 enum {
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
33 enum {
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
71 enum {
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