First commit
[anna.git] / include / anna / diameter / helpers / dcca / defines.hpp
1 // ANNA - Anna is Not 'N' Anymore
2 //
3 // (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
4 //
5 // https://bitbucket.org/testillano/anna
6 //
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions
9 // are met:
10 //
11 //     * Redistributions of source code must retain the above copyright
12 // notice, this list of conditions and the following disclaimer.
13 //     * Redistributions in binary form must reproduce the above
14 // copyright notice, this list of conditions and the following disclaimer
15 // in the documentation and/or other materials provided with the
16 // distribution.
17 //     * Neither the name of Google Inc. nor the names of its
18 // contributors may be used to endorse or promote products derived from
19 // this software without specific prior written permission.
20 //
21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 //
33 // Authors: eduardo.ramos.testillano@gmail.com
34 //          cisco.tierra@gmail.com
35
36
37 #ifndef anna_diameter_helpers_dcca_defines_hpp
38 #define anna_diameter_helpers_dcca_defines_hpp
39
40
41 // Local
42 #include <anna/diameter/helpers/defines.hpp>
43
44 // STL
45 #include <string>
46
47
48 /** Contextualized definitions (avp id) */
49 #define anna_diameter_helpers_define_avp(avpname,code)  anna_diameter_helpers_define_avp_in_context(avpname,code,dcca)
50
51 /** Contextualized definitions (avp id and values) */
52 #define anna_diameter_helpers_define_avp_with_values(avpname,code)  anna_diameter_helpers_define_avp_with_values_in_context(avpname,code,dcca)
53
54
55 namespace anna {
56
57 namespace diameter {
58
59 namespace helpers {
60
61 namespace dcca {
62
63
64 /**
65 * Avps
66 */
67 anna_diameter_helpers_define_avp(CC_Correlation_Id, 411);
68 anna_diameter_helpers_define_avp(CC_Input_Octets, 412);
69 anna_diameter_helpers_define_avp(CC_Money, 413);
70 anna_diameter_helpers_define_avp(CC_Output_Octets, 414);
71 anna_diameter_helpers_define_avp(CC_Request_Number, 415);
72 anna_diameter_helpers_define_avp_with_values(CC_Request_Type, 416) {
73   enum v_ {
74     INITIAL_REQUEST = 1,
75     UPDATE_REQUEST = 2,
76     TERMINATION_REQUEST = 3,
77     EVENT_REQUEST = 4
78   };
79 };
80
81 anna_diameter_helpers_define_avp(CC_Service_Specific_Units, 417);
82 anna_diameter_helpers_define_avp_with_values(CC_Session_Failover, 418) {
83   enum v_ {
84     FAILOVER_NOT_SUPPORTED = 0,
85     FAILOVER_SUPPORTED = 1
86   };
87 };
88
89 anna_diameter_helpers_define_avp(CC_Sub_Session_Id, 419);
90 anna_diameter_helpers_define_avp(CC_Time, 420);
91 anna_diameter_helpers_define_avp(CC_Total_Octets, 421);
92 anna_diameter_helpers_define_avp_with_values(Check_Balance_Result, 422) {
93   enum v_ {
94     ENOUGH_CREDIT = 0,
95     NO_CREDIT = 1
96   };
97 };
98
99 anna_diameter_helpers_define_avp(Cost_Information, 423);
100 anna_diameter_helpers_define_avp(Cost_Unit, 424);
101 anna_diameter_helpers_define_avp(Currency_Code, 425);
102 anna_diameter_helpers_define_avp_with_values(Credit_Control, 426) {
103   enum v_ {
104     CREDIT_AUTHORIZATION = 0,
105     RE_AUTHORIZATION = 1
106   };
107 };
108
109 anna_diameter_helpers_define_avp_with_values(Credit_Control_Failure_Handling, 427) {
110   enum v_ {
111     TERMINATE = 0,
112     CONTINUE = 1,
113     RETRY_AND_TERMINATE = 2
114   };
115 };
116
117 anna_diameter_helpers_define_avp_with_values(Direct_Debiting_Failure_Handling, 428) {
118   enum v_ {
119     TERMINATE_OR_BUFFER = 0,
120     CONTINUE = 1
121   };
122 };
123
124 anna_diameter_helpers_define_avp(Exponent, 429);
125 anna_diameter_helpers_define_avp(Final_Unit_Indication, 430);
126 anna_diameter_helpers_define_avp(Granted_Service_Unit, 431);
127 anna_diameter_helpers_define_avp(Rating_Group, 432);
128 anna_diameter_helpers_define_avp_with_values(Redirect_Address_Type, 433) {
129   enum v_ {
130     IPv4_Address = 0,
131     IPv6_Address = 1,
132     URL = 2,
133     SIP_URL = 3
134   };
135 };
136
137 anna_diameter_helpers_define_avp(Redirect_Server, 434);
138 anna_diameter_helpers_define_avp(Redirect_Server_Address, 435);
139 anna_diameter_helpers_define_avp_with_values(Requested_Action, 436) {
140   enum v_ {
141     DIRECT_DEBITING = 0,
142     REFUND_ACCOUNT = 1,
143     CHECK_BALANCE = 2,
144     PRICE_ENQUIRY = 3
145   };
146 };
147
148 anna_diameter_helpers_define_avp(Requested_Service_Unit, 437);
149 anna_diameter_helpers_define_avp(Restriction_Filter_Rule, 438);
150 anna_diameter_helpers_define_avp(Service_Identifier, 439);
151 anna_diameter_helpers_define_avp(Service_Parameter_Info, 440);
152 anna_diameter_helpers_define_avp(Service_Parameter_Type, 441);
153 anna_diameter_helpers_define_avp(Service_Parameter_Value, 442);
154 anna_diameter_helpers_define_avp(Subscription_Id, 443);
155 anna_diameter_helpers_define_avp(Subscription_Id_Data, 444);
156 anna_diameter_helpers_define_avp(Unit_Value, 445);
157 anna_diameter_helpers_define_avp(Used_Service_Unit, 446);
158 anna_diameter_helpers_define_avp(Value_Digits, 447);
159 anna_diameter_helpers_define_avp(Validity_Time, 448);
160 anna_diameter_helpers_define_avp_with_values(Final_Unit_Action, 449) {
161   enum v_ {
162     TERMINATE = 0,
163     REDIRECT = 1,
164     RESTRICT_ACCESS = 2
165   };
166 };
167
168 anna_diameter_helpers_define_avp_with_values(Subscription_Id_Type, 450) {
169   enum v_ {
170     END_USER_E164 = 0,
171     END_USER_IMSI = 1,
172     END_USER_SIP_URL = 2,
173     END_USER_NAI = 3,
174     END_USER_PRIVATE = 4
175   };
176 };
177
178 anna_diameter_helpers_define_avp(Tariff_Time_Change, 451);
179 anna_diameter_helpers_define_avp_with_values(Tariff_Change_Usage, 452) {
180   enum v_ {
181     UNIT_BEFORE_TARIFF_CHANGE = 0,
182     UNIT_AFTER_TARIFF_CHANGE = 1,
183     UNIT_INDETERMINATE = 2
184   };
185 };
186
187 anna_diameter_helpers_define_avp(G_S_U_Pool_Identifier, 453);
188 anna_diameter_helpers_define_avp_with_values(CC_Unit_Type, 454) {
189   enum v_ {
190     TIME = 0,
191     MONEY = 1,
192     TOTAL_OCTETS = 2,
193     INPUT_OCTETS = 3,
194     OUTPUT_OCTETS = 4,
195     SERVICE_SPECIFIC_UNITS = 5
196   };
197 };
198
199 anna_diameter_helpers_define_avp_with_values(Multiple_Services_Indicator, 455) {
200   enum v_ {
201     MULTIPLE_SERVICES_NOT_SUPPORTED = 0,
202     MULTIPLE_SERVICES_SUPPORTED = 1
203   };
204 };
205
206 anna_diameter_helpers_define_avp(Multiple_Services_Credit_Control, 456);
207 anna_diameter_helpers_define_avp(G_S_U_Pool_Reference, 457);
208 anna_diameter_helpers_define_avp(User_Equipment_Info, 458);
209 anna_diameter_helpers_define_avp_with_values(User_Equipment_Info_Type, 459) {
210   enum v_ {
211     IMEISV = 0,
212     MAC = 1,
213     EUI64 = 2,
214     MODIFIED_EUI64 = 3
215   };
216 };
217
218 anna_diameter_helpers_define_avp(User_Equipment_Info_Value, 460);
219 anna_diameter_helpers_define_avp(Service_Context_Id, 461);
220
221
222 /**
223 * Commands
224 */
225 anna_diameter_helpers_define_command_request(Credit_Control_Request, 272);
226 anna_diameter_helpers_define_command_answer(Credit_Control_Answer, 272);
227
228
229 }
230 }
231 }
232 }
233
234
235 #undef anna_diameter_helpers_define_avp
236 #undef anna_diameter_helpers_define_avp_with_values
237
238 #endif
239