| @@ -0,0 +1,161 @@ |
| | 1 | /* |
| | 2 | * include/uapi/linux/if_macsec.h - MACsec device |
| | 3 | * |
| | 4 | * Copyright (c) 2015 Sabrina Dubroca <sd@queasysnail.net> |
| | 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 */ |