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