diameter_interface/modeling/message/
dictionary.rs1use crate::modeling::avp::avp::AvpType;
7use crate::modeling::message::application_id::ApplicationId;
8use crate::modeling::message::command_code::CommandCode;
9use lazy_static::lazy_static;
10use serde::Deserialize;
11use serde_xml_rs::from_str;
12use std::collections::{BTreeMap, HashMap};
13use std::sync::RwLock;
14
15#[derive(Debug)]
16pub struct Dictionary {
17 avps: BTreeMap<AvpKey, AvpDefinition>,
18 applications: HashMap<String, ApplicationId>,
19 commands: HashMap<String, CommandCode>,
20}
21
22#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
23pub enum AvpKey {
24 Code(u32),
25 CodeAndVendor(u32, u32),
26}
27
28#[derive(Debug)]
29pub struct AvpDefinition {
30 pub code: u32,
31 pub vendor_id: Option<u32>,
32 pub name: String,
33 pub avp_type: AvpType,
34 pub m_flag: bool,
35}
36
37impl Dictionary {
38 pub fn new(xmls: &[&str]) -> Self {
39 let mut dict = Dictionary {
40 avps: BTreeMap::new(),
41 applications: HashMap::new(),
42 commands: HashMap::new(),
43 };
44
45 for xml in xmls {
46 dict.load_xml(xml)
47 }
48
49 dict
50 }
51
52 pub fn load_xml(&mut self, xml: &str) {
53 parse(xml, self);
54 }
55
56 pub fn add_avp(&mut self, avp: AvpDefinition) {
57 let code: u32 = avp.code;
58 match avp.vendor_id {
59 Some(vendor_id) => {
60 self.avps
61 .insert(AvpKey::CodeAndVendor(code, vendor_id), avp);
62 }
63 None => {
64 self.avps.insert(AvpKey::Code(code), avp);
65 }
66 }
67 }
68
69 pub fn get_avp(&self, code: u32, vendor_id: Option<u32>) -> Option<&AvpDefinition> {
70 let key = match vendor_id {
71 Some(vendor_id) => AvpKey::CodeAndVendor(code, vendor_id),
72 None => AvpKey::Code(code),
73 };
74 self.avps.get(&key)
75 }
76
77 pub fn get_avp_by_name(&self, name: &str) -> Option<&AvpDefinition> {
78 self.avps.values().find(|avp| avp.name == name)
80 }
81
82 pub fn get_avp_type(&self, code: u32, vendor_id: Option<u32>) -> Option<&AvpType> {
83 let key = match vendor_id {
84 Some(vendor_id) => AvpKey::CodeAndVendor(code, vendor_id),
85 None => AvpKey::Code(code),
86 };
87 match self.avps.get(&key) {
88 Some(avp) => Some(&avp.avp_type),
89 None => None,
90 }
91 }
92
93 pub fn get_avp_name(&self, code: u32, vendor_id: Option<u32>) -> Option<&str> {
94 let key = match vendor_id {
95 Some(vendor_id) => AvpKey::CodeAndVendor(code, vendor_id),
96 None => AvpKey::Code(code),
97 };
98 match self.avps.get(&key) {
99 Some(avp) => Some(&avp.name),
100 None => None,
101 }
102 }
103}
104
105#[derive(Debug, Deserialize, PartialEq)]
106struct Diameter {
107 #[serde(rename = "application")]
108 applications: Vec<Application>,
109}
110
111#[derive(Debug, Deserialize, PartialEq)]
112struct Application {
113 id: String,
114 name: String,
115 #[serde(rename = "command", default)]
116 commands: Vec<Command>,
117 #[serde(rename = "avp", default)]
118 avps: Vec<Avp>,
119}
120
121#[derive(Debug, Deserialize, PartialEq)]
122struct Command {
123 code: String,
124 short: String,
125 name: String,
126 request: CommandDetail,
127 answer: CommandDetail,
128}
129
130#[derive(Debug, Deserialize, PartialEq)]
131struct CommandDetail {
132 #[serde(rename = "rule", default)]
133 rules: Vec<Rule>,
134}
135
136#[derive(Debug, Deserialize, PartialEq)]
137struct Rule {
138 avp: String,
139 required: String,
140 max: Option<String>,
141 min: Option<String>,
142}
143
144#[derive(Debug, Deserialize, PartialEq)]
145struct Avp {
146 name: String,
147 code: String,
148 must: Option<String>,
149 may: Option<String>,
150 #[serde(rename = "must-not")]
151 must_not: Option<String>,
152 #[serde(rename = "may-encrypt")]
153 may_encrypt: Option<String>,
154 #[serde(rename = "vendor-id")]
155 vendor_id: Option<String>,
156 data: Data,
157}
158
159#[derive(Debug, Deserialize, PartialEq)]
160struct Data {
161 #[serde(rename = "type")]
162 data_type: String,
163 #[serde(default)]
164 item: Vec<Item>,
165}
166
167#[derive(Debug, Deserialize, PartialEq)]
168struct Item {
169 code: String,
170 name: String,
171}
172
173pub fn parse(xml: &str, dictionary: &mut Dictionary) {
174 let dict: Diameter = from_str(xml).unwrap();
175
176 dict.applications.iter().for_each(|app| {
177 let app_id = app.id.parse::<u32>().unwrap();
178 let app_id: ApplicationId = ApplicationId::try_from(app_id).unwrap();
179 dictionary.applications.insert(app.name.clone(), app_id);
180
181 app.commands.iter().for_each(|cmd| {
182 let cmd_code = cmd.code.parse::<u32>().unwrap();
183 let cmd_code: CommandCode = CommandCode::try_from(cmd_code).unwrap();
184 dictionary.commands.insert(cmd.name.clone(), cmd_code);
185 });
186
187 app.avps.iter().for_each(|avp| {
188 let avp_type = match avp.data.data_type.as_str() {
189 "UTF8String" => AvpType::UTF8String,
190 "OctetString" => AvpType::OctetString,
191 "Integer32" => AvpType::Integer32,
192 "Integer64" => AvpType::Integer64,
193 "Unsigned32" => AvpType::Unsigned32,
194 "Unsigned64" => AvpType::Unsigned64,
195 "Enumerated" => AvpType::Enumerated,
196 "Grouped" => AvpType::Grouped,
197 "DiameterIdentity" => AvpType::Identity,
198 "DiameterURI" => AvpType::DiameterURI,
199 "Time" => AvpType::Time,
200 "IPv4" => AvpType::AddressIPv4,
201 "IPv6" => AvpType::AddressIPv6,
202 "Float32" => AvpType::Float32,
203 "Float64" => AvpType::Float64,
204 _ => AvpType::Unknown,
205 };
206
207 let flags: Vec<&str> = match avp.must {
208 Some(ref s) => s.split(',').collect(),
209 None => vec![],
210 };
211 let m_flag = if flags.contains(&"M") { true } else { false };
212 let vendor_id = match avp.vendor_id {
213 Some(ref s) => Some(s.parse::<u32>().unwrap()),
214 None => None,
215 };
216
217 let avp_definition = AvpDefinition {
218 code: avp.code.parse::<u32>().unwrap(),
219 vendor_id,
220 name: avp.name.clone(),
221 avp_type,
222 m_flag,
223 };
224
225 dictionary.add_avp(avp_definition);
226 });
227 });
228}
229lazy_static! {
230 pub static ref DEFAULT_DICT: RwLock<Dictionary> = {
231 let xml = &DEFAULT_DICT_XML;
232 let dictionary = Dictionary::new(&[&xml]);
233 RwLock::new(dictionary)
234 };
235 pub static ref DEFAULT_DICT_XML: &'static str = {
236 let xml = r#"
237<diameter>
238 <application id="4" type="auth" name="Charging Control">
239 <!-- Diameter Credit Control Application -->
240 <!-- http://tools.ietf.org/html/rfc4006 -->
241
242 <command code="272" short="CC" name="Credit-Control">
243 <request>
244 <!-- http://tools.ietf.org/html/rfc4006#section-3.1 -->
245 <rule avp="Session-Id" required="true" max="1"/>
246 <rule avp="Origin-Host" required="true" max="1"/>
247 <rule avp="Origin-Realm" required="true" max="1"/>
248 <rule avp="Destination-Realm" required="true" max="1"/>
249 <rule avp="Auth-Application-Id" required="true" max="1"/>
250 <rule avp="Service-Context-Id" required="true" max="1"/>
251 <rule avp="CC-Request-Type" required="true" max="1"/>
252 <rule avp="CC-Request-Number" required="true" max="1"/>
253 <rule avp="Destination-Host" required="false" max="1"/>
254 <rule avp="User-Name" required="false" max="1"/>
255 <rule avp="CC-Sub-Session-Id" required="false" max="1"/>
256 <rule avp="Acct-Multi-Session-Id" required="false" max="1"/>
257 <rule avp="Origin-State-Id" required="false" max="1"/>
258 <rule avp="Event-Timestamp" required="false" max="1"/>
259 <rule avp="Subscription-Id" required="false" max="1"/>
260 <rule avp="Service-Identifier" required="false" max="1"/>
261 <rule avp="Termination-Cause" required="false" max="1"/>
262 <rule avp="Requested-Service-Unit" required="false" max="1"/>
263 <rule avp="Requested-Action" required="false" max="1"/>
264 <rule avp="Used-Service-Unit" required="false" max="1"/>
265 <rule avp="Multiple-Services-Indicator" required="false" max="1"/>
266 <rule avp="Multiple-Services-Credit-Control" required="false" max="1"/>
267 <rule avp="Service-Parameter-Info" required="false" max="1"/>
268 <rule avp="CC-Correlation-Id" required="false" max="1"/>
269 <rule avp="User-Equipment-Info" required="false" max="1"/>
270 <rule avp="Proxy-Info" required="false" max="1"/>
271 <rule avp="Route-Record" required="false" max="1"/>
272 <rule avp="Service-Information" required="false" max="1"/>
273 </request>
274 <answer>
275 <!-- http://tools.ietf.org/html/rfc4006#section-3.2 -->
276 <rule avp="Session-Id" required="true" max="1"/>
277 <rule avp="Result-Code" required="true" max="1"/>
278 <rule avp="Origin-Host" required="true" max="1"/>
279 <rule avp="Origin-Realm" required="true" max="1"/>
280 <rule avp="CC-Request-Type" required="true" max="1"/>
281 <rule avp="CC-Request-Number" required="true" max="1"/>
282 <rule avp="User-Name" required="false" max="1"/>
283 <rule avp="CC-Session-Failover" required="false" max="1"/>
284 <rule avp="CC-Sub-Session-Id" required="false" max="1"/>
285 <rule avp="Acct-Multi-Session-Id" required="false" max="1"/>
286 <rule avp="Origin-State-Id" required="false" max="1"/>
287 <rule avp="Event-Timestamp" required="false" max="1"/>
288 <rule avp="Granted-Service-Unit" required="false" max="1"/>
289 <rule avp="Multiple-Services-Credit-Control" required="false" max="1"/>
290 <rule avp="Cost-Information" required="false" max="1"/>
291 <rule avp="Final-Unit-Indication" required="false" max="1"/>
292 <rule avp="Check-Balance-Result" required="false" max="1"/>
293 <rule avp="Credit-Control-Failure-Handling" required="false" max="1"/>
294 <rule avp="Direct-Debiting-Failure-Handling" required="false" max="1"/>
295 <rule avp="Validity-Time" required="false" max="1"/>
296 <rule avp="Redirect-Host" required="false" max="1"/>
297 <rule avp="Redirect-Host-Usage" required="false" max="1"/>
298 <rule avp="Redirect-Max-Cache-Time" required="false" max="1"/>
299 <rule avp="Proxy-Info" required="false" max="1"/>
300 <rule avp="Route-Record" required="false" max="1"/>
301 <rule avp="Failed-AVP" required="false" max="1"/>
302 </answer>
303 </command>
304 </application>
305
306 <application id="0" name="Base">
307 <command code="257" short="CE" name="Capabilities-Exchange">
308 <request>
309 <rule avp="Origin-Host" required="true" max="1"/>
310 <rule avp="Origin-Realm" required="true" max="1"/>
311 <rule avp="Host-IP-Address" required="true" min="1"/>
312 <rule avp="Vendor-Id" required="true" max="1"/>
313 <rule avp="Product-Name" required="true" max="1"/>
314 <rule avp="Origin-State-Id" required="false" max="1"/>
315 <rule avp="Supported-Vendor-Id" required="False"/>
316 <rule avp="Auth-Application-Id" required="False"/>
317 <rule avp="Inband-Security-Id" required="False"/>
318 <rule avp="Acct-Application-Id" required="False"/>
319 <rule avp="Vendor-Specific-Application-Id" required="False"/>
320 <rule avp="Firmware-Revision" required="False" max="1"/>
321 </request>
322 <answer>
323 <rule avp="Result-Code" required="true" max="1"/>
324 <rule avp="Origin-Host" required="true" max="1"/>
325 <rule avp="Origin-Realm" required="true" max="1"/>
326 <rule avp="Host-IP-Address" required="true" min="1"/>
327 <rule avp="Vendor-Id" required="true" max="1"/>
328 <rule avp="Product-Name" required="true" max="1"/>
329 <rule avp="Origin-State-Id" required="false" max="1"/>
330 <rule avp="Error-Message" required="false" max="1"/>
331 <rule avp="Failed-AVP" required="false" max="1"/>
332 <rule avp="Supported-Vendor-Id" required="False"/>
333 <rule avp="Auth-Application-Id" required="False"/>
334 <rule avp="Inband-Security-Id" required="False"/>
335 <rule avp="Acct-Application-Id" required="False"/>
336 <rule avp="Vendor-Specific-Application-Id" required="False"/>
337 <rule avp="Firmware-Revision" required="False" max="1"/>
338 </answer>
339 </command>
340
341 <command code="258" short="RA" name="Re-Auth">
342 <request>
343 <rule avp="Session-Id" required="true" max="1"/>
344 <rule avp="Origin-Host" required="true" max="1"/>
345 <rule avp="Origin-Realm" required="true" max="1"/>
346 <rule avp="Destination-Realm" required="true" max="1"/>
347 <rule avp="Destination-Host" required="true" max="1"/>
348 <rule avp="Auth-Application-Id" required="true" max="1"/>
349 <rule avp="Re-Auth-Request-Type" required="true" max="1"/>
350 <rule avp="User-Name" required="false" max="1"/>
351 <rule avp="Origin-State-Id" required="false" max="1"/>
352 <rule avp="Proxy-Info" required="false"/>
353 <rule avp="Route-Record" required="false"/>
354 </request>
355 <answer>
356 <rule avp="Session-Id" required="true" max="1"/>
357 <rule avp="Result-Code" required="true" max="1"/>
358 <rule avp="Origin-Host" required="true" max="1"/>
359 <rule avp="Origin-Realm" required="true" max="1"/>
360 <rule avp="User-Name" required="false" max="1"/>
361 <rule avp="Origin-State-Id" required="false" max="1"/>
362 <rule avp="Error-Message" required="false" max="1"/>
363 <rule avp="Error-Reporting-Host" required="false" max="1"/>
364 <rule avp="Failed-AVP" required="false" max="1"/>
365 <rule avp="Redirect-Host" required="false"/>
366 <rule avp="Redirect-Host-Usage" required="false" max="1"/>
367 <rule avp="Redirect-Max-Cache-Time" required="false" max="1"/>
368 <rule avp="Proxy-Info" required="false"/>
369 </answer>
370 </command>
371
372 <command code="271" short="AC" name="Accounting">
373 <request>
374 <rule avp="Session-Id" required="true" max="1"/>
375 <rule avp="Origin-Host" required="true" max="1"/>
376 <rule avp="Origin-Realm" required="true" max="1"/>
377 <rule avp="Destination-Realm" required="true" max="1"/>
378 <rule avp="Accounting-Record-Type" required="true" max="1"/>
379 <rule avp="Accounting-Record-Number" required="true" max="1"/>
380 <rule avp="Acct-Application-Id" required="false" max="1"/>
381 <rule avp="Vendor-Specific-Application-Id" required="false" max="1"/>
382 <rule avp="User-Name" required="false" max="1"/>
383 <rule avp="Destination-Host" required="false" max="1"/>
384 <rule avp="Accounting-Sub-Session-Id" required="false" max="1"/>
385 <rule avp="Acct-Session-Id" required="false" max="1"/>
386 <rule avp="Acct-Multi-Session-Id" required="false" max="1"/>
387 <rule avp="Acct-Interim-Interval" required="false" max="1"/>
388 <rule avp="Accounting-Realtime-Required" required="false" max="1"/>
389 <rule avp="Origin-State-Id" required="false" max="1"/>
390 <rule avp="Event-Timestamp" required="false" max="1"/>
391 <rule avp="Proxy-Info" required="false"/>
392 <rule avp="Route-Record" required="false"/>
393 </request>
394 <answer>
395 <rule avp="Session-Id" required="true" max="1"/>
396 <rule avp="Result-Code" required="true" max="1"/>
397 <rule avp="Origin-Host" required="true" max="1"/>
398 <rule avp="Origin-Realm" required="true" max="1"/>
399 <rule avp="Accounting-Record-Type" required="true" max="1"/>
400 <rule avp="Accounting-Record-Number" required="true" max="1"/>
401 <rule avp="Acct-Application-Id" required="false" max="1"/>
402 <rule avp="Vendor-Specific-Application-Id" required="false" max="1"/>
403 <rule avp="User-Name" required="false" max="1"/>
404 <rule avp="Accounting-Sub-Session-Id" required="false" max="1"/>
405 <rule avp="Acct-Session-Id" required="false" max="1"/>
406 <rule avp="Acct-Multi-Session-Id" required="false" max="1"/>
407 <rule avp="Error-Message" required="false" max="1"/>
408 <rule avp="Error-Reporting-Host" required="false" max="1"/>
409 <rule avp="Failed-AVP" required="false" max="1"/>
410 <rule avp="Acct-Interim-Interval" required="false" max="1"/>
411 <rule avp="Accounting-Realtime-Required" required="false" max="1"/>
412 <rule avp="Origin-State-Id" required="false" max="1"/>
413 <rule avp="Event-Timestamp" required="false" max="1"/>
414 <rule avp="Proxy-Info" required="false"/>
415 </answer>
416 </command>
417
418 <command code="274" short="AS" name="Abort-Session">
419 <request>
420 <rule avp="Session-Id" required="true" max="1"/>
421 <rule avp="Origin-Host" required="true" max="1"/>
422 <rule avp="Origin-Realm" required="true" max="1"/>
423 <rule avp="Destination-Realm" required="true" max="1"/>
424 <rule avp="Destination-Host" required="true" max="1"/>
425 <rule avp="Auth-Application-Id" required="true" max="1"/>
426 <rule avp="User-Name" required="false" max="1"/>
427 <rule avp="Origin-State-Id" required="false" max="1"/>
428 <rule avp="Proxy-Info" required="false"/>
429 <rule avp="Route-Record" required="false"/>
430 </request>
431 <answer>
432 <rule avp="Session-Id" required="true" max="1"/>
433 <rule avp="Result-Code" required="true" max="1"/>
434 <rule avp="Origin-Host" required="true" max="1"/>
435 <rule avp="Origin-Realm" required="true" max="1"/>
436 <rule avp="User-Name" required="false" max="1"/>
437 <rule avp="Origin-State-Id" required="false" max="1"/>
438 <rule avp="Error-Message" required="false" max="1"/>
439 <rule avp="Error-Reporting-Host" required="false" max="1"/>
440 <rule avp="Failed-AVP" required="false" max="1"/>
441 <rule avp="Redirect-Host" required="false"/>
442 <rule avp="Redirect-Host-Usage" required="false" max="1"/>
443 <rule avp="Redirect-Max-Cache-Time" required="false" max="1"/>
444 <rule avp="Proxy-Info" required="false"/>
445 </answer>
446 </command>
447
448 <command code="275" short="ST" name="Session-Termination">
449 <request>
450 <rule avp="Session-Id" required="true" max="1"/>
451 <rule avp="Origin-Host" required="true" max="1"/>
452 <rule avp="Origin-Realm" required="true" max="1"/>
453 <rule avp="Destination-Realm" required="true" max="1"/>
454 <rule avp="Auth-Application-Id" required="true" max="1"/>
455 <rule avp="Termination-Cause" required="true" max="1"/>
456 <rule avp="User-Name" required="false" max="1"/>
457 <rule avp="Destination-Host" required="false" max="1"/>
458 <rule avp="Class" required="false"/>
459 <rule avp="Origin-State-Id" required="false" max="1"/>
460 <rule avp="Proxy-Info" required="false"/>
461 <rule avp="Route-Record" required="false"/>
462 </request>
463 <answer>
464 <rule avp="Session-Id" required="true" max="1"/>
465 <rule avp="Result-Code" required="true" max="1"/>
466 <rule avp="Origin-Host" required="true" max="1"/>
467 <rule avp="Origin-Realm" required="true" max="1"/>
468 <rule avp="User-Name" required="false" max="1"/>
469 <rule avp="Class" required="false"/>
470 <rule avp="Error-Message" required="false" max="1"/>
471 <rule avp="Error-Reporting-Host" required="false" max="1"/>
472 <rule avp="Failed-AVP" required="false" max="1"/>
473 <rule avp="Origin-State-Id" required="false" max="1"/>
474 <rule avp="Redirect-Host" required="false"/>
475 <rule avp="Redirect-Host-Usage" required="false" max="1"/>
476 <rule avp="Redirect-Max-Cache-Time" required="false" max="1"/>
477 <rule avp="Proxy-Info" required="false"/>
478 </answer>
479 </command>
480
481 <command code="280" short="DW" name="Device-Watchdog">
482 <request>
483 <rule avp="Origin-Host" required="true" max="1"/>
484 <rule avp="Origin-Realm" required="true" max="1"/>
485 <rule avp="Origin-State-Id" required="false" max="1"/>
486 </request>
487 <answer>
488 <rule avp="Result-Code" required="true" max="1"/>
489 <rule avp="Origin-Host" required="true" max="1"/>
490 <rule avp="Origin-Realm" required="true" max="1"/>
491 <rule avp="Error-Message" required="false" max="1"/>
492 <rule avp="Failed-AVP" required="false" max="1"/>
493 <rule avp="Origin-State-Id" required="false" max="1"/>
494 </answer>
495 </command>
496
497 <command code="282" short="DP" name="Disconnect-Peer">
498 <request>
499 <rule avp="Origin-Host" required="true" max="1"/>
500 <rule avp="Origin-Realm" required="true" max="1"/>
501 <rule avp="Disconnect-Cause" required="false" max="1"/>
502 </request>
503 <answer>
504 <rule avp="Result-Code" required="true" max="1"/>
505 <rule avp="Origin-Host" required="true" max="1"/>
506 <rule avp="Origin-Realm" required="true" max="1"/>
507 <rule avp="Error-Message" required="false" max="1"/>
508 <rule avp="Failed-AVP" required="false" max="1"/>
509 </answer>
510 </command>
511
512 <avp name="Acct-Interim-Interval" code="85" must="M" may="P" must-not="V" may-encrypt="Y">
513 <data type="Unsigned32"/>
514 </avp>
515
516 <avp name="Accounting-Realtime-Required" code="483" must="M" may="P" must-not="V" may-encrypt="Y">
517 <data type="Enumerated">
518 <item code="1" name="DELIVER_AND_GRANT"/>
519 <item code="2" name="GRANT_AND_STORE"/>
520 <item code="3" name="GRANT_AND_LOSE"/>
521 </data>
522 </avp>
523
524 <avp name="Acct-Multi-Session-Id" code="50" must="M" may="P" must-not="V" may-encrypt="Y">
525 <data type="UTF8String"/>
526 </avp>
527
528 <avp name="Accounting-Record-Number" code="485" must="M" may="P" must-not="V" may-encrypt="Y">
529 <data type="Unsigned32"/>
530 </avp>
531
532 <avp name="Accounting-Record-Type" code="480" must="M" may="P" must-not="V" may-encrypt="Y">
533 <data type="Enumerated">
534 <item code="1" name="EVENT_RECORD"/>
535 <item code="2" name="START_RECORD"/>
536 <item code="3" name="INTERIM_RECORD"/>
537 <item code="4" name="STOP_RECORD"/>
538 </data>
539 </avp>
540
541 <avp name="Accounting-Session-Id" code="44" must="M" may="P" must-not="V" may-encrypt="Y">
542 <data type="OctetString"/>
543 </avp>
544
545 <avp name="Accounting-Sub-Session-Id" code="287" must="M" may="P" must-not="V" may-encrypt="Y">
546 <data type="Unsigned64"/>
547 </avp>
548
549 <avp name="Acct-Application-Id" code="259" must="M" may="P" must-not="V" may-encrypt="-">
550 <data type="Unsigned32"/>
551 </avp>
552
553 <avp name="Auth-Application-Id" code="258" must="M" may="P" must-not="V" may-encrypt="-">
554 <data type="Unsigned32"/>
555 </avp>
556
557 <avp name="Auth-Request-Type" code="274" must="M" may="P" must-not="V" may-encrypt="-">
558 <data type="Enumerated">
559 <item code="1" name="AUTHENTICATE_ONLY"/>
560 <item code="2" name="AUTHORIZE_ONLY"/>
561 <item code="3" name="AUTHORIZE_AUTHENTICATE"/>
562 </data>
563 </avp>
564
565 <avp name="Authorization-Lifetime" code="291" must="M" may="P" must-not="V" may-encrypt="-">
566 <data type="Unsigned32"/>
567 </avp>
568
569 <avp name="Auth-Grace-Period" code="276" must="M" may="P" must-not="V" may-encrypt="-">
570 <data type="Unsigned32"/>
571 </avp>
572
573 <avp name="Auth-Session-State" code="277" must="M" may="P" must-not="V" may-encrypt="-">
574 <data type="Enumerated">
575 <item code="0" name="STATE_MAINTAINED"/>
576 <item code="1" name="NO_STATE_MAINTAINED"/>
577 </data>
578 </avp>
579
580 <avp name="Re-Auth-Request-Type" code="285" must="M" may="P" must-not="V" may-encrypt="-">
581 <data type="Enumerated">
582 <item code="0" name="AUTHORIZE_ONLY"/>
583 <item code="1" name="AUTHORIZE_AUTHENTICATE"/>
584 </data>
585 </avp>
586
587 <avp name="Class" code="25" must="M" may="P" must-not="V" may-encrypt="Y">
588 <data type="OctetString"/>
589 </avp>
590
591 <avp name="Destination-Host" code="293" must="M" may="P" must-not="V" may-encrypt="-">
592 <data type="DiameterIdentity"/>
593 </avp>
594
595 <avp name="Destination-Realm" code="283" must="M" may="P" must-not="V" may-encrypt="-">
596 <data type="DiameterIdentity"/>
597 </avp>
598
599 <avp name="Disconnect-Cause" code="273" must="M" may="P" must-not="V" may-encrypt="-">
600 <data type="Enumerated">
601 <item code="0" name="REBOOTING"/>
602 <item code="1" name="BUSY"/>
603 <item code="2" name="DO_NOT_WANT_TO_TALK_TO_YOU"/>
604 </data>
605 </avp>
606
607 <avp name="Error-Message" code="281" must="-" may="P" must-not="V,M" may-encrypt="-">
608 <data type="UTF8String"/>
609 </avp>
610
611 <avp name="Error-Reporting-Host" code="294" must="-" may="P" must-not="V,M" may-encrypt="-">
612 <data type="DiameterIdentity"/>
613 </avp>
614
615 <avp name="Event-Timestamp" code="55" must="M" may="P" must-not="V" may-encrypt="-">
616 <data type="Time"/>
617 </avp>
618
619 <avp name="Experimental-Result" code="297" must="M" may="P" must-not="V" may-encrypt="-">
620 <data type="Grouped">
621 <rule avp="Vendor-Id" required="true" max="1"/>
622 <rule avp="Experimental-Result-Code" required="true" max="1"/>
623 </data>
624 </avp>
625
626 <avp name="Experimental-Result-Code" code="298" must="M" may="P" must-not="V" may-encrypt="-">
627 <data type="Unsigned32"/>
628 </avp>
629
630 <avp name="Failed-AVP" code="279" must="M" may="P" must-not="V" may-encrypt="-">
631 <data type="Grouped"/>
632 </avp>
633
634 <avp name="Firmware-Revision" code="267" must="-" may="-" must-not="P,V,M" may-encrypt="-">
635 <data type="Unsigned32"/>
636 </avp>
637
638 <avp name="Host-IP-Address" code="257" must="M" may="P" must-not="V" may-encrypt="-">
639 <data type="Address"/>
640 </avp>
641
642 <avp name="Inband-Security-Id" code="299" must="M" may="P" must-not="V" may-encrypt="-">
643 <data type="Unsigned32"/>
644 </avp>
645
646 <avp name="Multi-Round-Time-Out" code="272" must="M" may="P" must-not="V" may-encrypt="Y">
647 <data type="Unsigned32"/>
648 </avp>
649
650 <avp name="Origin-Host" code="264" must="M" may="P" must-not="V" may-encrypt="-">
651 <data type="DiameterIdentity"/>
652 </avp>
653
654 <avp name="Origin-Realm" code="296" must="M" may="P" must-not="V" may-encrypt="-">
655 <data type="DiameterIdentity"/>
656 </avp>
657
658 <avp name="Origin-State-Id" code="278" must="M" may="P" must-not="V" may-encrypt="-">
659 <data type="Unsigned32"/>
660 </avp>
661
662 <avp name="Product-Name" code="269" must="-" may="-" must-not="P,V,M" may-encrypt="-">
663 <data type="UTF8String"/>
664 </avp>
665
666 <avp name="Proxy-Host" code="280" must="M" may="-" must-not="P,V" may-encrypt="-">
667 <data type="DiameterIdentity"/>
668 </avp>
669
670 <avp name="Proxy-Info" code="284" must="M" may="-" must-not="P,V" may-encrypt="-">
671 <data type="Grouped">
672 <rule avp="Proxy-Host" required="true" max="1"/>
673 <rule avp="Proxy-State" required="true" max="1"/>
674 </data>
675 </avp>
676
677 <avp name="Proxy-State" code="33" must="M" may="-" must-not="P,V" may-encrypt="-">
678 <data type="OctetString"/>
679 </avp>
680
681 <avp name="Redirect-Host" code="292" must="M" may="P" must-not="V" may-encrypt="-">
682 <data type="DiameterURI"/>
683 </avp>
684
685 <avp name="Redirect-Host-Usage" code="261" must="M" may="P" must-not="V" may-encrypt="-">
686 <data type="Enumerated">
687 <item code="0" name="DONT_CACHE"/>
688 <item code="1" name="ALL_SESSION"/>
689 <item code="2" name="ALL_REALM"/>
690 <item code="3" name="REALM_AND_APPLICATION"/>
691 <item code="4" name="ALL_APPLICATION"/>
692 <item code="5" name="ALL_HOST"/>
693 <item code="6" name="ALL_USER"/>
694 </data>
695 </avp>
696
697 <avp name="Redirect-Max-Cache-Time" code="262" must="M" may="P" must-not="V" may-encrypt="-">
698 <data type="Unsigned32"/>
699 </avp>
700
701 <avp name="Result-Code" code="268" must="M" may="P" must-not="V" may-encrypt="-">
702 <data type="Unsigned32"/>
703 </avp>
704
705 <avp name="Route-Record" code="282" must="M" may="-" must-not="P,V" may-encrypt="-">
706 <data type="DiameterIdentity"/>
707 </avp>
708
709 <avp name="Session-Id" code="263" must="M" may="P" must-not="V" may-encrypt="Y">
710 <data type="UTF8String"/>
711 </avp>
712
713 <avp name="Session-Timeout" code="27" must="M" may="P" must-not="V" may-encrypt="-">
714 <data type="Unsigned32"/>
715 </avp>
716
717 <avp name="Session-Binding" code="270" must="M" may="P" must-not="V" may-encrypt="Y">
718 <data type="Unsigned32"/>
719 </avp>
720
721 <avp name="Session-Server-Failover" code="271" must="M" may="P" must-not="V" may-encrypt="Y">
722 <data type="Enumerated">
723 <item code="0" name="REFUSE_SERVICE"/>
724 <item code="1" name="TRY_AGAIN"/>
725 <item code="2" name="ALLOW_SERVICE"/>
726 <item code="3" name="TRY_AGAIN_ALLOW_SERVICE"/>
727 </data>
728 </avp>
729
730 <avp name="Supported-Vendor-Id" code="265" must="M" may="P" must-not="V" may-encrypt="-">
731 <data type="Unsigned32"/>
732 </avp>
733
734 <avp name="Termination-Cause" code="295" must="M" may="P" must-not="V" may-encrypt="-">
735 <data type="Enumerated">
736 <item code="1" name="DIAMETER_LOGOUT"/>
737 <item code="2" name="DIAMETER_SERVICE_NOT_PROVIDED"/>
738 <item code="3" name="DIAMETER_BAD_ANSWER"/>
739 <item code="4" name="DIAMETER_ADMINISTRATIVE"/>
740 <item code="5" name="DIAMETER_LINK_BROKEN"/>
741 <item code="6" name="DIAMETER_AUTH_EXPIRED"/>
742 <item code="7" name="DIAMETER_USER_MOVED"/>
743 <item code="8" name="DIAMETER_SESSION_TIMEOUT"/>
744 </data>
745 </avp>
746
747 <avp name="User-Name" code="1" must="M" may="P" must-not="V" may-encrypt="Y">
748 <data type="UTF8String"/>
749 </avp>
750
751 <avp name="Vendor-Id" code="266" must="M" may="P" must-not="V" may-encrypt="-">
752 <data type="Unsigned32"/>
753 </avp>
754
755 <avp name="Vendor-Specific-Application-Id" code="260" must="M" may="P" must-not="V" may-encrypt="-">
756 <data type="Grouped">
757 <rule avp="Vendor-Id" required="false" max="1"/>
758 <rule avp="Auth-Application-Id" required="true" max="1"/>
759 <rule avp="Acct-Application-Id" required="true" max="1"/>
760 </data>
761 </avp>
762
763 <!-- IETF RFC 7683 - https://tools.ietf.org/html/rfc7683 -->
764 <avp name="OC-Supported-Features" code="621" must-not="V">
765 <data type="Grouped">
766 <rule avp="OC-Feature-Vector" required="false"/>
767 <rule avp="AVP" required="false"/>
768 </data>
769 </avp>
770
771 <avp name="OC-Feature-Vector" code="622" must-not="V">
772 <data type="Unsigned64"/>
773 </avp>
774
775 <avp name="OC-OLR" code="623" must-not="V">
776 <data type="Grouped">
777 <rule avp="OC-Sequence-Number" required="true" max="1"/>
778 <rule avp="OC-Report-Type" required="true" max="1"/>
779 <rule avp="OC-Reduction-Percentage" required="false" max="1"/>
780 <rule avp="OC-Validity-Duration" required="false" max="1"/>
781 <rule avp="AVP" required="false"/>
782 </data>
783 </avp>
784
785 <avp name="OC-Sequence-Number" code="624" must-not="V">
786 <data type="Unsigned64"/>
787 </avp>
788
789 <avp name="OC-Validity-Duration" code="625" must-not="V">
790 <data type="Unsigned32"/>
791 </avp>
792
793 <avp name="OC-Report-Type" code="626" must-not="V">
794 <data type="Enumerated">
795 <item code="0" name="HOST_REPORT"/>
796 <item code="1" name="REALM_REPORT"/>
797 </data>
798 </avp>
799
800 <avp name="OC-Reduction-Percentage" code="627" must-not="V">
801 <data type="Unsigned32"/>
802 </avp>
803
804 <!-- IETF RFC 7944 - https://tools.ietf.org/html/rfc7944 -->
805 <avp name="DRMP" code="301" must-not="V">
806 <data type="Enumerated">
807 <item code="0" name="PRIORITY_0"/>
808 <item code="1" name="PRIORITY_1"/>
809 <item code="2" name="PRIORITY_2"/>
810 <item code="3" name="PRIORITY_3"/>
811 <item code="4" name="PRIORITY_4"/>
812 <item code="5" name="PRIORITY_5"/>
813 <item code="6" name="PRIORITY_6"/>
814 <item code="7" name="PRIORITY_7"/>
815 <item code="8" name="PRIORITY_8"/>
816 <item code="9" name="PRIORITY_9"/>
817 <item code="10" name="PRIORITY_10"/>
818 <item code="11" name="PRIORITY_11"/>
819 <item code="12" name="PRIORITY_12"/>
820 <item code="13" name="PRIORITY_13"/>
821 <item code="14" name="PRIORITY_14"/>
822 <item code="15" name="PRIORITY_15"/>
823 </data>
824 </avp>
825
826 <avp name="CC-Request-Number" code="415" must="M" may="P" must-not="V" may-encrypt="Y">
827 <!-- http://tools.ietf.org/html/rfc4006#section-8.2 -->
828 <data type="Unsigned32"/>
829 </avp>
830
831 <avp name="Service-Information" code="873" must="V,M" may="P" must-not="-" may-encrypt="N" vendor-id="10415">
832 <data type="Grouped">
833 <rule avp="Subscription-Id" required="false"/>
834 <rule avp="AoC-Information" required="false" max="1"/>
835 <rule avp="PS-Information" required="false" max="1"/>
836 <rule avp="IMS-Information" required="false" max="1"/>
837 <rule avp="MMS-Information" required="false" max="1"/>
838 <rule avp="LCS-Information" required="false" max="1"/>
839 <rule avp="PoC-Information" required="false" max="1"/>
840 <rule avp="MBMS-Information" required="false" max="1"/>
841 <rule avp="SMS-Information" required="false" max="1"/>
842 <rule avp="VCS-Information" required="false" max="1"/>
843 <rule avp="MMTel-Information" required="false" max="1"/>
844 <rule avp="Service-Generic-Information" required="false" max="1"/>
845 <rule avp="IM-Information" required="false" max="1"/>
846 <rule avp="DCD-Information" required="false" max="1"/>
847 </data>
848 </avp>
849
850 <avp name="PS-Information" code="874" must="V,M" may="P" must-not="-" may-encrypt="N" vendor-id="10415">
851 <data type="Grouped">
852 <rule avp="TGPP-Charging-Id" required="false" max="1"/>
853 <rule avp="PDN-Connection-Charging-Id" required="false" max="1"/>
854 <rule avp="Node-Id" required="false" max="1"/>
855 <rule avp="TGPP-PDP-Type" required="false" max="1"/>
856 <rule avp="PDP-Address" required="false"/>
857 <rule avp="PDP-Address-Prefix-Length" required="false" max="1"/>
858 <rule avp="Dynamic-Address-Flag" required="false" max="1"/>
859 <rule avp="Dynamic-Address-Flag-Extension" required="false" max="1"/>
860 <rule avp="QoS-Information" required="false" max="1"/>
861 <rule avp="SGSN-Address" required="false"/>
862 <rule avp="GGSN-Address" required="false"/>
863 <rule avp="TDF-IP-Address" required="false"/>
864 <rule avp="SGW-Address" required="false"/>
865 <rule avp="ePDG-Address" required="false"/>
866 <rule avp="CG-Address" required="false" max="1"/>
867 <rule avp="Serving-Node-Type" required="false" max="1"/>
868 <rule avp="SGW-Change" required="false" max="1"/>
869 <rule avp="TGPP-IMSI-MCC-MNC" required="false" max="1"/>
870 <rule avp="IMSI-Unauthenticated-Flag" required="false" max="1"/>
871 <rule avp="TGPP-GGSN-MCC-MNC" required="false" max="1"/>
872 <rule avp="TGPP-NSAPI" required="false" max="1"/>
873 <rule avp="Called-Station-Id" required="false" max="1"/>
874 <rule avp="TGPP-Session-Stop-Indicator" required="false" max="1"/>
875 <rule avp="TGPP-Selection-Mode" required="false" max="1"/>
876 <rule avp="TGPP-Charging-Characteristics" required="false" max="1"/>
877 <rule avp="Charging-Characteristics-Selection-Mode" required="false" max="1"/>
878 <rule avp="TGPP-SGSN-MCC-MNC" required="false" max="1"/>
879 <rule avp="TGPP-MS-TimeZone" required="false" max="1"/>
880 <rule avp="Charging-Rule-Base-Name" required="false" max="1"/>
881 <rule avp="ADC-Rule-Base-Name" required="false" max="1"/>
882 <rule avp="TGPP-User-Location-Info" required="false" max="1"/>
883 <rule avp="User-Location-Info-Time" required="false" max="1"/>
884 <rule avp="User-CSG-Information" required="false" max="1"/>
885 <rule avp="Presence-Reporting-Area-Information" required="false" max="1"/>
886 <rule avp="TGPP2-BSID" required="false" max="1"/>
887 <rule avp="TWAN-User-Location-Info" required="false" max="1"/>
888 <rule avp="TGPP-RAT-Type" required="false" max="1"/>
889 <rule avp="PS-Furnish-Charging-Information" required="false" max="1"/>
890 <rule avp="PDP-Context-Type" required="false" max="1"/>
891 <rule avp="Offline-Charging" required="false" max="1"/>
892 <rule avp="Traffic-Data-Volumes" required="false"/>
893 <rule avp="Service-Data-Container" required="false"/>
894 <rule avp="User-Equipment-Info" required="false" max="1"/>
895 <rule avp="Terminal-Information" required="false" max="1"/>
896 <rule avp="Start-Time" required="false" max="1"/>
897 <rule avp="Stop-Time" required="false" max="1"/>
898 <rule avp="Change-Condition" required="false" max="1"/>
899 <rule avp="Diagnostics" required="false" max="1"/>
900 <rule avp="Low-Priority-Indicator" required="false" max="1"/>
901 <rule avp="MME-Number-for-MT-SMS" required="false" max="1"/>
902 <rule avp="MME-Name" required="false" max="1"/>
903 <rule avp="MME-Realm" required="false" max="1"/>
904 <rule avp="Logical-Access-Id" required="false" max="1"/>
905 <rule avp="Physical-Access-Id" required="false" max="1"/>
906 <rule avp="Fixed-User-Location-Info" required="false" max="1"/>
907 <rule avp="CN-Operator-Selection-Entity" required="false" max="1"/>
908 </data>
909 </avp>
910
911 <avp name="Called-Station-Id" code="30" must="M" may="-" must-not="V" may-encrypt="Y">
912 <data type="UTF8String"/>
913 </avp>
914
915 <avp name="CC-Correlation-Id" code="411" must="-" may="P,M" must-not="V" may-encrypt="Y">
916 <!-- http://tools.ietf.org/html/rfc4006#section-8.1 -->
917 <data type="OctetString"/>
918 </avp>
919
920 <avp name="CC-Input-Octets" code="412" must="M" may="P" must-not="V" may-encrypt="Y">
921 <!-- http://tools.ietf.org/html/rfc4006#section-8.24 -->
922 <data type="Unsigned64"/>
923 </avp>
924
925 <avp name="CC-Money" code="413" must="M" may="P" must-not="V" may-encrypt="Y">
926 <!-- http://tools.ietf.org/html/rfc4006#section-8.22 -->
927 <data type="Grouped">
928 <rule avp="Unit-Value" required="true" max="1"/>
929 <rule avp="Currency-Code" required="true" max="1"/>
930 </data>
931 </avp>
932
933 <avp name="CC-Output-Octets" code="414" must="M" may="P" must-not="V" may-encrypt="Y">
934 <!-- http://tools.ietf.org/html/rfc4006#section-8.25 -->
935 <data type="Unsigned64"/>
936 </avp>
937
938 <avp name="CC-Request-Number" code="415" must="M" may="P" must-not="V" may-encrypt="Y">
939 <!-- http://tools.ietf.org/html/rfc4006#section-8.2 -->
940 <data type="Unsigned32"/>
941 </avp>
942
943 <avp name="CC-Request-Type" code="416" must="M" may="P" must-not="V" may-encrypt="Y">
944 <!-- http://tools.ietf.org/html/rfc4006#section-8.3 -->
945 <data type="Enumerated">
946 <item code="1" name="INITIAL_REQUEST"/>
947 <item code="2" name="UPDATE_REQUEST"/>
948 <item code="3" name="TERMINATION_REQUEST"/>
949 </data>
950 </avp>
951
952 <avp name="CC-Service-Specific-Units" code="417" must="M" may="P" must-not="V" may-encrypt="Y">
953 <data type="Unsigned64"/>
954 </avp>
955
956 <avp name="CC-Session-Failover" code="418" must="M" may="P" must-not="V" may-encrypt="Y">
957 <!-- http://tools.ietf.org/html/rfc4006#section-8.4 -->
958 <data type="Enumerated">
959 <item code="0" name="FAILOVER_NOT_SUPPORTED"/>
960 <item code="1" name="FAILOVER_SUPPORTED"/>
961 </data>
962 </avp>
963
964 <avp name="CC-Sub-Session-Id" code="419" must="M" may="P" must-not="V" may-encrypt="Y">
965 <!-- http://tools.ietf.org/html/rfc4006#section-8.5 -->
966 <data type="Unsigned64"/>
967 </avp>
968
969 <avp name="CC-Time" code="420" must="M" may="P" must-not="V" may-encrypt="Y">
970 <!-- http://tools.ietf.org/html/rfc4006#section-8.21 -->
971 <data type="Unsigned32"/>
972 </avp>
973
974 <avp name="CC-Total-Octets" code="421" must="M" may="P" must-not="V" may-encrypt="Y">
975 <!-- http://tools.ietf.org/html/rfc4006#section-8.23 -->
976 <data type="Unsigned64"/>
977 </avp>
978
979 <avp name="CC-Unit-Type" code="454" must="M" may="P" must-not="V" may-encrypt="Y">
980 <!-- http://tools.ietf.org/html/rfc4006#section-8.32 -->
981 <data type="Enumerated">
982 <item code="0" name="TIME"/>
983 <item code="1" name="MONEY"/>
984 <item code="2" name="TOTAL-OCTETS"/>
985 <item code="3" name="INPUT-OCTETS"/>
986 <item code="4" name="OUTPUT-OCTETS"/>
987 <item code="5" name="SERVICE-SPECIFIC-UNITS"/>
988 </data>
989 </avp>
990
991 <avp name="Check-Balance-Result" code="422" must="M" may="P" must-not="V" may-encrypt="Y">
992 <!-- http://tools.ietf.org/html/rfc4006#section-8.6 -->
993 <data type="Enumerated">
994 <item code="0" name="ENOUGH_CREDIT"/>
995 <item code="1" name="NO_CREDIT"/>
996 </data>
997 </avp>
998
999 <avp name="Cost-Information" code="423" must="M" may="P" must-not="V" may-encrypt="Y">
1000 <!-- http://tools.ietf.org/html/rfc4006#section-8.7 -->
1001 <data type="Grouped">
1002 <rule avp="Unit-Value" required="true" max="1"/>
1003 <rule avp="Currency-Code" required="true" max="1"/>
1004 <rule avp="Cost-Unit" required="true" max="1"/>
1005 </data>
1006 </avp>
1007
1008 <avp name="Cost-Unit" code="424" must="M" may="P" must-not="V" may-encrypt="Y">
1009 <!-- http://tools.ietf.org/html/rfc4006#section-8.12 -->
1010 <data type="UTF8String"/>
1011 </avp>
1012
1013 <avp name="Credit-Control" code="426" must="M" may="P" must-not="V" may-encrypt="Y">
1014 <!-- http://tools.ietf.org/html/rfc4006#section-8.13 -->
1015 <data type="Enumerated">
1016 <item code="0" name="CREDIT_AUTHORIZATION"/>
1017 <item code="1" name="RE_AUTHORIZATION"/>
1018 </data>
1019 </avp>
1020
1021 <avp name="Credit-Control-Failure-Handling" code="427" must="M" may="P" must-not="V" may-encrypt="Y">
1022 <!-- http://tools.ietf.org/html/rfc4006#section-8.14 -->
1023 <data type="Enumerated">
1024 <item code="0" name="TERMINATE"/>
1025 <item code="1" name="CONTINUE"/>
1026 <item code="2" name="RETRY_AND_TERMINATE"/>
1027 </data>
1028 </avp>
1029
1030 <avp name="Currency-Code" code="425" must="M" may="P" must-not="V" may-encrypt="Y">
1031 <!-- http://tools.ietf.org/html/rfc4006#section-8.11 -->
1032 <data type="Unsigned32"/>
1033 </avp>
1034
1035 <avp name="Direct-Debiting-Failure-Handling" code="428" must="M" may="P" must-not="V" may-encrypt="Y">
1036 <!-- http://tools.ietf.org/html/rfc4006#section-8.15 -->
1037 <data type="Enumerated">
1038 <item code="0" name="TERMINATE_OR_BUFFER"/>
1039 <item code="1" name="CONTINUE"/>
1040 </data>
1041 </avp>
1042
1043 <avp name="Exponent" code="429" must="M" may="P" must-not="V" may-encrypt="Y">
1044 <!-- http://tools.ietf.org/html/rfc4006#section-8.9 -->
1045 <data type="Integer32"/>
1046 </avp>
1047
1048 <avp name="Final-Unit-Action" code="449" must="M" may="P" must-not="V" may-encrypt="Y">
1049 <!-- http://tools.ietf.org/html/rfc4006#section-8.35 -->
1050 <data type="Enumerated">
1051 <item code="0" name="TERMINATE"/>
1052 <item code="1" name="REDIRECT"/>
1053 <item code="2" name="RESTRICT_ACCESS"/>
1054 </data>
1055 </avp>
1056
1057 <avp name="Final-Unit-Indication" code="430" must="M" may="P" must-not="V" may-encrypt="Y">
1058 <!-- http://tools.ietf.org/html/rfc4006#section-8.34 -->
1059 <data type="Grouped">
1060 <rule avp="Final-Unit-Action" required="true" max="1"/>
1061 <rule avp="Restriction-Filter-Rule" required="false" max="1"/>
1062 <rule avp="Filter-Id" required="false" max="1"/>
1063 <rule avp="Redirect-Server" required="false" max="1"/>
1064 </data>
1065 </avp>
1066
1067 <avp name="Granted-Service-Unit" code="431" must="M" may="P" must-not="V" may-encrypt="Y">
1068 <!-- http://tools.ietf.org/html/rfc4006#section-8.17 -->
1069 <data type="Grouped">
1070 <rule avp="Tariff-Time-Change" required="false" max="1"/>
1071 <rule avp="CC-Time" required="false" max="1"/>
1072 <rule avp="CC-Money" required="false" max="1"/>
1073 <rule avp="CC-Total-Octets" required="false" max="1"/>
1074 <rule avp="CC-Input-Octets" required="false" max="1"/>
1075 <rule avp="CC-Output-Octets" required="false" max="1"/>
1076 <rule avp="CC-Service-Specific-Units" required="false" max="1"/>
1077 <!-- *[ AVP ]-->
1078 </data>
1079 </avp>
1080
1081 <avp name="G-S-U-Pool-Identifier" code="453" must="M" may="P" must-not="V" may-encrypt="Y">
1082 <!-- http://tools.ietf.org/html/rfc4006#section-8.31 -->
1083 <data type="Unsigned32"/>
1084 </avp>
1085
1086 <avp name="G-S-U-Pool-Reference" code="457" must="M" may="P" must-not="V" may-encrypt="Y">
1087 <!-- http://tools.ietf.org/html/rfc4006#section-8.30 -->
1088 <data type="Grouped">
1089 <rule avp="G-S-U-Pool-Identifier" required="true" max="1"/>
1090 <rule avp="CC-Unit-Type" required="true" max="1"/>
1091 <rule avp="Unit-Value" required="true" max="1"/>
1092 </data>
1093 </avp>
1094
1095 <avp name="Multiple-Services-Credit-Control" code="456" must="M" may="P" must-not="V" may-encrypt="Y">
1096 <!-- http://tools.ietf.org/html/rfc4006#section-8.16 -->
1097 <data type="Grouped">
1098 <rule avp="Granted-Service-Unit" required="false" max="1"/>
1099 <rule avp="Requested-Service-Unit" required="false" max="1"/>
1100 <rule avp="Used-Service-Unit" required="false" max="1"/>
1101 <rule avp="Tariff-Change-Usage" required="false" max="1"/>
1102 <rule avp="Service-Identifier" required="false" max="1"/>
1103 <rule avp="Rating-Group" required="false" max="1"/>
1104 <rule avp="G-S-U-Pool-Reference" required="false" max="1"/>
1105 <rule avp="Validity-Time" required="false" max="1"/>
1106 <rule avp="Result-Code" required="false" max="1"/>
1107 <rule avp="Final-Unit-Indication" required="false" max="1"/>
1108 <!-- *[ AVP ]-->
1109 </data>
1110 </avp>
1111
1112 <avp name="Multiple-Services-Indicator" code="455" must="M" may="P" must-not="V" may-encrypt="Y">
1113 <!-- http://tools.ietf.org/html/rfc4006#section-8.40 -->
1114 <data type="Enumerated">
1115 <item code="0" name="MULTIPLE_SERVICES_NOT_SUPPORTED"/>
1116 <item code="1" name="MULTIPLE_SERVICES_SUPPORTED"/>
1117 </data>
1118 </avp>
1119
1120 <avp name="Rating-Group" code="432" must="M" may="P" must-not="V" may-encrypt="Y">
1121 <!-- http://tools.ietf.org/html/rfc4006#section-8.29 -->
1122 <data type="Unsigned32"/>
1123 </avp>
1124
1125 <avp name="Redirect-Address-Type" code="433" must="M" may="P" must-not="V" may-encrypt="Y">
1126 <!-- http://tools.ietf.org/html/rfc4006#section-8.38 -->
1127 <data type="Enumerated">
1128 <item code="0" name="IPv4 Address"/>
1129 <item code="1" name="IPv6 Address"/>
1130 <item code="2" name="URL"/>
1131 <item code="3" name="SIP URI"/>
1132 </data>
1133 </avp>
1134
1135 <avp name="Redirect-Server" code="434" must="M" may="P" must-not="V" may-encrypt="Y">
1136 <!-- http://tools.ietf.org/html/rfc4006#section-8.37 -->
1137 <data type="Grouped">
1138 <rule avp="Redirect-Address-Type" required="true" max="1"/>
1139 <rule avp="Redirect-Server-Address" required="true" max="1"/>
1140 </data>
1141 </avp>
1142
1143 <avp name="Redirect-Server-Address" code="435" must="M" may="P" must-not="V" may-encrypt="Y">
1144 <!-- http://tools.ietf.org/html/rfc4006#section-8.39 -->
1145 <data type="UTF8String"/>
1146 </avp>
1147
1148 <avp name="Requested-Action" code="436" must="M" may="P" must-not="V" may-encrypt="Y">
1149 <!-- http://tools.ietf.org/html/rfc4006#section-8.41 -->
1150 <data type="Enumerated">
1151 <item code="0" name="DIRECT_DEBITING"/>
1152 <item code="1" name="REFUND_ACCOUNT"/>
1153 <item code="2" name="CHECK_BALANCE"/>
1154 <item code="3" name="PRICE_ENQUIRY"/>
1155 </data>
1156 </avp>
1157
1158 <avp name="Requested-Service-Unit" code="437" must="M" may="P" must-not="V" may-encrypt="Y">
1159 <!-- http://tools.ietf.org/html/rfc4006#section-8.18-->
1160 <data type="Grouped">
1161 <rule avp="CC-Time" required="false" max="1"/>
1162 <rule avp="CC-Money" required="false" max="1"/>
1163 <rule avp="CC-Total-Octets" required="false" max="1"/>
1164 <rule avp="CC-Input-Octets" required="false" max="1"/>
1165 <rule avp="CC-Output-Octets" required="false" max="1"/>
1166 <rule avp="CC-Service-Specific-Units" required="false" max="1"/>
1167 <!-- *[ AVP ]-->
1168 </data>
1169 </avp>
1170
1171 <avp name="Restriction-Filter-Rule" code="438" must="M" may="P" must-not="V" may-encrypt="Y">
1172 <!-- http://tools.ietf.org/html/rfc4006#section-8.36-->
1173 <data type="IPFilterRule"/>
1174 </avp>
1175
1176 <avp name="Service-Context-Id" code="461" must="M" may="P" must-not="V" may-encrypt="Y">
1177 <!-- http://tools.ietf.org/html/rfc4006#section-8.42-->
1178 <data type="UTF8String"/>
1179 </avp>
1180
1181 <avp name="Service-Identifier" code="439" must="M" may="P" must-not="V" may-encrypt="Y">
1182 <!-- http://tools.ietf.org/html/rfc4006#section-8.28-->
1183 <data type="Unsigned32"/>
1184 </avp>
1185
1186 <avp name="Service-Parameter-Info" code="440" must="-" may="P,M" must-not="V" may-encrypt="Y">
1187 <!-- http://tools.ietf.org/html/rfc4006#section-8.43-->
1188 <data type="Grouped">
1189 <rule avp="Service-Parameter-Type" required="true" max="1"/>
1190 <rule avp="Service-Parameter-Value" required="true" max="1"/>
1191 </data>
1192 </avp>
1193
1194 <avp name="Service-Parameter-Type" code="441" must="-" may="P,M" must-not="V" may-encrypt="Y">
1195 <!-- http://tools.ietf.org/html/rfc4006#section-8.44-->
1196 <data type="Unsigned32"/>
1197 </avp>
1198
1199 <avp name="Service-Parameter-Value" code="442" must="-" may="P,M" must-not="V" may-encrypt="Y">
1200 <!-- http://tools.ietf.org/html/rfc4006#section-8.45-->
1201 <data type="OctetString"/>
1202 </avp>
1203
1204 <avp name="Subscription-Id" code="443" must="M" may="P" must-not="V" may-encrypt="Y">
1205 <!-- http://tools.ietf.org/html/rfc4006#section-8.46-->
1206 <data type="Grouped">
1207 <rule avp="Subscription-Id-Type" required="true" max="1"/>
1208 <rule avp="Subscription-Id-Data" required="true" max="1"/>
1209 </data>
1210 </avp>
1211
1212 <avp name="Subscription-Id-Data" code="444" must="M" may="P" must-not="V" may-encrypt="Y">
1213 <!-- http://tools.ietf.org/html/rfc4006#section-8.48-->
1214 <data type="UTF8String"/>
1215 </avp>
1216
1217 <avp name="Subscription-Id-Type" code="450" must="M" may="P" must-not="V" may-encrypt="Y">
1218 <!-- http://tools.ietf.org/html/rfc4006#section-8.47-->
1219 <data type="Enumerated">
1220 <item code="0" name="END_USER_E164"/>
1221 <item code="1" name="END_USER_IMSI"/>
1222 <item code="2" name="END_USER_SIP_URI"/>
1223 <item code="3" name="END_USER_NAI"/>
1224 </data>
1225 </avp>
1226
1227 <avp name="Tariff-Change-Usage" code="452" must="M" may="P" must-not="V" may-encrypt="Y">
1228 <!-- http://tools.ietf.org/html/rfc4006#section-8.27-->
1229 <data type="Enumerated">
1230 <item code="0" name="UNIT_BEFORE_TARIFF_CHANGE"/>
1231 <item code="1" name="UNIT_AFTER_TARIFF_CHANGE"/>
1232 <item code="2" name="UNIT_INDETERMINATE"/>
1233 </data>
1234 </avp>
1235
1236 <avp name="Tariff-Time-Change" code="451" must="M" may="P" must-not="V" may-encrypt="Y">
1237 <!-- http://tools.ietf.org/html/rfc4006#section-8.20-->
1238 <data type="Time"/>
1239 </avp>
1240
1241 <avp name="Unit-Value" code="445" must="M" may="P" must-not="V" may-encrypt="Y">
1242 <!-- http://tools.ietf.org/html/rfc4006#section-8.8-->
1243 <data type="Grouped">
1244 <rule avp="Value-Digits" required="true" max="1"/>
1245 <rule avp="Exponent" required="true" max="1"/>
1246 </data>
1247 </avp>
1248
1249 <avp name="Used-Service-Unit" code="446" must="M" may="P" must-not="V" may-encrypt="Y">
1250 <!-- http://tools.ietf.org/html/rfc4006#section-8.19-->
1251 <data type="Grouped">
1252 <rule avp="Tariff-Change-Usage" required="false" max="1"/>
1253 <rule avp="CC-Time" required="false" max="1"/>
1254 <rule avp="CC-Money" required="false" max="1"/>
1255 <rule avp="CC-Total-Octets" required="false" max="1"/>
1256 <rule avp="CC-Input-Octets" required="false" max="1"/>
1257 <rule avp="CC-Output-Octets" required="false" max="1"/>
1258 <rule avp="CC-Service-Specific-Units" required="false" max="1"/>
1259 <!-- *[ AVP ]-->
1260 </data>
1261 </avp>
1262
1263 <avp name="User-Equipment-Info" code="458" must="-" may="P,M" must-not="V" may-encrypt="Y">
1264 <!-- http://tools.ietf.org/html/rfc4006#section-8.49-->
1265 <data type="Grouped">
1266 <rule avp="User-Equipment-Info-Type" required="true" max="1"/>
1267 <rule avp="User-Equipment-Info-Value" required="true" max="1"/>
1268 </data>
1269 </avp>
1270
1271 <avp name="User-Equipment-Info-Type" code="459" must="-" may="P,M" must-not="V" may-encrypt="Y">
1272 <!-- http://tools.ietf.org/html/rfc4006#section-8.50-->
1273 <data type="Enumerated">
1274 <item code="0" name="IMEISV"/>
1275 <item code="1" name="MAC"/>
1276 <item code="2" name="EUI64"/>
1277 <item code="3" name="MODIFIED_EUI64"/>
1278 </data>
1279 </avp>
1280
1281 <avp name="User-Equipment-Info-Value" code="460" must="-" may="P,M" must-not="V" may-encrypt="Y">
1282 <!-- http://tools.ietf.org/html/rfc4006#section-8.51-->
1283 <data type="OctetString"/>
1284 </avp>
1285
1286 <avp name="Value-Digits" code="447" must="M" may="P" must-not="V" may-encrypt="Y">
1287 <!-- http://tools.ietf.org/html/rfc4006#section-8.10-->
1288 <data type="Integer64"/>
1289 </avp>
1290
1291 <avp name="Validity-Time" code="448" must="M" may="P" must-not="V" may-encrypt="Y">
1292 <!-- http://tools.ietf.org/html/rfc4006#section-8.33-->
1293 <data type="Unsigned32"/>
1294 </avp>
1295
1296 <avp name="Timezone-Offset" code="571" vendor-id="10415" must="V" may-encrypt="Y">
1297 <data type="Integer32"/>
1298 </avp>
1299 </application>
1300</diameter>
1301 "#;
1302 xml
1303 };
1304}