1: /*
2: * Copyright (C) 2012 Martin Willi
3: * Copyright (C) 2012 revosec AG
4: *
5: * This program is free software; you can redistribute it and/or modify it
6: * under the terms of the GNU General Public License as published by the
7: * Free Software Foundation; either version 2 of the License, or (at your
8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9: *
10: * This program is distributed in the hope that it will be useful, but
11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13: * for more details.
14: */
15:
16: /**
17: * @defgroup pt_tls_server pt_tls_server
18: * @{ @ingroup pt_tls
19: */
20:
21: #ifndef PT_TLS_SERVER_H_
22: #define PT_TLS_SERVER_H_
23:
24: #include <utils/identification.h>
25:
26: #include <tnc/tnccs/tnccs.h>
27:
28: #include "pt_tls.h"
29:
30: typedef struct pt_tls_server_t pt_tls_server_t;
31:
32: /**
33: * IF-T for TLS aka PT-TLS transport server.
34: */
35: struct pt_tls_server_t {
36:
37: /**
38: * Handle assessment data read from socket.
39: *
40: * @return
41: * - NEED_MORE if more exchanges required,
42: * - SUCCESS if assessment complete
43: * - FAILED if assessment failed
44: */
45: status_t (*handle)(pt_tls_server_t *this);
46:
47: /**
48: * Get the underlying client connection socket.
49: *
50: * @return socket fd, suitable to select()
51: */
52: int (*get_fd)(pt_tls_server_t *this);
53:
54: /**
55: * Destroy a pt_tls_server_t.
56: */
57: void (*destroy)(pt_tls_server_t *this);
58: };
59:
60: /**
61: * Create a pt_tls_server connection instance.
62: *
63: * @param server TLS server identity
64: * @param fd client connection socket
65: * @param auth client authentication requirements
66: * @param tnccs inner TNCCS protocol handler to use for this connection
67: * @return PT-TLS server
68: */
69: pt_tls_server_t *pt_tls_server_create(identification_t *server, int fd,
70: pt_tls_auth_t auth, tnccs_t *tnccs);
71:
72: #endif /** PT_TLS_SERVER_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>