15a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt /* 25a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt * SecY Operations 35a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt * Copyright (c) 2013, Qualcomm Atheros, Inc. 45a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt * 55a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt * This software may be distributed under the terms of the BSD license. 65a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt * See README for more details. 75a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt */ 85a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 95a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#ifndef IEEE802_1X_SECY_OPS_H 105a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#define IEEE802_1X_SECY_OPS_H 115a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 125a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#include "common/defs.h" 135a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#include "common/ieee802_1x_defs.h" 145a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 155a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtstruct ieee802_1x_kay_conf; 165a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtstruct receive_sa; 175a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtstruct transmit_sa; 185a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtstruct receive_sc; 195a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtstruct transmit_sc; 205a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 215a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_init_macsec(struct ieee802_1x_kay *kay); 225a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_deinit_macsec(struct ieee802_1x_kay *kay); 235a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 245a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt/****** CP -> SecY ******/ 255a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_validate_frames(struct ieee802_1x_kay *kay, 265a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt enum validate_frames vf); 275a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_protect_frames(struct ieee802_1x_kay *kay, Boolean flag); 285a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_replay(struct ieee802_1x_kay *kay, Boolean flag, u32 win); 295a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_current_cipher_suite(struct ieee802_1x_kay *kay, 305a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt const u8 *cs, size_t cs_len); 315a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_confidentiality_offset(struct ieee802_1x_kay *kay, 325a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt enum confidentiality_offset co); 335a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_enable_port(struct ieee802_1x_kay *kay, Boolean flag); 345a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 355a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt/****** KaY -> SecY *******/ 365a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_get_receive_lowest_pn(struct ieee802_1x_kay *kay, 375a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct receive_sa *rxsa); 385a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_get_transmit_next_pn(struct ieee802_1x_kay *kay, 395a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sa *txsa); 405a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_set_transmit_next_pn(struct ieee802_1x_kay *kay, 415a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sa *txsa); 425a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_get_available_receive_sc(struct ieee802_1x_kay *kay, u32 *channel); 435a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_create_receive_sc(struct ieee802_1x_kay *kay, struct receive_sc *rxsc); 445a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_delete_receive_sc(struct ieee802_1x_kay *kay, struct receive_sc *rxsc); 455a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_create_receive_sa(struct ieee802_1x_kay *kay, struct receive_sa *rxsa); 465a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_enable_receive_sa(struct ieee802_1x_kay *kay, struct receive_sa *rxsa); 475a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_disable_receive_sa(struct ieee802_1x_kay *kay, 485a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct receive_sa *rxsa); 495a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 505a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_get_available_transmit_sc(struct ieee802_1x_kay *kay, u32 *channel); 515a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_create_transmit_sc(struct ieee802_1x_kay *kay, 525a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sc *txsc); 535a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_delete_transmit_sc(struct ieee802_1x_kay *kay, 545a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sc *txsc); 555a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_create_transmit_sa(struct ieee802_1x_kay *kay, 565a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sa *txsa); 575a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_enable_transmit_sa(struct ieee802_1x_kay *kay, 585a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sa *txsa); 595a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_disable_transmit_sa(struct ieee802_1x_kay *kay, 605a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sa *txsa); 615a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 625a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#endif /* IEEE802_1X_SECY_OPS_H */ 63