18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * EAP-TNC - TNCC (IF-IMC and IF-TNCCS)
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2007, 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 TNCC_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define TNCC_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct tncc_data;
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct tncc_data * tncc_init(void);
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid tncc_deinit(struct tncc_data *tncc);
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid tncc_init_connection(struct tncc_data *tncc);
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtsize_t tncc_total_send_len(struct tncc_data *tncc);
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtu8 * tncc_copy_send_buf(struct tncc_data *tncc, u8 *pos);
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * tncc_if_tnccs_start(struct tncc_data *tncc);
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * tncc_if_tnccs_end(void);
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum tncc_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};
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum tncc_process_res tncc_process_if_tnccs(struct tncc_data *tncc,
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt					    const u8 *msg, size_t len);
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpabuf * tncc_process_soh_request(int ver, const u8 *data, size_t len);
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* TNCC_H */
37