Annotation of embedaddon/strongswan/src/libimcv/plugins/imv_scanner/imv_scanner_state.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2011-2013 Andreas Steffen
3: * HSR Hochschule fuer Technik Rapperswil
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 imv_scanner imv_scanner
18: * @ingroup libimcv_plugins
19: *
20: * @defgroup imv_scanner_state_t imv_scanner_state
21: * @{ @ingroup imv_scanner
22: */
23:
24: #ifndef IMV_SCANNER_STATE_H_
25: #define IMV_SCANNER_STATE_H_
26:
27: #include <imv/imv_state.h>
28: #include <ietf/ietf_attr_port_filter.h>
29:
30: #include <library.h>
31:
32: typedef struct imv_scanner_state_t imv_scanner_state_t;
33: typedef enum imv_scanner_handshake_state_t imv_scanner_handshake_state_t;
34:
35: /**
36: * IMV Scanner Handshake States (state machine)
37: */
38: enum imv_scanner_handshake_state_t {
39: IMV_SCANNER_STATE_INIT,
40: IMV_SCANNER_STATE_ATTR_REQ,
41: IMV_SCANNER_STATE_WORKITEMS,
42: IMV_SCANNER_STATE_END
43: };
44:
45: /**
46: * Internal state of an imv_scanner_t connection instance
47: */
48: struct imv_scanner_state_t {
49:
50: /**
51: * imv_state_t interface
52: */
53: imv_state_t interface;
54:
55: /**
56: * Set state of the handshake
57: *
58: * @param new_state the handshake state of IMV
59: */
60: void (*set_handshake_state)(imv_scanner_state_t *this,
61: imv_scanner_handshake_state_t new_state);
62:
63: /**
64: * Get state of the handshake
65: *
66: * @return the handshake state of IMV
67: */
68: imv_scanner_handshake_state_t (*get_handshake_state)(imv_scanner_state_t *this);
69:
70: /**
71: * Store an IETF Port Filter attribute for later evaluation
72: *
73: * @param attr IETF Port Filter attribute
74: */
75: void (*set_port_filter_attr)(imv_scanner_state_t *this,
76: ietf_attr_port_filter_t *attr);
77:
78: /**
79: * Get the stored IETF Port Filter attribute
80: *
81: * @return IETF Port Filter attribute
82: */
83: ietf_attr_port_filter_t* (*get_port_filter_attr)(imv_scanner_state_t *this);
84:
85: /**
86: * add a violating TCP or UDP port
87: */
88: void (*add_violating_port)(imv_scanner_state_t *this, char *port);
89: };
90:
91: /**
92: * Create an imv_scanner_state_t instance
93: *
94: * @param id connection ID
95: */
96: imv_state_t* imv_scanner_state_create(TNC_ConnectionID id);
97:
98: #endif /** IMV_SCANNER_STATE_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>