root/include/uapi/linux/if_macsec.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */