15a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt/* 25a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt * IEEE Std 802.1X-2010 Controlled Port of PAE state machine - CP state machine 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_CP_H 105a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#define IEEE802_1X_CP_H 115a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 125a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#include "common/defs.h" 135a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#include "common/ieee802_1x_defs.h" 145a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 155a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtstruct ieee802_1x_cp_sm; 165a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtstruct ieee802_1x_kay; 175a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtstruct ieee802_1x_mka_ki; 185a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 195a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtstruct ieee802_1x_cp_conf { 205a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt Boolean protect; 215a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt Boolean replay_protect; 225a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt enum validate_frames validate; 235a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt u32 replay_window; 245a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt}; 255a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 265a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 275a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtstruct ieee802_1x_cp_sm * 285a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtieee802_1x_cp_sm_init(struct ieee802_1x_kay *kay, 295a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct ieee802_1x_cp_conf *pcp_conf); 305a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_sm_deinit(struct ieee802_1x_cp_sm *sm); 315a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_sm_step(void *cp_ctx); 325a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_connect_pending(void *cp_ctx); 335a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_connect_unauthenticated(void *cp_ctx); 345a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_connect_authenticated(void *cp_ctx); 355a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_connect_secure(void *cp_ctx); 365a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_signal_chgdserver(void *cp_ctx); 375a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_set_electedself(void *cp_ctx, Boolean status); 385a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_set_authorizationdata(void *cp_ctx, u8 *pdata, int len); 395a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_set_ciphersuite(void *cp_ctx, void *pid); 405a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_set_offset(void *cp_ctx, enum confidentiality_offset offset); 415a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_signal_newsak(void *cp_ctx); 425a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_set_distributedki(void *cp_ctx, 435a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt const struct ieee802_1x_mka_ki *dki); 445a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_set_distributedan(void *cp_ctx, u8 an); 455a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_set_usingreceivesas(void *cp_ctx, Boolean status); 465a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_set_allreceiving(void *cp_ctx, Boolean status); 475a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_set_servertransmitting(void *cp_ctx, Boolean status); 485a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidtvoid ieee802_1x_cp_set_usingtransmitas(void *cp_ctx, Boolean status); 495a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt 505a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#endif /* IEEE802_1X_CP_H */ 51