xref: /linux/include/uapi/linux/if_macsec.h (revision dece8d2b78d19df7fe5e4e965f1f0d1a3e188d1b)
1*dece8d2bSSabrina Dubroca /*
2*dece8d2bSSabrina Dubroca  * include/uapi/linux/if_macsec.h - MACsec device
3*dece8d2bSSabrina Dubroca  *
4*dece8d2bSSabrina Dubroca  * Copyright (c) 2015 Sabrina Dubroca <sd@queasysnail.net>
5*dece8d2bSSabrina Dubroca  *
6*dece8d2bSSabrina Dubroca  * This program is free software; you can redistribute it and/or modify
7*dece8d2bSSabrina Dubroca  * it under the terms of the GNU General Public License as published by
8*dece8d2bSSabrina Dubroca  * the Free Software Foundation; either version 2 of the License, or
9*dece8d2bSSabrina Dubroca  * (at your option) any later version.
10*dece8d2bSSabrina Dubroca  */
11*dece8d2bSSabrina Dubroca 
12*dece8d2bSSabrina Dubroca #ifndef _UAPI_MACSEC_H
13*dece8d2bSSabrina Dubroca #define _UAPI_MACSEC_H
14*dece8d2bSSabrina Dubroca 
15*dece8d2bSSabrina Dubroca #include <linux/types.h>
16*dece8d2bSSabrina Dubroca 
17*dece8d2bSSabrina Dubroca #define MACSEC_GENL_NAME "macsec"
18*dece8d2bSSabrina Dubroca #define MACSEC_GENL_VERSION 1
19*dece8d2bSSabrina Dubroca 
20*dece8d2bSSabrina Dubroca #define MACSEC_MAX_KEY_LEN 128
21*dece8d2bSSabrina Dubroca 
22*dece8d2bSSabrina Dubroca #define DEFAULT_CIPHER_ID   0x0080020001000001ULL
23*dece8d2bSSabrina Dubroca #define DEFAULT_CIPHER_ALT  0x0080C20001000001ULL
24*dece8d2bSSabrina Dubroca 
25*dece8d2bSSabrina Dubroca #define MACSEC_MIN_ICV_LEN 8
26*dece8d2bSSabrina Dubroca #define MACSEC_MAX_ICV_LEN 32
27*dece8d2bSSabrina Dubroca 
28*dece8d2bSSabrina Dubroca enum macsec_attrs {
29*dece8d2bSSabrina Dubroca 	MACSEC_ATTR_UNSPEC,
30*dece8d2bSSabrina Dubroca 	MACSEC_ATTR_IFINDEX,     /* u32, ifindex of the MACsec netdevice */
31*dece8d2bSSabrina Dubroca 	MACSEC_ATTR_RXSC_CONFIG, /* config, nested macsec_rxsc_attrs */
32*dece8d2bSSabrina Dubroca 	MACSEC_ATTR_SA_CONFIG,   /* config, nested macsec_sa_attrs */
33*dece8d2bSSabrina Dubroca 	MACSEC_ATTR_SECY,        /* dump, nested macsec_secy_attrs */
34*dece8d2bSSabrina Dubroca 	MACSEC_ATTR_TXSA_LIST,   /* dump, nested, macsec_sa_attrs for each TXSA */
35*dece8d2bSSabrina Dubroca 	MACSEC_ATTR_RXSC_LIST,   /* dump, nested, macsec_rxsc_attrs for each RXSC */
36*dece8d2bSSabrina Dubroca 	MACSEC_ATTR_TXSC_STATS,  /* dump, nested, macsec_txsc_stats_attr */
37*dece8d2bSSabrina Dubroca 	MACSEC_ATTR_SECY_STATS,  /* dump, nested, macsec_secy_stats_attr */
38*dece8d2bSSabrina Dubroca 	__MACSEC_ATTR_END,
39*dece8d2bSSabrina Dubroca 	NUM_MACSEC_ATTR = __MACSEC_ATTR_END,
40*dece8d2bSSabrina Dubroca 	MACSEC_ATTR_MAX = __MACSEC_ATTR_END - 1,
41*dece8d2bSSabrina Dubroca };
42*dece8d2bSSabrina Dubroca 
43*dece8d2bSSabrina Dubroca enum macsec_secy_attrs {
44*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_UNSPEC,
45*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_SCI,
46*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_ENCODING_SA,
47*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_WINDOW,
48*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_CIPHER_SUITE,
49*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_ICV_LEN,
50*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_PROTECT,
51*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_REPLAY,
52*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_OPER,
53*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_VALIDATE,
54*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_ENCRYPT,
55*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_INC_SCI,
56*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_ES,
57*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_SCB,
58*dece8d2bSSabrina Dubroca 	__MACSEC_SECY_ATTR_END,
59*dece8d2bSSabrina Dubroca 	NUM_MACSEC_SECY_ATTR = __MACSEC_SECY_ATTR_END,
60*dece8d2bSSabrina Dubroca 	MACSEC_SECY_ATTR_MAX = __MACSEC_SECY_ATTR_END - 1,
61*dece8d2bSSabrina Dubroca };
62*dece8d2bSSabrina Dubroca 
63*dece8d2bSSabrina Dubroca enum macsec_rxsc_attrs {
64*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_ATTR_UNSPEC,
65*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_ATTR_SCI,     /* config/dump, u64 */
66*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_ATTR_ACTIVE,  /* config/dump, u8 0..1 */
67*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_ATTR_SA_LIST, /* dump, nested */
68*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_ATTR_STATS,   /* dump, nested, macsec_rxsc_stats_attr */
69*dece8d2bSSabrina Dubroca 	__MACSEC_RXSC_ATTR_END,
70*dece8d2bSSabrina Dubroca 	NUM_MACSEC_RXSC_ATTR = __MACSEC_RXSC_ATTR_END,
71*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_ATTR_MAX = __MACSEC_RXSC_ATTR_END - 1,
72*dece8d2bSSabrina Dubroca };
73*dece8d2bSSabrina Dubroca 
74*dece8d2bSSabrina Dubroca enum macsec_sa_attrs {
75*dece8d2bSSabrina Dubroca 	MACSEC_SA_ATTR_UNSPEC,
76*dece8d2bSSabrina Dubroca 	MACSEC_SA_ATTR_AN,     /* config/dump, u8 0..3 */
77*dece8d2bSSabrina Dubroca 	MACSEC_SA_ATTR_ACTIVE, /* config/dump, u8 0..1 */
78*dece8d2bSSabrina Dubroca 	MACSEC_SA_ATTR_PN,     /* config/dump, u32 */
79*dece8d2bSSabrina Dubroca 	MACSEC_SA_ATTR_KEY,    /* config, data */
80*dece8d2bSSabrina Dubroca 	MACSEC_SA_ATTR_KEYID,  /* config/dump, u64 */
81*dece8d2bSSabrina Dubroca 	MACSEC_SA_ATTR_STATS,  /* dump, nested, macsec_sa_stats_attr */
82*dece8d2bSSabrina Dubroca 	__MACSEC_SA_ATTR_END,
83*dece8d2bSSabrina Dubroca 	NUM_MACSEC_SA_ATTR = __MACSEC_SA_ATTR_END,
84*dece8d2bSSabrina Dubroca 	MACSEC_SA_ATTR_MAX = __MACSEC_SA_ATTR_END - 1,
85*dece8d2bSSabrina Dubroca };
86*dece8d2bSSabrina Dubroca 
87*dece8d2bSSabrina Dubroca enum macsec_nl_commands {
88*dece8d2bSSabrina Dubroca 	MACSEC_CMD_GET_TXSC,
89*dece8d2bSSabrina Dubroca 	MACSEC_CMD_ADD_RXSC,
90*dece8d2bSSabrina Dubroca 	MACSEC_CMD_DEL_RXSC,
91*dece8d2bSSabrina Dubroca 	MACSEC_CMD_UPD_RXSC,
92*dece8d2bSSabrina Dubroca 	MACSEC_CMD_ADD_TXSA,
93*dece8d2bSSabrina Dubroca 	MACSEC_CMD_DEL_TXSA,
94*dece8d2bSSabrina Dubroca 	MACSEC_CMD_UPD_TXSA,
95*dece8d2bSSabrina Dubroca 	MACSEC_CMD_ADD_RXSA,
96*dece8d2bSSabrina Dubroca 	MACSEC_CMD_DEL_RXSA,
97*dece8d2bSSabrina Dubroca 	MACSEC_CMD_UPD_RXSA,
98*dece8d2bSSabrina Dubroca };
99*dece8d2bSSabrina Dubroca 
100*dece8d2bSSabrina Dubroca /* u64 per-RXSC stats */
101*dece8d2bSSabrina Dubroca enum macsec_rxsc_stats_attr {
102*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_UNSPEC,
103*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_IN_OCTETS_VALIDATED,
104*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_IN_OCTETS_DECRYPTED,
105*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNCHECKED,
106*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_IN_PKTS_DELAYED,
107*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_IN_PKTS_OK,
108*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_IN_PKTS_INVALID,
109*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_IN_PKTS_LATE,
110*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_VALID,
111*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_USING_SA,
112*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNUSED_SA,
113*dece8d2bSSabrina Dubroca 	__MACSEC_RXSC_STATS_ATTR_END,
114*dece8d2bSSabrina Dubroca 	NUM_MACSEC_RXSC_STATS_ATTR = __MACSEC_RXSC_STATS_ATTR_END,
115*dece8d2bSSabrina Dubroca 	MACSEC_RXSC_STATS_ATTR_MAX = __MACSEC_RXSC_STATS_ATTR_END - 1,
116*dece8d2bSSabrina Dubroca };
117*dece8d2bSSabrina Dubroca 
118*dece8d2bSSabrina Dubroca /* u32 per-{RX,TX}SA stats */
119*dece8d2bSSabrina Dubroca enum macsec_sa_stats_attr {
120*dece8d2bSSabrina Dubroca 	MACSEC_SA_STATS_ATTR_UNSPEC,
121*dece8d2bSSabrina Dubroca 	MACSEC_SA_STATS_ATTR_IN_PKTS_OK,
122*dece8d2bSSabrina Dubroca 	MACSEC_SA_STATS_ATTR_IN_PKTS_INVALID,
123*dece8d2bSSabrina Dubroca 	MACSEC_SA_STATS_ATTR_IN_PKTS_NOT_VALID,
124*dece8d2bSSabrina Dubroca 	MACSEC_SA_STATS_ATTR_IN_PKTS_NOT_USING_SA,
125*dece8d2bSSabrina Dubroca 	MACSEC_SA_STATS_ATTR_IN_PKTS_UNUSED_SA,
126*dece8d2bSSabrina Dubroca 	MACSEC_SA_STATS_ATTR_OUT_PKTS_PROTECTED,
127*dece8d2bSSabrina Dubroca 	MACSEC_SA_STATS_ATTR_OUT_PKTS_ENCRYPTED,
128*dece8d2bSSabrina Dubroca 	__MACSEC_SA_STATS_ATTR_END,
129*dece8d2bSSabrina Dubroca 	NUM_MACSEC_SA_STATS_ATTR = __MACSEC_SA_STATS_ATTR_END,
130*dece8d2bSSabrina Dubroca 	MACSEC_SA_STATS_ATTR_MAX = __MACSEC_SA_STATS_ATTR_END - 1,
131*dece8d2bSSabrina Dubroca };
132*dece8d2bSSabrina Dubroca 
133*dece8d2bSSabrina Dubroca /* u64 per-TXSC stats */
134*dece8d2bSSabrina Dubroca enum macsec_txsc_stats_attr {
135*dece8d2bSSabrina Dubroca 	MACSEC_TXSC_STATS_ATTR_UNSPEC,
136*dece8d2bSSabrina Dubroca 	MACSEC_TXSC_STATS_ATTR_OUT_PKTS_PROTECTED,
137*dece8d2bSSabrina Dubroca 	MACSEC_TXSC_STATS_ATTR_OUT_PKTS_ENCRYPTED,
138*dece8d2bSSabrina Dubroca 	MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_PROTECTED,
139*dece8d2bSSabrina Dubroca 	MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_ENCRYPTED,
140*dece8d2bSSabrina Dubroca 	__MACSEC_TXSC_STATS_ATTR_END,
141*dece8d2bSSabrina Dubroca 	NUM_MACSEC_TXSC_STATS_ATTR = __MACSEC_TXSC_STATS_ATTR_END,
142*dece8d2bSSabrina Dubroca 	MACSEC_TXSC_STATS_ATTR_MAX = __MACSEC_TXSC_STATS_ATTR_END - 1,
143*dece8d2bSSabrina Dubroca };
144*dece8d2bSSabrina Dubroca 
145*dece8d2bSSabrina Dubroca /* u64 per-SecY stats */
146*dece8d2bSSabrina Dubroca enum macsec_secy_stats_attr {
147*dece8d2bSSabrina Dubroca 	MACSEC_SECY_STATS_ATTR_UNSPEC,
148*dece8d2bSSabrina Dubroca 	MACSEC_SECY_STATS_ATTR_OUT_PKTS_UNTAGGED,
149*dece8d2bSSabrina Dubroca 	MACSEC_SECY_STATS_ATTR_IN_PKTS_UNTAGGED,
150*dece8d2bSSabrina Dubroca 	MACSEC_SECY_STATS_ATTR_OUT_PKTS_TOO_LONG,
151*dece8d2bSSabrina Dubroca 	MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_TAG,
152*dece8d2bSSabrina Dubroca 	MACSEC_SECY_STATS_ATTR_IN_PKTS_BAD_TAG,
153*dece8d2bSSabrina Dubroca 	MACSEC_SECY_STATS_ATTR_IN_PKTS_UNKNOWN_SCI,
154*dece8d2bSSabrina Dubroca 	MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_SCI,
155*dece8d2bSSabrina Dubroca 	MACSEC_SECY_STATS_ATTR_IN_PKTS_OVERRUN,
156*dece8d2bSSabrina Dubroca 	__MACSEC_SECY_STATS_ATTR_END,
157*dece8d2bSSabrina Dubroca 	NUM_MACSEC_SECY_STATS_ATTR = __MACSEC_SECY_STATS_ATTR_END,
158*dece8d2bSSabrina Dubroca 	MACSEC_SECY_STATS_ATTR_MAX = __MACSEC_SECY_STATS_ATTR_END - 1,
159*dece8d2bSSabrina Dubroca };
160*dece8d2bSSabrina Dubroca 
161*dece8d2bSSabrina Dubroca #endif /* _UAPI_MACSEC_H */
162