Annotation of embedaddon/strongswan/src/libtnccs/tnc/tnccs/tnccs.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2010-2015 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 tnccs tnccs
18: * @ingroup libtnccs
19: *
20: * @defgroup tnccst tnccs
21: * @{ @ingroup tnccs
22: */
23:
24: #ifndef TNCCS_H_
25: #define TNCCS_H_
26:
27: typedef struct tnccs_t tnccs_t;
28: typedef enum tnccs_type_t tnccs_type_t;
29: typedef enum tnc_ift_type_t tnc_ift_type_t;
30:
31: #include <tncif.h>
32: #include <tncifimc.h>
33: #include <tncifimv.h>
34:
35: #include <library.h>
36: #include <plugins/plugin.h>
37:
38: #include <tls.h>
39:
40: /**
41: * Callback function to communicate action recommendation and evaluation result
42: * generated by TNC server
43: *
44: * @param rec TNC Action Recommendation
45: * @param eval TNC Evaluation Result
46: * @return TRUE to terminate TNCCS connection, FALSE to keep it
47: */
48: typedef bool (*tnccs_cb_t)(TNC_IMV_Action_Recommendation rec,
49: TNC_IMV_Evaluation_Result eval);
50:
51: /**
52: * Type of TNC Client/Server protocol
53: */
54: enum tnccs_type_t {
55: TNCCS_UNKNOWN,
56: TNCCS_1_1,
57: TNCCS_SOH,
58: TNCCS_2_0,
59: TNCCS_DYNAMIC
60: };
61:
62: /**
63: * Type of TNC Transport protocol
64: */
65: enum tnc_ift_type_t {
66: TNC_IFT_UNKNOWN,
67: TNC_IFT_EAP_1_0,
68: TNC_IFT_EAP_1_1,
69: TNC_IFT_EAP_2_0,
70: TNC_IFT_TLS_1_0,
71: TNC_IFT_TLS_2_0
72: };
73:
74: /**
75: * enum names for tnccs_type_t.
76: */
77: extern enum_name_t *tnccs_type_names;
78:
79: /**
80: * TNCCS public interface
81: */
82: struct tnccs_t {
83:
84: /**
85: * Implements tls_t
86: */
87: tls_t tls;
88:
89: /**
90: * Get server IP address
91: *
92: * @return Server IP address
93: */
94: host_t* (*get_server_ip)(tnccs_t *this);
95:
96: /**
97: * Get peer IP address
98: *
99: * @return Peer IP address
100: */
101: host_t* (*get_peer_ip)(tnccs_t *this);
102:
103: /**
104: * Get underlying TNC IF-T transport protocol
105: *
106: * @return TNC IF-T transport protocol
107: */
108: tnc_ift_type_t (*get_transport)(tnccs_t *this);
109:
110: /**
111: * Set underlying TNC IF-T transport protocol
112: *
113: * @param transport TNC IF-T transport protocol
114: */
115: void (*set_transport)(tnccs_t *this, tnc_ift_type_t transport);
116:
117: /**
118: * Get type of TNC Client authentication
119: *
120: * @return TNC Client authentication type
121: */
122: uint32_t (*get_auth_type)(tnccs_t *this);
123:
124: /**
125: * Set type of TNC Client authentication
126: *
127: * @param auth_type TNC Client authentication type
128: */
129: void (*set_auth_type)(tnccs_t *this, uint32_t auth_type);
130:
131: /**
132: * Get PDP server name and port number
133: *
134: * @param port PDP port number
135: * @return PDP server name
136: */
137: chunk_t (*get_pdp_server)(tnccs_t *this, uint16_t *port);
138:
139: /**
140: * Get a new reference to the TNCCS object.
141: *
142: * @return this, with an increased refcount
143: */
144: tnccs_t* (*get_ref)(tnccs_t *this);
145:
146: };
147:
148: /**
149: * Constructor definition for a pluggable TNCCS protocol implementation.
150: *
151: * @param is_server TRUE if TNC Server, FALSE if TNC Client
152: * @param server_id Server identity
153: * @param peer_id Client identity
154: * @param server_ip Server IP address
155: * @param peer_ip Client IP address
156: * @param transport Underlying TNC IF-T transport protocol used
157: * @param cb Callback function if TNC Server, NULL if TNC Client
158: * @return implementation of the tnccs_t interface
159: */
160: typedef tnccs_t *(*tnccs_constructor_t)(bool is_server,
161: identification_t *server_id,
162: identification_t *peer_id,
163: host_t *server_ip,
164: host_t *peer_ip,
165: tnc_ift_type_t transport,
166: tnccs_cb_t cb);
167:
168: /**
169: * Callback function adding a message to a TNCCS batch
170: *
171: * @param imc_id ID of IMC or TNC_IMCID_ANY
172: * @param imc_id ID of IMV or TNC_IMVID_ANY
173: * @param msg_flags message flags
174: * @param msg message to be added
175: * @param msg_len message length
176: * @param msg_vid message vendor ID
177: * @param msg_subtype message subtype
178: * @return return code
179: */
180: typedef TNC_Result (*tnccs_send_message_t)(tnccs_t* tncss,
181: TNC_IMCID imc_id,
182: TNC_IMVID imv_id,
183: TNC_UInt32 msg_flags,
184: TNC_BufferReference msg,
185: TNC_UInt32 msg_len,
186: TNC_VendorID msg_vid,
187: TNC_MessageSubtype msg_subtype);
188:
189: #endif /** TNCCS_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>