changeset 1227:34c2ae08176f

Add rules.
author Thomas Klausner <tk@giga.or.at>
date Wed, 17 Jul 2013 18:48:53 +0200
parents e59d76289e18
children e5010975da35
files extensions/dict_dcca_starent/dict_dcca_starent.c
diffstat 1 files changed, 38 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/extensions/dict_dcca_starent/dict_dcca_starent.c	Wed Jul 17 18:48:43 2013 +0200
+++ b/extensions/dict_dcca_starent/dict_dcca_starent.c	Wed Jul 17 18:48:53 2013 +0200
@@ -21,6 +21,7 @@
 
 #define RULE_ORDER( _position ) ((((_position) == RULE_FIXED_HEAD) || ((_position) == RULE_FIXED_TAIL)) ? 1 : 0 )
 
+/* Attention! This version of the macro uses AVP_BY_NAME_ALL_VENDORS, in contrast to most other copies! */
 #define PARSE_loc_rules( _rulearray, _parent) {								\
 	int __ar;											\
 	for (__ar=0; __ar < sizeof(_rulearray) / sizeof((_rulearray)[0]); __ar++) {			\
@@ -33,7 +34,7 @@
 		CHECK_FCT(  fd_dict_search( 								\
 			fd_g_config->cnf_dict,								\
 			DICT_AVP, 									\
-			AVP_BY_NAME, 									\
+			AVP_BY_NAME_ALL_VENDORS, 							\
 			(_rulearray)[__ar].avp_name, 							\
 			&__data.rule_avp, 0 ) );							\
 		if ( !__data.rule_avp ) {								\
@@ -282,6 +283,42 @@
 	};
 
 
+	/* Rules section */
+
+	/* SN-Total-Used-Service-Unit */
+	{
+		struct dict_object *rule_avp;
+		struct dict_avp_request vpa;
+		vpa.avp_vendor = 8164;
+		vpa.avp_name = "SN-Total-Used-Service-Unit";
+		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
+		struct local_rules_definition rules[] = {
+			{  "Tariff-Change-Usage",	RULE_OPTIONAL,	-1, 1 },
+			{  "CC-Time",	       		RULE_OPTIONAL,	-1, 1 },
+			{  "CC-Total-Octets",		RULE_OPTIONAL,	-1, 1 },
+			{  "CC-Input-Octets",		RULE_OPTIONAL,	-1, 1 },
+			{  "CC-Output-Octets",		RULE_OPTIONAL,	-1, 1 },
+			{  "CC-Service-Specific-Units",	RULE_OPTIONAL,	-1, 1 },
+			{  "Reporting-Reason",		RULE_OPTIONAL,	-1, 1 }
+		};
+		PARSE_loc_rules( rules, rule_avp );
+	}
+
+	/* SN-Usage-Monitoring-Control */
+	{
+		struct dict_object *rule_avp;
+		struct dict_avp_request vpa;
+		vpa.avp_vendor = 8164;
+		vpa.avp_name = "SN-Usage-Monitoring-Control";
+		CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp);
+		struct local_rules_definition rules[] = {
+			{  "SN-Monitoring-Key",		RULE_OPTIONAL,	-1, 1 },
+			{  "SN-Usage-Monitoring",	RULE_OPTIONAL,	-1, 1 },
+			{  "SN-Usage-Volume",		RULE_OPTIONAL,	-1, 1 },
+		};
+		PARSE_loc_rules( rules, rule_avp );
+	}
+
 	LOG_D( "Extension 'Dictionary definitions for DCCA Starent' initialized");
 	return 0;
 }
"Welcome to our mercurial repository"