xref: /freebsd/contrib/wpa/src/common/tnc.h (revision 416ba5c74546f32a993436a99516d35008e9f384)
1*5b9c547cSRui Paulo /*
2*5b9c547cSRui Paulo  * TNC - Common defines
3*5b9c547cSRui Paulo  * Copyright (c) 2007-2014, Jouni Malinen <j@w1.fi>
4*5b9c547cSRui Paulo  *
5*5b9c547cSRui Paulo  * This software may be distributed under the terms of the BSD license.
6*5b9c547cSRui Paulo  * See README for more details.
7*5b9c547cSRui Paulo  */
8*5b9c547cSRui Paulo 
9*5b9c547cSRui Paulo #ifndef TNC_H
10*5b9c547cSRui Paulo #define TNC_H
11*5b9c547cSRui Paulo 
12*5b9c547cSRui Paulo typedef unsigned long TNC_UInt32;
13*5b9c547cSRui Paulo typedef unsigned char *TNC_BufferReference;
14*5b9c547cSRui Paulo 
15*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_IMVID;
16*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_IMCID;
17*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_ConnectionID;
18*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_ConnectionState;
19*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_RetryReason;
20*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_IMV_Action_Recommendation;
21*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_IMV_Evaluation_Result;
22*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_MessageType;
23*5b9c547cSRui Paulo typedef TNC_MessageType *TNC_MessageTypeList;
24*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_VendorID;
25*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_Subtype;
26*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_MessageSubtype;
27*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_Version;
28*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_Result;
29*5b9c547cSRui Paulo typedef TNC_UInt32 TNC_AttributeID;
30*5b9c547cSRui Paulo 
31*5b9c547cSRui Paulo typedef TNC_Result (*TNC_TNCS_BindFunctionPointer)(
32*5b9c547cSRui Paulo 	TNC_IMVID imvID,
33*5b9c547cSRui Paulo 	char *functionName,
34*5b9c547cSRui Paulo 	void **pOutfunctionPointer);
35*5b9c547cSRui Paulo typedef TNC_Result (*TNC_TNCS_ReportMessageTypesPointer)(
36*5b9c547cSRui Paulo 	TNC_IMVID imvID,
37*5b9c547cSRui Paulo 	TNC_MessageTypeList supportedTypes,
38*5b9c547cSRui Paulo 	TNC_UInt32 typeCount);
39*5b9c547cSRui Paulo typedef TNC_Result (*TNC_TNCS_SendMessagePointer)(
40*5b9c547cSRui Paulo 	TNC_IMVID imvID,
41*5b9c547cSRui Paulo 	TNC_ConnectionID connectionID,
42*5b9c547cSRui Paulo 	TNC_BufferReference message,
43*5b9c547cSRui Paulo 	TNC_UInt32 messageLength,
44*5b9c547cSRui Paulo 	TNC_MessageType messageType);
45*5b9c547cSRui Paulo typedef TNC_Result (*TNC_TNCS_RequestHandshakeRetryPointer)(
46*5b9c547cSRui Paulo 	TNC_IMVID imvID,
47*5b9c547cSRui Paulo 	TNC_ConnectionID connectionID,
48*5b9c547cSRui Paulo 	TNC_RetryReason reason);
49*5b9c547cSRui Paulo typedef TNC_Result (*TNC_TNCS_ProvideRecommendationPointer)(
50*5b9c547cSRui Paulo 	TNC_IMVID imvID,
51*5b9c547cSRui Paulo 	TNC_ConnectionID connectionID,
52*5b9c547cSRui Paulo 	TNC_IMV_Action_Recommendation recommendation,
53*5b9c547cSRui Paulo 	TNC_IMV_Evaluation_Result evaluation);
54*5b9c547cSRui Paulo typedef TNC_Result (*TNC_TNCC_BindFunctionPointer)(
55*5b9c547cSRui Paulo 	TNC_IMCID imcID,
56*5b9c547cSRui Paulo 	char *functionName,
57*5b9c547cSRui Paulo 	void **pOutfunctionPointer);
58*5b9c547cSRui Paulo typedef TNC_Result (*TNC_TNCC_SendMessagePointer)(
59*5b9c547cSRui Paulo 	TNC_IMCID imcID,
60*5b9c547cSRui Paulo 	TNC_ConnectionID connectionID,
61*5b9c547cSRui Paulo 	TNC_BufferReference message,
62*5b9c547cSRui Paulo 	TNC_UInt32 messageLength,
63*5b9c547cSRui Paulo 	TNC_MessageType messageType);
64*5b9c547cSRui Paulo typedef TNC_Result (*TNC_TNCC_ReportMessageTypesPointer)(
65*5b9c547cSRui Paulo 	TNC_IMCID imcID,
66*5b9c547cSRui Paulo 	TNC_MessageTypeList supportedTypes,
67*5b9c547cSRui Paulo 	TNC_UInt32 typeCount);
68*5b9c547cSRui Paulo typedef TNC_Result (*TNC_TNCC_RequestHandshakeRetryPointer)(
69*5b9c547cSRui Paulo 	TNC_IMCID imcID,
70*5b9c547cSRui Paulo 	TNC_ConnectionID connectionID,
71*5b9c547cSRui Paulo 	TNC_RetryReason reason);
72*5b9c547cSRui Paulo 
73*5b9c547cSRui Paulo #define TNC_IFIMV_VERSION_1 1
74*5b9c547cSRui Paulo #define TNC_IFIMC_VERSION_1 1
75*5b9c547cSRui Paulo 
76*5b9c547cSRui Paulo #define TNC_RESULT_SUCCESS 0
77*5b9c547cSRui Paulo #define TNC_RESULT_NOT_INITIALIZED 1
78*5b9c547cSRui Paulo #define TNC_RESULT_ALREADY_INITIALIZED 2
79*5b9c547cSRui Paulo #define TNC_RESULT_NO_COMMON_VERSION 3
80*5b9c547cSRui Paulo #define TNC_RESULT_CANT_RETRY 4
81*5b9c547cSRui Paulo #define TNC_RESULT_WONT_RETRY 5
82*5b9c547cSRui Paulo #define TNC_RESULT_INVALID_PARAMETER 6
83*5b9c547cSRui Paulo #define TNC_RESULT_CANT_RESPOND 7
84*5b9c547cSRui Paulo #define TNC_RESULT_ILLEGAL_OPERATION 8
85*5b9c547cSRui Paulo #define TNC_RESULT_OTHER 9
86*5b9c547cSRui Paulo #define TNC_RESULT_FATAL 10
87*5b9c547cSRui Paulo 
88*5b9c547cSRui Paulo #define TNC_CONNECTION_STATE_CREATE 0
89*5b9c547cSRui Paulo #define TNC_CONNECTION_STATE_HANDSHAKE 1
90*5b9c547cSRui Paulo #define TNC_CONNECTION_STATE_ACCESS_ALLOWED 2
91*5b9c547cSRui Paulo #define TNC_CONNECTION_STATE_ACCESS_ISOLATED 3
92*5b9c547cSRui Paulo #define TNC_CONNECTION_STATE_ACCESS_NONE 4
93*5b9c547cSRui Paulo #define TNC_CONNECTION_STATE_DELETE 5
94*5b9c547cSRui Paulo 
95*5b9c547cSRui Paulo #define TNC_VENDORID_ANY ((TNC_VendorID) 0xffffff)
96*5b9c547cSRui Paulo #define TNC_SUBTYPE_ANY ((TNC_Subtype) 0xff)
97*5b9c547cSRui Paulo 
98*5b9c547cSRui Paulo /* TNCC-TNCS Message Types */
99*5b9c547cSRui Paulo #define TNC_TNCCS_RECOMMENDATION		0x00000001
100*5b9c547cSRui Paulo #define TNC_TNCCS_ERROR				0x00000002
101*5b9c547cSRui Paulo #define TNC_TNCCS_PREFERREDLANGUAGE		0x00000003
102*5b9c547cSRui Paulo #define TNC_TNCCS_REASONSTRINGS			0x00000004
103*5b9c547cSRui Paulo 
104*5b9c547cSRui Paulo /* Possible TNC_IMV_Action_Recommendation values: */
105*5b9c547cSRui Paulo enum IMV_Action_Recommendation {
106*5b9c547cSRui Paulo 	TNC_IMV_ACTION_RECOMMENDATION_ALLOW,
107*5b9c547cSRui Paulo 	TNC_IMV_ACTION_RECOMMENDATION_NO_ACCESS,
108*5b9c547cSRui Paulo 	TNC_IMV_ACTION_RECOMMENDATION_ISOLATE,
109*5b9c547cSRui Paulo 	TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION
110*5b9c547cSRui Paulo };
111*5b9c547cSRui Paulo 
112*5b9c547cSRui Paulo /* Possible TNC_IMV_Evaluation_Result values: */
113*5b9c547cSRui Paulo enum IMV_Evaluation_Result {
114*5b9c547cSRui Paulo 	TNC_IMV_EVALUATION_RESULT_COMPLIANT,
115*5b9c547cSRui Paulo 	TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR,
116*5b9c547cSRui Paulo 	TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR,
117*5b9c547cSRui Paulo 	TNC_IMV_EVALUATION_RESULT_ERROR,
118*5b9c547cSRui Paulo 	TNC_IMV_EVALUATION_RESULT_DONT_KNOW
119*5b9c547cSRui Paulo };
120*5b9c547cSRui Paulo 
121*5b9c547cSRui Paulo #endif /* TNC_H */
122