18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * EAP-TNC - TNCS (IF-IMV, IF-TNCCS, and IF-TNCCS-SOH) 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2007-2008, Jouni Malinen <j@w1.fi> 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license. 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details. 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef TNCS_H 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define TNCS_H 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct tncs_data; 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct tncs_data * tncs_init(void); 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid tncs_deinit(struct tncs_data *tncs); 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid tncs_init_connection(struct tncs_data *tncs); 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtsize_t tncs_total_send_len(struct tncs_data *tncs); 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtu8 * tncs_copy_send_buf(struct tncs_data *tncs, u8 *pos); 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * tncs_if_tnccs_start(struct tncs_data *tncs); 208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * tncs_if_tnccs_end(void); 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum tncs_process_res { 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt TNCCS_PROCESS_ERROR = -1, 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt TNCCS_PROCESS_OK_NO_RECOMMENDATION = 0, 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt TNCCS_RECOMMENDATION_ERROR, 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt TNCCS_RECOMMENDATION_ALLOW, 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt TNCCS_RECOMMENDATION_NONE, 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt TNCCS_RECOMMENDATION_ISOLATE, 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt TNCCS_RECOMMENDATION_NO_ACCESS, 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt TNCCS_RECOMMENDATION_NO_RECOMMENDATION 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum tncs_process_res tncs_process_if_tnccs(struct tncs_data *tncs, 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *msg, size_t len); 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint tncs_global_init(void); 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid tncs_global_deinit(void); 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpabuf * tncs_build_soh_request(void); 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpabuf * tncs_process_soh(const u8 *soh_tlv, size_t soh_tlv_len, 418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int *failure); 428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* TNCS_H */ 44