1e5b75505Sopenharmony_ci/*
2e5b75505Sopenharmony_ci * EAP-TNC - TNCS (IF-IMV, IF-TNCCS, and IF-TNCCS-SOH)
3e5b75505Sopenharmony_ci * Copyright (c) 2007-2008, Jouni Malinen <j@w1.fi>
4e5b75505Sopenharmony_ci *
5e5b75505Sopenharmony_ci * This software may be distributed under the terms of the BSD license.
6e5b75505Sopenharmony_ci * See README for more details.
7e5b75505Sopenharmony_ci */
8e5b75505Sopenharmony_ci
9e5b75505Sopenharmony_ci#ifndef TNCS_H
10e5b75505Sopenharmony_ci#define TNCS_H
11e5b75505Sopenharmony_ci
12e5b75505Sopenharmony_cistruct tncs_data;
13e5b75505Sopenharmony_ci
14e5b75505Sopenharmony_cistruct tncs_data * tncs_init(void);
15e5b75505Sopenharmony_civoid tncs_deinit(struct tncs_data *tncs);
16e5b75505Sopenharmony_civoid tncs_init_connection(struct tncs_data *tncs);
17e5b75505Sopenharmony_cisize_t tncs_total_send_len(struct tncs_data *tncs);
18e5b75505Sopenharmony_ciu8 * tncs_copy_send_buf(struct tncs_data *tncs, u8 *pos);
19e5b75505Sopenharmony_cichar * tncs_if_tnccs_start(struct tncs_data *tncs);
20e5b75505Sopenharmony_cichar * tncs_if_tnccs_end(void);
21e5b75505Sopenharmony_ci
22e5b75505Sopenharmony_cienum tncs_process_res {
23e5b75505Sopenharmony_ci	TNCCS_PROCESS_ERROR = -1,
24e5b75505Sopenharmony_ci	TNCCS_PROCESS_OK_NO_RECOMMENDATION = 0,
25e5b75505Sopenharmony_ci	TNCCS_RECOMMENDATION_ERROR,
26e5b75505Sopenharmony_ci	TNCCS_RECOMMENDATION_ALLOW,
27e5b75505Sopenharmony_ci	TNCCS_RECOMMENDATION_NONE,
28e5b75505Sopenharmony_ci	TNCCS_RECOMMENDATION_ISOLATE,
29e5b75505Sopenharmony_ci	TNCCS_RECOMMENDATION_NO_ACCESS,
30e5b75505Sopenharmony_ci	TNCCS_RECOMMENDATION_NO_RECOMMENDATION
31e5b75505Sopenharmony_ci};
32e5b75505Sopenharmony_ci
33e5b75505Sopenharmony_cienum tncs_process_res tncs_process_if_tnccs(struct tncs_data *tncs,
34e5b75505Sopenharmony_ci					    const u8 *msg, size_t len);
35e5b75505Sopenharmony_ci
36e5b75505Sopenharmony_ciint tncs_global_init(void);
37e5b75505Sopenharmony_civoid tncs_global_deinit(void);
38e5b75505Sopenharmony_ci
39e5b75505Sopenharmony_cistruct wpabuf * tncs_build_soh_request(void);
40e5b75505Sopenharmony_cistruct wpabuf * tncs_process_soh(const u8 *soh_tlv, size_t soh_tlv_len,
41e5b75505Sopenharmony_ci				 int *failure);
42e5b75505Sopenharmony_ci
43e5b75505Sopenharmony_ci#endif /* TNCS_H */
44