1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam/* 2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * EAP-TNC - TNCS (IF-IMV, IF-TNCCS, and IF-TNCCS-SOH) 34c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * Copyright (c) 2007-2008, Jouni Malinen <j@w1.fi> 44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * 54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * This software may be distributed under the terms of the BSD license. 6c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom * See README for more details. 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom */ 84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 9c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom#ifndef TNCS_H 104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom#define TNCS_H 11c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 12c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstromstruct tncs_data; 13c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 14c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstromstruct tncs_data * tncs_init(void); 15c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstromvoid tncs_deinit(struct tncs_data *tncs); 16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamvoid tncs_init_connection(struct tncs_data *tncs); 174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromsize_t tncs_total_send_len(struct tncs_data *tncs); 18e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromu8 * tncs_copy_send_buf(struct tncs_data *tncs, u8 *pos); 194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromchar * tncs_if_tnccs_start(struct tncs_data *tncs); 20c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstromchar * tncs_if_tnccs_end(void); 21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamenum tncs_process_res { 23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam TNCCS_PROCESS_ERROR = -1, 24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam TNCCS_PROCESS_OK_NO_RECOMMENDATION = 0, 25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam TNCCS_RECOMMENDATION_ERROR, 26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam TNCCS_RECOMMENDATION_ALLOW, 27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam TNCCS_RECOMMENDATION_NONE, 28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam TNCCS_RECOMMENDATION_ISOLATE, 29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam TNCCS_RECOMMENDATION_NO_ACCESS, 30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam TNCCS_RECOMMENDATION_NO_RECOMMENDATION 31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}; 32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamenum tncs_process_res tncs_process_if_tnccs(struct tncs_data *tncs, 34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam const u8 *msg, size_t len); 35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromint tncs_global_init(void); 37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamvoid tncs_global_deinit(void); 38b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamstruct wpabuf * tncs_build_soh_request(void); 404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromstruct wpabuf * tncs_process_soh(const u8 *soh_tlv, size_t soh_tlv_len, 41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam int *failure); 42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam#endif /* TNCS_H */ 44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam