Skip to content

Commit dece8d2

Browse files
qsndavem330
authored andcommitted
uapi: add MACsec bits
Signed-off-by: Sabrina Dubroca <[email protected]> Reviewed-by: Hannes Frederic Sowa <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent f3c9869 commit dece8d2

File tree

4 files changed

+192
-0
lines changed

4 files changed

+192
-0
lines changed

include/uapi/linux/Kbuild

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ header-y += if_hippi.h
173173
header-y += if_infiniband.h
174174
header-y += if_link.h
175175
header-y += if_ltalk.h
176+
header-y += if_macsec.h
176177
header-y += if_packet.h
177178
header-y += if_phonet.h
178179
header-y += if_plip.h

include/uapi/linux/if_ether.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@
8383
#define ETH_P_8021AD 0x88A8 /* 802.1ad Service VLAN */
8484
#define ETH_P_802_EX1 0x88B5 /* 802.1 Local Experimental 1. */
8585
#define ETH_P_TIPC 0x88CA /* TIPC */
86+
#define ETH_P_MACSEC 0x88E5 /* 802.1ae MACsec */
8687
#define ETH_P_8021AH 0x88E7 /* 802.1ah Backbone Service Tag */
8788
#define ETH_P_MVRP 0x88F5 /* 802.1Q MVRP */
8889
#define ETH_P_1588 0x88F7 /* IEEE 1588 Timesync */

include/uapi/linux/if_link.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,35 @@ enum {
413413

414414
#define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
415415

416+
/* MACSEC section */
417+
enum {
418+
IFLA_MACSEC_UNSPEC,
419+
IFLA_MACSEC_SCI,
420+
IFLA_MACSEC_PORT,
421+
IFLA_MACSEC_ICV_LEN,
422+
IFLA_MACSEC_CIPHER_SUITE,
423+
IFLA_MACSEC_WINDOW,
424+
IFLA_MACSEC_ENCODING_SA,
425+
IFLA_MACSEC_ENCRYPT,
426+
IFLA_MACSEC_PROTECT,
427+
IFLA_MACSEC_INC_SCI,
428+
IFLA_MACSEC_ES,
429+
IFLA_MACSEC_SCB,
430+
IFLA_MACSEC_REPLAY_PROTECT,
431+
IFLA_MACSEC_VALIDATION,
432+
__IFLA_MACSEC_MAX,
433+
};
434+
435+
#define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
436+
437+
enum macsec_validation_type {
438+
MACSEC_VALIDATE_DISABLED = 0,
439+
MACSEC_VALIDATE_CHECK = 1,
440+
MACSEC_VALIDATE_STRICT = 2,
441+
__MACSEC_VALIDATE_END,
442+
MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
443+
};
444+
416445
/* IPVLAN section */
417446
enum {
418447
IFLA_IPVLAN_UNSPEC,

include/uapi/linux/if_macsec.h

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

0 commit comments

Comments
 (0)