# HG changeset patch # User Thomas Klausner # Date 1374079733 -7200 # Node ID 34c2ae08176fa8e7756a18548dbef5489fa14fbe # Parent e59d76289e1892e884cde7e14bdc48ee19088d6e Add rules. diff -r e59d76289e18 -r 34c2ae08176f extensions/dict_dcca_starent/dict_dcca_starent.c --- 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; }