xref: /aosp_15_r20/external/libnl/include/linux-private/linux/seg6_local.h (revision 4dc78e53d49367fa8e61b07018507c90983a077d)
1*4dc78e53SAndroid Build Coastguard Worker /*
2*4dc78e53SAndroid Build Coastguard Worker  *  SR-IPv6 implementation
3*4dc78e53SAndroid Build Coastguard Worker  *
4*4dc78e53SAndroid Build Coastguard Worker  *  Author:
5*4dc78e53SAndroid Build Coastguard Worker  *  David Lebrun <[email protected]>
6*4dc78e53SAndroid Build Coastguard Worker  *
7*4dc78e53SAndroid Build Coastguard Worker  *
8*4dc78e53SAndroid Build Coastguard Worker  *  This program is free software; you can redistribute it and/or
9*4dc78e53SAndroid Build Coastguard Worker  *      modify it under the terms of the GNU General Public License
10*4dc78e53SAndroid Build Coastguard Worker  *      as published by the Free Software Foundation; either version
11*4dc78e53SAndroid Build Coastguard Worker  *      2 of the License, or (at your option) any later version.
12*4dc78e53SAndroid Build Coastguard Worker  */
13*4dc78e53SAndroid Build Coastguard Worker 
14*4dc78e53SAndroid Build Coastguard Worker #ifndef _LINUX_SEG6_LOCAL_H
15*4dc78e53SAndroid Build Coastguard Worker #define _LINUX_SEG6_LOCAL_H
16*4dc78e53SAndroid Build Coastguard Worker 
17*4dc78e53SAndroid Build Coastguard Worker #include <linux/seg6.h>
18*4dc78e53SAndroid Build Coastguard Worker 
19*4dc78e53SAndroid Build Coastguard Worker enum {
20*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_UNSPEC,
21*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION,
22*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_SRH,
23*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_TABLE,
24*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_NH4,
25*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_NH6,
26*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_IIF,
27*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_OIF,
28*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_BPF,
29*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_VRFTABLE,
30*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_COUNTERS,
31*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_FLAVORS,
32*4dc78e53SAndroid Build Coastguard Worker 	__SEG6_LOCAL_MAX,
33*4dc78e53SAndroid Build Coastguard Worker };
34*4dc78e53SAndroid Build Coastguard Worker #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
35*4dc78e53SAndroid Build Coastguard Worker 
36*4dc78e53SAndroid Build Coastguard Worker enum {
37*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_UNSPEC	= 0,
38*4dc78e53SAndroid Build Coastguard Worker 	/* node segment */
39*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END		= 1,
40*4dc78e53SAndroid Build Coastguard Worker 	/* adjacency segment (IPv6 cross-connect) */
41*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_X		= 2,
42*4dc78e53SAndroid Build Coastguard Worker 	/* lookup of next seg NH in table */
43*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_T		= 3,
44*4dc78e53SAndroid Build Coastguard Worker 	/* decap and L2 cross-connect */
45*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_DX2	= 4,
46*4dc78e53SAndroid Build Coastguard Worker 	/* decap and IPv6 cross-connect */
47*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_DX6	= 5,
48*4dc78e53SAndroid Build Coastguard Worker 	/* decap and IPv4 cross-connect */
49*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_DX4	= 6,
50*4dc78e53SAndroid Build Coastguard Worker 	/* decap and lookup of DA in v6 table */
51*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_DT6	= 7,
52*4dc78e53SAndroid Build Coastguard Worker 	/* decap and lookup of DA in v4 table */
53*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_DT4	= 8,
54*4dc78e53SAndroid Build Coastguard Worker 	/* binding segment with insertion */
55*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_B6	= 9,
56*4dc78e53SAndroid Build Coastguard Worker 	/* binding segment with encapsulation */
57*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_B6_ENCAP	= 10,
58*4dc78e53SAndroid Build Coastguard Worker 	/* binding segment with MPLS encap */
59*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_BM	= 11,
60*4dc78e53SAndroid Build Coastguard Worker 	/* lookup last seg in table */
61*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_S		= 12,
62*4dc78e53SAndroid Build Coastguard Worker 	/* forward to SR-unaware VNF with static proxy */
63*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_AS	= 13,
64*4dc78e53SAndroid Build Coastguard Worker 	/* forward to SR-unaware VNF with masquerading */
65*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_AM	= 14,
66*4dc78e53SAndroid Build Coastguard Worker 	/* custom BPF action */
67*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_BPF	= 15,
68*4dc78e53SAndroid Build Coastguard Worker 	/* decap and lookup of DA in v4 or v6 table */
69*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_ACTION_END_DT46	= 16,
70*4dc78e53SAndroid Build Coastguard Worker 
71*4dc78e53SAndroid Build Coastguard Worker 	__SEG6_LOCAL_ACTION_MAX,
72*4dc78e53SAndroid Build Coastguard Worker };
73*4dc78e53SAndroid Build Coastguard Worker 
74*4dc78e53SAndroid Build Coastguard Worker #define SEG6_LOCAL_ACTION_MAX (__SEG6_LOCAL_ACTION_MAX - 1)
75*4dc78e53SAndroid Build Coastguard Worker 
76*4dc78e53SAndroid Build Coastguard Worker enum {
77*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_BPF_PROG_UNSPEC,
78*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_BPF_PROG,
79*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_BPF_PROG_NAME,
80*4dc78e53SAndroid Build Coastguard Worker 	__SEG6_LOCAL_BPF_PROG_MAX,
81*4dc78e53SAndroid Build Coastguard Worker };
82*4dc78e53SAndroid Build Coastguard Worker 
83*4dc78e53SAndroid Build Coastguard Worker #define SEG6_LOCAL_BPF_PROG_MAX (__SEG6_LOCAL_BPF_PROG_MAX - 1)
84*4dc78e53SAndroid Build Coastguard Worker 
85*4dc78e53SAndroid Build Coastguard Worker /* SRv6 Behavior counters are encoded as netlink attributes guaranteeing the
86*4dc78e53SAndroid Build Coastguard Worker  * correct alignment.
87*4dc78e53SAndroid Build Coastguard Worker  * Each counter is identified by a different attribute type (i.e.
88*4dc78e53SAndroid Build Coastguard Worker  * SEG6_LOCAL_CNT_PACKETS).
89*4dc78e53SAndroid Build Coastguard Worker  *
90*4dc78e53SAndroid Build Coastguard Worker  * - SEG6_LOCAL_CNT_PACKETS: identifies a counter that counts the number of
91*4dc78e53SAndroid Build Coastguard Worker  *   packets that have been CORRECTLY processed by an SRv6 Behavior instance
92*4dc78e53SAndroid Build Coastguard Worker  *   (i.e., packets that generate errors or are dropped are NOT counted).
93*4dc78e53SAndroid Build Coastguard Worker  *
94*4dc78e53SAndroid Build Coastguard Worker  * - SEG6_LOCAL_CNT_BYTES: identifies a counter that counts the total amount
95*4dc78e53SAndroid Build Coastguard Worker  *   of traffic in bytes of all packets that have been CORRECTLY processed by
96*4dc78e53SAndroid Build Coastguard Worker  *   an SRv6 Behavior instance (i.e., packets that generate errors or are
97*4dc78e53SAndroid Build Coastguard Worker  *   dropped are NOT counted).
98*4dc78e53SAndroid Build Coastguard Worker  *
99*4dc78e53SAndroid Build Coastguard Worker  * - SEG6_LOCAL_CNT_ERRORS: identifies a counter that counts the number of
100*4dc78e53SAndroid Build Coastguard Worker  *   packets that have NOT been properly processed by an SRv6 Behavior instance
101*4dc78e53SAndroid Build Coastguard Worker  *   (i.e., packets that generate errors or are dropped).
102*4dc78e53SAndroid Build Coastguard Worker  */
103*4dc78e53SAndroid Build Coastguard Worker enum {
104*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_CNT_UNSPEC,
105*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_CNT_PAD,		/* pad for 64 bits values */
106*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_CNT_PACKETS,
107*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_CNT_BYTES,
108*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_CNT_ERRORS,
109*4dc78e53SAndroid Build Coastguard Worker 	__SEG6_LOCAL_CNT_MAX,
110*4dc78e53SAndroid Build Coastguard Worker };
111*4dc78e53SAndroid Build Coastguard Worker 
112*4dc78e53SAndroid Build Coastguard Worker #define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
113*4dc78e53SAndroid Build Coastguard Worker 
114*4dc78e53SAndroid Build Coastguard Worker /* SRv6 End* Flavor attributes */
115*4dc78e53SAndroid Build Coastguard Worker enum {
116*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_FLV_UNSPEC,
117*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_FLV_OPERATION,
118*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_FLV_LCBLOCK_BITS,
119*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_FLV_LCNODE_FN_BITS,
120*4dc78e53SAndroid Build Coastguard Worker 	__SEG6_LOCAL_FLV_MAX,
121*4dc78e53SAndroid Build Coastguard Worker };
122*4dc78e53SAndroid Build Coastguard Worker 
123*4dc78e53SAndroid Build Coastguard Worker #define SEG6_LOCAL_FLV_MAX (__SEG6_LOCAL_FLV_MAX - 1)
124*4dc78e53SAndroid Build Coastguard Worker 
125*4dc78e53SAndroid Build Coastguard Worker /* Designed flavor operations for SRv6 End* Behavior */
126*4dc78e53SAndroid Build Coastguard Worker enum {
127*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_FLV_OP_UNSPEC,
128*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_FLV_OP_PSP,
129*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_FLV_OP_USP,
130*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_FLV_OP_USD,
131*4dc78e53SAndroid Build Coastguard Worker 	SEG6_LOCAL_FLV_OP_NEXT_CSID,
132*4dc78e53SAndroid Build Coastguard Worker 	__SEG6_LOCAL_FLV_OP_MAX
133*4dc78e53SAndroid Build Coastguard Worker };
134*4dc78e53SAndroid Build Coastguard Worker 
135*4dc78e53SAndroid Build Coastguard Worker #define SEG6_LOCAL_FLV_OP_MAX (__SEG6_LOCAL_FLV_OP_MAX - 1)
136*4dc78e53SAndroid Build Coastguard Worker 
137*4dc78e53SAndroid Build Coastguard Worker #endif
138