Changed LICENSE. Now referenced to web site and file on project root directory
[anna.git] / include / anna / diameter / helpers / base / defines.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite                           //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7
8
9 #ifndef anna_diameter_helpers_base_defines_hpp
10 #define anna_diameter_helpers_base_defines_hpp
11
12
13 // Local
14 #include <anna/diameter/helpers/defines.hpp>
15
16 // STL
17 #include <string>
18
19
20 /** Contextualized definitions (avp id) */
21 #define anna_diameter_helpers_define_avp(avpname,code)  anna_diameter_helpers_define_avp_in_context(avpname,code,base)
22
23 /** Contextualized definitions (avp id and values) */
24 #define anna_diameter_helpers_define_avp_with_values(avpname,code)  anna_diameter_helpers_define_avp_with_values_in_context(avpname,code,base)
25
26
27 namespace anna {
28
29 namespace diameter {
30
31 namespace helpers {
32
33 namespace base {
34
35
36 /**
37 * Avps
38 */
39 anna_diameter_helpers_define_avp(Host_IP_Address, 257);
40 anna_diameter_helpers_define_avp(Auth_Application_Id, 258);
41 anna_diameter_helpers_define_avp_with_values(Acct_Application_Id, 259) {
42   enum v_ {
43     ERICSSON_SCAP = 19302
44   };
45 };
46
47 anna_diameter_helpers_define_avp(Vendor_Specific_Application_Id, 260);
48 anna_diameter_helpers_define_avp_with_values(Redirect_Host_Usage, 261) {
49   enum v_ {
50     DONT_CACHE = 0,
51     ALL_SESSION = 1,
52     ALL_REALM = 2,
53     REALM_AND_APPLICATION = 3,
54     ALL_APPLICATION = 4,
55     ALL_HOST = 5,
56     ALL_USER = 6
57   };
58 };
59
60 anna_diameter_helpers_define_avp(Redirect_Max_Cache_Time, 262);
61 anna_diameter_helpers_define_avp(Session_Id, 263);
62 anna_diameter_helpers_define_avp(Origin_Host, 264);
63 anna_diameter_helpers_define_avp(Supported_Vendor_Id, 265);
64 anna_diameter_helpers_define_avp(Vendor_Id, 266);
65 anna_diameter_helpers_define_avp(Firmware_Revision, 267);
66 anna_diameter_helpers_define_avp_with_values(Result_Code, 268) {
67   enum v_ {
68     // (Informational)
69     // BaseProtocol
70     DIAMETER_MULTI_ROUND_AUTH = 1001,
71     // (Success)
72     // BaseProtocol
73     DIAMETER_SUCCESS = 2001,
74     DIAMETER_LIMITED_SUCCESS = 2002,
75     // (Protocol Errors)
76     // BaseProtocol
77     DIAMETER_COMMAND_UNSUPPORTED = 3001,
78     DIAMETER_UNABLE_TO_DELIVER = 3002,
79     DIAMETER_REALM_NOT_SERVED = 3003,
80     DIAMETER_TOO_BUSY = 3004,
81     DIAMETER_LOOP_DETECTED = 3005,
82     DIAMETER_REDIRECT_INDICATION = 3006,
83     DIAMETER_APPLICATION_UNSUPPORTED = 3007,
84     DIAMETER_INVALID_HDR_BITS = 3008,
85     DIAMETER_INVALID_AVP_BITS = 3009,
86     DIAMETER_UNKNOWN_PEER = 3010,
87     // (Transient Failures)
88     // BaseProtocol
89     DIAMETER_AUTHENTICATION_REJECTED = 4001,
90     DIAMETER_OUT_OF_SPACE = 4002,
91     ELECTION_LOST = 4003,
92     // MobileIPv4Application
93     DIAMETER_ERROR_MIP_REPLY_FAILURE = 4005,
94     DIAMETER_ERROR_HA_NOT_AVAILABLE = 4006,
95     DIAMETER_ERROR_BAD_KEY = 4007,
96     DIAMETER_ERROR_MIP_FILTER_NOT_SUPPORTED = 4008,
97     // DCCA
98     DIAMETER_END_USER_SERVICE_DENIED = 4010,
99     DIAMETER_CREDIT_CONTROL_NOT_APPLICABLE = 4011,
100     DIAMETER_CREDIT_LIMIT_REACHED = 4012,
101     // Ericsson SCAP
102     SCAP__DIAMETER_END_USER_SERVICE_DENIED = 4241,
103     // (Permanent Failure)
104     // BaseProtocol
105     DIAMETER_AVP_UNSUPPORTED = 5001,
106     DIAMETER_UNKNOWN_SESSION_ID = 5002,
107     DIAMETER_AUTHORIZATION_REJECTED = 5003,
108     DIAMETER_INVALID_AVP_VALUE = 5004,
109     DIAMETER_MISSING_AVP = 5005,
110     DIAMETER_RESOURCES_EXCEEDED = 5006,
111     DIAMETER_CONTRADICTING_AVPS = 5007,
112     DIAMETER_AVP_NOT_ALLOWED = 5008,
113     DIAMETER_AVP_OCCURS_TOO_MANY_TIMES = 5009,
114     DIAMETER_NO_COMMON_APPLICATION = 5010,
115     DIAMETER_UNSUPPORTED_VERSION = 5011,
116     DIAMETER_UNABLE_TO_COMPLY = 5012,
117     DIAMETER_INVALID_BIT_IN_HEADER = 5013,
118     DIAMETER_INVALID_AVP_LENGTH = 5014,
119     DIAMETER_INVALID_MESSAGE_LENGTH = 5015,
120     DIAMETER_INVALID_AVP_BIT_COMBO = 5016,
121     DIAMETER_NO_COMMON_SECURITY = 5017,
122     // MobileIPv4Application
123     DIAMETER_ERROR_NO_FOREIGN_HA_SERVICE = 5024,
124     DIAMETER_ERROR_END_TO_END_MIP_KEY_ENCRYPTION = 5025,
125     // DCCA
126     DIAMETER_USER_UNKNOWN = 5030,
127     DIAMETER_RATING_FAILED = 5031,
128     // Rx
129     REQUESTED_SERVICE_NOT_AUTHORIZED = 5063,
130     IP_CAN_SESSION_NOT_AVAILABLE = 5065,
131     // Ericsson SCAP
132     DIAMETER_END_USER_NOT_FOUND = 5241
133   };
134 };
135
136 anna_diameter_helpers_define_avp(Product_Name, 269);
137 anna_diameter_helpers_define_avp_with_values(Session_Binding, 270) {
138   enum v_ {
139     RE_AUTH = 1,
140     STR = 2,
141     ACCOUNTING = 4
142   };
143 };
144
145 anna_diameter_helpers_define_avp_with_values(Session_Server_Failover, 271) {
146   enum v_ {
147     REFUSE_SERVICE = 0,
148     TRY_AGAIN = 1,
149     ALLOW_SERVICE = 2,
150     TRY_AGAIN_ALLOW_SERVICE = 3
151   };
152 };
153
154 anna_diameter_helpers_define_avp(Multi_Round_Time_Out, 272);
155 anna_diameter_helpers_define_avp_with_values(Disconnect_Cause, 273) {
156   enum v_ {
157     REBOOTING = 0,
158     BUSY = 1,
159     DO_NOT_WANT_TO_TALK_TO_YOU = 2
160   };
161 };
162
163 anna_diameter_helpers_define_avp_with_values(Auth_Request_Type, 274) {
164   enum v_ {
165     RESERVED = 0,
166     AUTHENTICATE_ONLY = 1,
167     AUTHORIZE_ONLY = 2,
168     AUTHORIZE_AUTHENTICATE = 3
169   };
170 };
171
172 anna_diameter_helpers_define_avp(Auth_Grace_Period, 276);
173 anna_diameter_helpers_define_avp_with_values(Auth_Session_State, 277) {
174   enum v_ {
175     STATE_MAINTAINED = 0,
176     NO_STATE_MAINTAINED = 1
177   };
178 };
179
180 anna_diameter_helpers_define_avp(Origin_State_Id, 278);
181 anna_diameter_helpers_define_avp(Failed_AVP, 279);
182 anna_diameter_helpers_define_avp(Proxy_Host, 280);
183 anna_diameter_helpers_define_avp(Error_Message, 281);
184 anna_diameter_helpers_define_avp(Route_Record, 282);
185 anna_diameter_helpers_define_avp(Destination_Realm, 283);
186 anna_diameter_helpers_define_avp(Proxy_Info, 284);
187 anna_diameter_helpers_define_avp_with_values(Re_Auth_Request_Type, 285) {
188   enum v_ {
189     AUTHORIZE_ONLY = 0,
190     AUTHORIZE_AUTHENTICATE = 1
191   };
192 };
193
194 anna_diameter_helpers_define_avp(Accounting_Sub_Session_Id, 287);
195 anna_diameter_helpers_define_avp(Authorization_Lifetime, 291);
196 anna_diameter_helpers_define_avp(Redirect_Host, 292);
197 anna_diameter_helpers_define_avp(Destination_Host, 293);
198 anna_diameter_helpers_define_avp(Error_Reporting_Host, 294);
199 anna_diameter_helpers_define_avp_with_values(Termination_Cause, 295) {
200   enum v_ {
201     DIAMETER_LOGOUT = 1,
202     DIAMETER_SERVICE_NOT_PROVIDED = 2,
203     DIAMETER_BAD_ANSWER = 3,
204     DIAMETER_ADMINISTRATIVE = 4,
205     DIAMETER_LINK_BROKEN = 5,
206     DIAMETER_AUTH_EXPIRED = 6,
207     DIAMETER_USER_MOVED = 7,
208     DIAMETER_SESSION_TIMEOUT = 8
209   };
210 };
211
212 anna_diameter_helpers_define_avp(Origin_Realm, 296);
213 anna_diameter_helpers_define_avp(Experimental_Result, 297);
214 anna_diameter_helpers_define_avp(Experimental_Result_Code, 298);
215 anna_diameter_helpers_define_avp_with_values(Inband_Security_Id, 299) {
216   enum v_ {
217     NO_INBAND_SECURITY = 0,
218     TLS = 1
219   };
220 };
221
222 anna_diameter_helpers_define_avp(E2E_Sequence_AVP, 300); // deprecated
223 anna_diameter_helpers_define_avp_with_values(Accounting_Record_Type, 480) {
224   enum v_ {
225     EVENT_RECORD = 1,
226     START_RECORD = 2,
227     INTERIM_RECORD = 3,
228     STOP_RECORD = 4
229   };
230 };
231
232 anna_diameter_helpers_define_avp(Accounting_Interim_Interval, 482);
233 anna_diameter_helpers_define_avp_with_values(Accounting_Realtime_Required, 483) {
234   enum v_ {
235     DELIVER_AND_GRANT = 1,
236     GRANT_AND_STORE = 2,
237     GRANT_AND_LOSE = 3
238   };
239 };
240
241 anna_diameter_helpers_define_avp(Accounting_Record_Number, 485);
242
243
244 /**
245 * Commands
246 */
247 anna_diameter_helpers_define_command_request(Abort_Session_Request, 274);
248 anna_diameter_helpers_define_command_answer(Abort_Session_Answer, 274);
249 anna_diameter_helpers_define_command_request(Accounting_Request, 271);
250 anna_diameter_helpers_define_command_answer(Accounting_Answer, 271);
251 anna_diameter_helpers_define_command_request(Capabilities_Exchange_Request, 257);
252 anna_diameter_helpers_define_command_answer(Capabilities_Exchange_Answer, 257);
253 anna_diameter_helpers_define_command_request(Device_Watchdog_Request, 280);
254 anna_diameter_helpers_define_command_answer(Device_Watchdog_Answer, 280);
255 anna_diameter_helpers_define_command_request(Disconnect_Peer_Request, 282);
256 anna_diameter_helpers_define_command_answer(Disconnect_Peer_Answer, 282);
257 anna_diameter_helpers_define_command_request(Re_Auth_Request, 258);
258 anna_diameter_helpers_define_command_answer(Re_Auth_Answer, 258);
259 anna_diameter_helpers_define_command_request(Session_Termination_Request, 275);
260 anna_diameter_helpers_define_command_answer(Session_Termination_Answer, 275);
261
262
263 }
264 }
265 }
266 }
267
268
269 #undef anna_diameter_helpers_define_avp
270 #undef anna_diameter_helpers_define_avp_with_values
271
272 #endif