1121934Sharti/*
2121934Sharti * TNC - Common defines
3121934Sharti * Copyright (c) 2007-2014, Jouni Malinen <j@w1.fi>
4121934Sharti *
5121934Sharti * This software may be distributed under the terms of the BSD license.
6121934Sharti * See README for more details.
7121934Sharti */
8121934Sharti
9121934Sharti#ifndef TNC_H
10121934Sharti#define TNC_H
11121934Sharti
12121934Shartitypedef unsigned long TNC_UInt32;
13121934Shartitypedef unsigned char *TNC_BufferReference;
14121934Sharti
15121934Shartitypedef TNC_UInt32 TNC_IMVID;
16121934Shartitypedef TNC_UInt32 TNC_IMCID;
17121934Shartitypedef TNC_UInt32 TNC_ConnectionID;
18121934Shartitypedef TNC_UInt32 TNC_ConnectionState;
19121934Shartitypedef TNC_UInt32 TNC_RetryReason;
20121934Shartitypedef TNC_UInt32 TNC_IMV_Action_Recommendation;
21121934Shartitypedef TNC_UInt32 TNC_IMV_Evaluation_Result;
22121934Shartitypedef TNC_UInt32 TNC_MessageType;
23121934Shartitypedef TNC_MessageType *TNC_MessageTypeList;
24121934Shartitypedef TNC_UInt32 TNC_VendorID;
25121934Shartitypedef TNC_UInt32 TNC_Subtype;
26121934Shartitypedef TNC_UInt32 TNC_MessageSubtype;
27121934Shartitypedef TNC_UInt32 TNC_Version;
28121934Shartitypedef TNC_UInt32 TNC_Result;
29131826Shartitypedef TNC_UInt32 TNC_AttributeID;
30121934Sharti
31121934Shartitypedef TNC_Result (*TNC_TNCS_BindFunctionPointer)(
32121934Sharti	TNC_IMVID imvID,
33121934Sharti	char *functionName,
34121934Sharti	void **pOutfunctionPointer);
35121934Shartitypedef TNC_Result (*TNC_TNCS_ReportMessageTypesPointer)(
36121934Sharti	TNC_IMVID imvID,
37121934Sharti	TNC_MessageTypeList supportedTypes,
38121934Sharti	TNC_UInt32 typeCount);
39121934Shartitypedef TNC_Result (*TNC_TNCS_SendMessagePointer)(
40121934Sharti	TNC_IMVID imvID,
41121934Sharti	TNC_ConnectionID connectionID,
42121934Sharti	TNC_BufferReference message,
43121934Sharti	TNC_UInt32 messageLength,
44121934Sharti	TNC_MessageType messageType);
45121934Shartitypedef TNC_Result (*TNC_TNCS_RequestHandshakeRetryPointer)(
46121934Sharti	TNC_IMVID imvID,
47121934Sharti	TNC_ConnectionID connectionID,
48121934Sharti	TNC_RetryReason reason);
49121934Shartitypedef TNC_Result (*TNC_TNCS_ProvideRecommendationPointer)(
50121934Sharti	TNC_IMVID imvID,
51121934Sharti	TNC_ConnectionID connectionID,
52121934Sharti	TNC_IMV_Action_Recommendation recommendation,
53121934Sharti	TNC_IMV_Evaluation_Result evaluation);
54121934Shartitypedef TNC_Result (*TNC_TNCC_BindFunctionPointer)(
55121934Sharti	TNC_IMCID imcID,
56121934Sharti	char *functionName,
57121934Sharti	void **pOutfunctionPointer);
58121934Shartitypedef TNC_Result (*TNC_TNCC_SendMessagePointer)(
59121934Sharti	TNC_IMCID imcID,
60121934Sharti	TNC_ConnectionID connectionID,
61121934Sharti	TNC_BufferReference message,
62121934Sharti	TNC_UInt32 messageLength,
63121934Sharti	TNC_MessageType messageType);
64121934Shartitypedef TNC_Result (*TNC_TNCC_ReportMessageTypesPointer)(
65121934Sharti	TNC_IMCID imcID,
66121934Sharti	TNC_MessageTypeList supportedTypes,
67121934Sharti	TNC_UInt32 typeCount);
68121934Shartitypedef TNC_Result (*TNC_TNCC_RequestHandshakeRetryPointer)(
69121934Sharti	TNC_IMCID imcID,
70121934Sharti	TNC_ConnectionID connectionID,
71121934Sharti	TNC_RetryReason reason);
72121934Sharti
73121934Sharti#define TNC_IFIMV_VERSION_1 1
74121934Sharti#define TNC_IFIMC_VERSION_1 1
75121934Sharti
76121934Sharti#define TNC_RESULT_SUCCESS 0
77121934Sharti#define TNC_RESULT_NOT_INITIALIZED 1
78121934Sharti#define TNC_RESULT_ALREADY_INITIALIZED 2
79121934Sharti#define TNC_RESULT_NO_COMMON_VERSION 3
80121934Sharti#define TNC_RESULT_CANT_RETRY 4
81121934Sharti#define TNC_RESULT_WONT_RETRY 5
82121934Sharti#define TNC_RESULT_INVALID_PARAMETER 6
83121934Sharti#define TNC_RESULT_CANT_RESPOND 7
84121934Sharti#define TNC_RESULT_ILLEGAL_OPERATION 8
85121934Sharti#define TNC_RESULT_OTHER 9
86121934Sharti#define TNC_RESULT_FATAL 10
87121934Sharti
88121934Sharti#define TNC_CONNECTION_STATE_CREATE 0
89121934Sharti#define TNC_CONNECTION_STATE_HANDSHAKE 1
90121934Sharti#define TNC_CONNECTION_STATE_ACCESS_ALLOWED 2
91121934Sharti#define TNC_CONNECTION_STATE_ACCESS_ISOLATED 3
92121934Sharti#define TNC_CONNECTION_STATE_ACCESS_NONE 4
93121934Sharti#define TNC_CONNECTION_STATE_DELETE 5
94121934Sharti
95121934Sharti#define TNC_VENDORID_ANY ((TNC_VendorID) 0xffffff)
96121934Sharti#define TNC_SUBTYPE_ANY ((TNC_Subtype) 0xff)
97121934Sharti
98121934Sharti/* TNCC-TNCS Message Types */
99121934Sharti#define TNC_TNCCS_RECOMMENDATION		0x00000001
100121934Sharti#define TNC_TNCCS_ERROR				0x00000002
101121934Sharti#define TNC_TNCCS_PREFERREDLANGUAGE		0x00000003
102121934Sharti#define TNC_TNCCS_REASONSTRINGS			0x00000004
103121934Sharti
104121934Sharti/* Possible TNC_IMV_Action_Recommendation values: */
105121934Shartienum IMV_Action_Recommendation {
106121934Sharti	TNC_IMV_ACTION_RECOMMENDATION_ALLOW,
107121934Sharti	TNC_IMV_ACTION_RECOMMENDATION_NO_ACCESS,
108121934Sharti	TNC_IMV_ACTION_RECOMMENDATION_ISOLATE,
109121934Sharti	TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION
110121934Sharti};
111121934Sharti
112121934Sharti/* Possible TNC_IMV_Evaluation_Result values: */
113121934Shartienum IMV_Evaluation_Result {
114121934Sharti	TNC_IMV_EVALUATION_RESULT_COMPLIANT,
115121934Sharti	TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR,
116121934Sharti	TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR,
117121934Sharti	TNC_IMV_EVALUATION_RESULT_ERROR,
118121934Sharti	TNC_IMV_EVALUATION_RESULT_DONT_KNOW
119121934Sharti};
120121934Sharti
121121934Sharti#endif /* TNC_H */
122121934Sharti