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 Shmidt 175a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_init_macsec(struct ieee802_1x_kay *kay); 185a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_deinit_macsec(struct ieee802_1x_kay *kay); 195a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 205a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt/****** CP -> SecY ******/ 215a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_validate_frames(struct ieee802_1x_kay *kay, 225a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt enum validate_frames vf); 235a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_protect_frames(struct ieee802_1x_kay *kay, Boolean flag); 24abb90a3fc1917e628167827cb14e742000605332Dmitry Shmidtint secy_cp_control_encrypt(struct ieee802_1x_kay *kay, Boolean enabled); 255a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_replay(struct ieee802_1x_kay *kay, Boolean flag, u32 win); 267d17530e229db79208e99741071df97ea4faeec6Dmitry Shmidtint secy_cp_control_current_cipher_suite(struct ieee802_1x_kay *kay, u64 cs); 275a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_confidentiality_offset(struct ieee802_1x_kay *kay, 285a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt enum confidentiality_offset co); 295a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_cp_control_enable_port(struct ieee802_1x_kay *kay, Boolean flag); 305a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 315a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt/****** KaY -> SecY *******/ 329839ecd75c832023d4d13fd2917a8c28261ff668Dmitry Shmidtint secy_get_capability(struct ieee802_1x_kay *kay, enum macsec_cap *cap); 335a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_get_receive_lowest_pn(struct ieee802_1x_kay *kay, 345a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct receive_sa *rxsa); 355a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_get_transmit_next_pn(struct ieee802_1x_kay *kay, 365a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sa *txsa); 375a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_set_transmit_next_pn(struct ieee802_1x_kay *kay, 385a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sa *txsa); 395a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_create_receive_sc(struct ieee802_1x_kay *kay, struct receive_sc *rxsc); 405a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_delete_receive_sc(struct ieee802_1x_kay *kay, struct receive_sc *rxsc); 415a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_create_receive_sa(struct ieee802_1x_kay *kay, struct receive_sa *rxsa); 429839ecd75c832023d4d13fd2917a8c28261ff668Dmitry Shmidtint secy_delete_receive_sa(struct ieee802_1x_kay *kay, struct receive_sa *rxsa); 435a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_enable_receive_sa(struct ieee802_1x_kay *kay, struct receive_sa *rxsa); 445a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_disable_receive_sa(struct ieee802_1x_kay *kay, 455a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct receive_sa *rxsa); 465a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 475a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_create_transmit_sc(struct ieee802_1x_kay *kay, 485a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sc *txsc); 495a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_delete_transmit_sc(struct ieee802_1x_kay *kay, 505a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sc *txsc); 515a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_create_transmit_sa(struct ieee802_1x_kay *kay, 525a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sa *txsa); 539839ecd75c832023d4d13fd2917a8c28261ff668Dmitry Shmidtint secy_delete_transmit_sa(struct ieee802_1x_kay *kay, 549839ecd75c832023d4d13fd2917a8c28261ff668Dmitry Shmidt struct transmit_sa *txsa); 555a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_enable_transmit_sa(struct ieee802_1x_kay *kay, 565a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sa *txsa); 575a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtint secy_disable_transmit_sa(struct ieee802_1x_kay *kay, 585a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct transmit_sa *txsa); 595a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 605a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#endif /* IEEE802_1X_SECY_OPS_H */ 61