pub mod macsec_cmd {
pub const GET_TXSC: u8 = 0;
pub const ADD_RXSC: u8 = 1;
pub const DEL_RXSC: u8 = 2;
pub const UPD_RXSC: u8 = 3;
pub const ADD_TXSA: u8 = 4;
pub const DEL_TXSA: u8 = 5;
pub const ADD_RXSA: u8 = 6;
pub const DEL_RXSA: u8 = 7;
pub const GET_RXSC: u8 = 8;
pub const GET_TXSA: u8 = 9;
pub const GET_RXSA: u8 = 10;
pub const UPD_TXSA: u8 = 11;
pub const UPD_RXSA: u8 = 12;
pub const UPD_OFFLOAD: u8 = 13;
}
pub mod macsec_attr {
pub const UNSPEC: u16 = 0;
pub const IFINDEX: u16 = 1;
pub const RXSC_CONFIG: u16 = 2;
pub const RXSC_STATS: u16 = 3;
pub const SA_CONFIG: u16 = 4;
pub const SA_STATS: u16 = 5;
pub const SECY_CONFIG: u16 = 6;
pub const SECY_STATS: u16 = 7;
pub const TXSC_STATS: u16 = 8;
pub const RXSC_LIST: u16 = 9;
pub const TXSA_LIST: u16 = 10;
pub const OFFLOAD: u16 = 11;
}
pub mod macsec_rxsc_attr {
pub const UNSPEC: u16 = 0;
pub const SCI: u16 = 1;
pub const ACTIVE: u16 = 2;
pub const SA_LIST: u16 = 3;
}
pub mod macsec_sa_attr {
pub const UNSPEC: u16 = 0;
pub const AN: u16 = 1;
pub const ACTIVE: u16 = 2;
pub const PN: u16 = 3;
pub const KEY: u16 = 4;
pub const KEYID: u16 = 5;
}
pub mod macsec_secy_attr {
pub const UNSPEC: u16 = 0;
pub const SCI: u16 = 1;
pub const ENCODING_SA: u16 = 2;
pub const WINDOW: u16 = 3;
pub const CIPHER_SUITE: u16 = 4;
pub const ICV_LEN: u16 = 5;
pub const ENCRYPT: u16 = 6;
pub const PROTECT: u16 = 7;
pub const REPLAY: u16 = 8;
pub const VALIDATE: u16 = 9;
pub const PAD: u16 = 10;
pub const INC_SCI: u16 = 11;
pub const ES: u16 = 12;
pub const SCB: u16 = 13;
}
pub mod macsec_secy_stats_attr {
pub const UNSPEC: u16 = 0;
pub const OUT_PKTS_UNTAGGED: u16 = 1;
pub const OUT_PKTS_TOO_LONG: u16 = 2;
pub const IN_PKTS_UNTAGGED: u16 = 3;
pub const IN_PKTS_NO_TAG: u16 = 4;
pub const IN_PKTS_BAD_TAG: u16 = 5;
pub const IN_PKTS_UNKNOWN_SCI: u16 = 6;
pub const IN_PKTS_NO_SCI: u16 = 7;
pub const IN_PKTS_OVERRUN: u16 = 8;
}
pub mod macsec_txsc_stats_attr {
pub const UNSPEC: u16 = 0;
pub const OUT_PKTS_PROTECTED: u16 = 1;
pub const OUT_PKTS_ENCRYPTED: u16 = 2;
pub const OUT_OCTETS_PROTECTED: u16 = 3;
pub const OUT_OCTETS_ENCRYPTED: u16 = 4;
}
pub mod macsec_rxsc_stats_attr {
pub const UNSPEC: u16 = 0;
pub const IN_PKTS_OK: u16 = 1;
pub const IN_PKTS_UNCHECKED: u16 = 2;
pub const IN_PKTS_DELAYED: u16 = 3;
pub const IN_PKTS_LATE: u16 = 4;
pub const IN_PKTS_INVALID: u16 = 5;
pub const IN_PKTS_NOT_VALID: u16 = 6;
pub const IN_OCTETS_VALIDATED: u16 = 7;
pub const IN_OCTETS_DECRYPTED: u16 = 8;
}
pub mod macsec_sa_stats_attr {
pub const UNSPEC: u16 = 0;
pub const OUT_PKTS_PROTECTED: u16 = 1;
pub const OUT_PKTS_ENCRYPTED: u16 = 2;
}
pub mod macsec_offload_attr {
pub const UNSPEC: u16 = 0;
pub const TYPE: u16 = 1;
}
pub mod macsec_offload {
pub const OFF: u8 = 0;
pub const PHY: u8 = 1;
pub const MAC: u8 = 2;
}
pub mod macsec_validate {
pub const DISABLED: u8 = 0;
pub const CHECK: u8 = 1;
pub const STRICT: u8 = 2;
}
pub mod macsec_cipher {
pub const GCM_AES_128: u64 = 0x0080_0200_0100_0001;
pub const GCM_AES_256: u64 = 0x0080_C200_0100_0001;
pub const GCM_AES_XPN_128: u64 = 0x0080_C200_0100_0002;
pub const GCM_AES_XPN_256: u64 = 0x0080_C200_0100_0003;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_cipher_values() {
assert_eq!(macsec_cipher::GCM_AES_128, 0x0080_0200_0100_0001);
assert_eq!(macsec_cipher::GCM_AES_256, 0x0080_C200_0100_0001);
}
#[test]
fn test_validate_values() {
assert_eq!(macsec_validate::DISABLED, 0);
assert_eq!(macsec_validate::CHECK, 1);
assert_eq!(macsec_validate::STRICT, 2);
}
}