Navigation


Changeset 1534:c83e60f28632 in freeDiameter


Ignore:
Timestamp:
Apr 20, 2020, 11:12:42 AM (4 years ago)
Author:
Luke Mewburn <luke@mewburn.net>
Branch:
default
Phase:
public
Message:

dict_dcca_3gpp: simplify rule creation

Refactor local_rules_definition to simplify rule creation
(to avoid c99 struct initialisers that result in long lines).

No change to generated rules.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/dict_dcca_3gpp/dict_dcca_3gpp.c

    r1532 r1534  
    9898
    9999struct local_rules_definition {
    100         struct dict_avp_request avp_vendor_plus_name;
     100        vendor_id_t             vendor;
     101        char *                  name;
    101102        enum rule_position      position;
    102103        int                     min;
     
    110111        int __ar;                                                                                       \
    111112        for (__ar=0; __ar < sizeof(_rulearray) / sizeof((_rulearray)[0]); __ar++) {                     \
     113                struct dict_avp_request __avp = {                                                       \
     114                        .avp_vendor = (_rulearray)[__ar].vendor,                                        \
     115                        .avp_name = (_rulearray)[__ar].name,                                            \
     116                };                                                                                      \
    112117                struct dict_rule_data __data = { NULL,                                                  \
    113118                        (_rulearray)[__ar].position,                                                    \
     
    120125                        DICT_AVP,                                                                       \
    121126                        AVP_BY_NAME_AND_VENDOR,                                                         \
    122                         &(_rulearray)[__ar].avp_vendor_plus_name,                                       \
     127                        &__avp,                                                                         \
    123128                        &__data.rule_avp, 0 ) );                                                        \
    124129                if ( !__data.rule_avp ) {                                                               \
    125                         LOG_E( "AVP Not found: '%s'", (_rulearray)[__ar].avp_vendor_plus_name.avp_name);                \
     130                        LOG_E( "AVP Not found: '%s'", __avp.avp_name);                                  \
    126131                        return ENOENT;                                                                  \
    127132                }                                                                                       \
    128133                CHECK_FCT_DO( fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &__data, _parent, NULL),   \
    129134                        {                                                                               \
    130                                 LOG_E( "Error on rule with AVP '%s'",                           \
    131                                             (_rulearray)[__ar].avp_vendor_plus_name.avp_name);          \
     135                                LOG_E( "Error on rule with AVP '%s'", __avp.avp_name);                  \
    132136                                return EINVAL;                                                          \
    133137                        } );                                                                            \
     
    360364                struct local_rules_definition rules[] =
    361365                        {
    362                                 { { .avp_vendor = 10415, .avp_name = "Priority-Level" }, RULE_REQUIRED, -1, 1 },
    363                                 { { .avp_vendor = 10415, .avp_name = "Pre-emption-Capability" }, RULE_OPTIONAL, -1, 1 },
    364                                 { { .avp_vendor = 10415, .avp_name = "Pre-emption-Vulnerability" }, RULE_OPTIONAL, -1, 1 },
     366                                { 10415, "Priority-Level",              RULE_REQUIRED, -1, 1 },
     367                                { 10415, "Pre-emption-Capability",      RULE_OPTIONAL, -1, 1 },
     368                                { 10415, "Pre-emption-Vulnerability",   RULE_OPTIONAL, -1, 1 },
    365369                        };
    366370                        PARSE_loc_rules(rules, rule_avp);
     
    375379                struct local_rules_definition rules[] =
    376380                        {
    377                                 { { .avp_vendor = 10415, .avp_name = "QoS-Class-Identifier" }, RULE_OPTIONAL, -1, 1 },
    378                                 { { .avp_vendor = 10415, .avp_name = "Max-Requested-Bandwidth-UL" }, RULE_OPTIONAL, -1, 1 },
    379                                 { { .avp_vendor = 10415, .avp_name = "Max-Requested-Bandwidth-DL" }, RULE_OPTIONAL, -1, 1 },
    380                                 { { .avp_vendor = 10415, .avp_name = "Guaranteed-Bitrate-UL" }, RULE_OPTIONAL, -1, 1 },
    381                                 { { .avp_vendor = 10415, .avp_name = "Guaranteed-Bitrate-DL" }, RULE_OPTIONAL, -1, 1 },
    382                                 { { .avp_vendor = 10415, .avp_name = "Bearer-Identifier" }, RULE_OPTIONAL, -1, 1 },
    383                                 { { .avp_vendor = 10415, .avp_name = "Allocation-Retention-Priority" }, RULE_OPTIONAL, -1, 1 },
    384                                 { { .avp_vendor = 10415, .avp_name = "APN-Aggregate-Max-Bitrate-UL" }, RULE_OPTIONAL, -1, 1 },
    385                                 { { .avp_vendor = 10415, .avp_name = "APN-Aggregate-Max-Bitrate-DL" }, RULE_OPTIONAL, -1, 1 },
     381                                { 10415, "QoS-Class-Identifier",                RULE_OPTIONAL, -1, 1 },
     382                                { 10415, "Max-Requested-Bandwidth-UL",          RULE_OPTIONAL, -1, 1 },
     383                                { 10415, "Max-Requested-Bandwidth-DL",          RULE_OPTIONAL, -1, 1 },
     384                                { 10415, "Guaranteed-Bitrate-UL",               RULE_OPTIONAL, -1, 1 },
     385                                { 10415, "Guaranteed-Bitrate-DL",               RULE_OPTIONAL, -1, 1 },
     386                                { 10415, "Bearer-Identifier",                   RULE_OPTIONAL, -1, 1 },
     387                                { 10415, "Allocation-Retention-Priority",       RULE_OPTIONAL, -1, 1 },
     388                                { 10415, "APN-Aggregate-Max-Bitrate-UL",        RULE_OPTIONAL, -1, 1 },
     389                                { 10415, "APN-Aggregate-Max-Bitrate-DL",        RULE_OPTIONAL, -1, 1 },
    386390                        };
    387391                        PARSE_loc_rules(rules, rule_avp);
     
    396400                struct local_rules_definition rules[] =
    397401                        {
    398                                 { { .avp_vendor = 10415, .avp_name = "AoC-Request-Type"}, RULE_OPTIONAL, -1, 1 },
    399                                 { { .avp_vendor = 10415, .avp_name = "Service-Information"}, RULE_OPTIONAL, -1, 1 },
     402                                { 10415, "AoC-Request-Type",            RULE_OPTIONAL, -1, 1 },
     403                                { 10415, "Service-Information",         RULE_OPTIONAL, -1, 1 },
    400404                        };
    401405                PARSE_loc_rules(rules, ccr);
     
    408412                struct local_rules_definition rules[] =
    409413                        {
    410                                 { { .avp_vendor = 10415, .avp_name = "Low-Balance-Indication"}, RULE_OPTIONAL, -1, 1 },
    411                                 { { .avp_vendor = 10415, .avp_name = "Remaining-Balance"}, RULE_OPTIONAL, -1, 1 },
    412                                 { { .avp_vendor = 10415, .avp_name = "Service-Information"}, RULE_OPTIONAL, -1, 1 },
     414                                { 10415, "Low-Balance-Indication",      RULE_OPTIONAL, -1, 1 },
     415                                { 10415, "Remaining-Balance",           RULE_OPTIONAL, -1, 1 },
     416                                { 10415, "Service-Information",         RULE_OPTIONAL, -1, 1 },
    413417                        };
    414418                PARSE_loc_rules(rules, ccr);
     
    423427                struct local_rules_definition rules[] =
    424428                        {
    425                                 { { .avp_vendor = 10415, .avp_name = "Domain-Name" }, RULE_OPTIONAL, -1, 1 },
    426                                 { { .avp_vendor = 10415, .avp_name = "3GPP-IMSI-MCC-MNC" }, RULE_OPTIONAL, -1, 1 },
     429                                { 10415, "Domain-Name",                 RULE_OPTIONAL, -1, 1 },
     430                                { 10415, "3GPP-IMSI-MCC-MNC",           RULE_OPTIONAL, -1, 1 },
    427431                        };
    428432                        PARSE_loc_rules(rules, rule_avp);
     
    437441                struct local_rules_definition rules[] =
    438442                        {
    439                                 { { .avp_vendor = 10415, .avp_name = "Application-Server" }, RULE_REQUIRED, -1, 1 },
    440                                 { { .avp_vendor = 10415, .avp_name = "Application-Provided-Called-Party-Address" }, RULE_OPTIONAL, -1, -1 },
     443                                { 10415, "Application-Server",                          RULE_REQUIRED, -1, 1 },
     444                                { 10415, "Application-Provided-Called-Party-Address",   RULE_OPTIONAL, -1, -1 },
    441445                        };
    442446                        PARSE_loc_rules(rules, rule_avp);
     
    451455                struct local_rules_definition rules[] =
    452456                        {
    453                                 { { .avp_vendor = 10415, .avp_name = "Interface-Id" }, RULE_OPTIONAL, -1, 1 },
    454                                 { { .avp_vendor = 10415, .avp_name = "Interface-Text" }, RULE_OPTIONAL, -1, 1 },
    455                                 { { .avp_vendor = 10415, .avp_name = "Interface-Port" }, RULE_OPTIONAL, -1, 1 },
    456                                 { { .avp_vendor = 10415, .avp_name = "Interface-Type" }, RULE_OPTIONAL, -1, 1 },
     457                                { 10415, "Interface-Id",                RULE_OPTIONAL, -1, 1 },
     458                                { 10415, "Interface-Text",              RULE_OPTIONAL, -1, 1 },
     459                                { 10415, "Interface-Port",              RULE_OPTIONAL, -1, 1 },
     460                                { 10415, "Interface-Type",              RULE_OPTIONAL, -1, 1 },
    457461                        };
    458462                        PARSE_loc_rules(rules, rule_avp);
     
    467471                struct local_rules_definition rules[] =
    468472                        {
    469                                 { { .avp_vendor = 10415, .avp_name = "Envelope-Start-Time" }, RULE_REQUIRED, -1, 1 },
    470                                 { { .avp_vendor = 10415, .avp_name = "Envelope-End-Time" }, RULE_OPTIONAL, -1, 1 },
    471                                 { { .avp_vendor = 0,     .avp_name = "CC-Total-Octets" }, RULE_REQUIRED, -1, 1 },
    472                                 { { .avp_vendor = 0,     .avp_name = "CC-Input-Octets" }, RULE_OPTIONAL, -1, 1 },
    473                                 { { .avp_vendor = 0,     .avp_name = "CC-Output-Octets" }, RULE_OPTIONAL, -1, 1 },
    474                                 { { .avp_vendor = 0,     .avp_name = "CC-Service-Specific-Units" }, RULE_OPTIONAL, -1, 1 },
     473                                { 10415, "Envelope-Start-Time",         RULE_REQUIRED, -1, 1 },
     474                                { 10415, "Envelope-End-Time",           RULE_OPTIONAL, -1, 1 },
     475                                { 0,     "CC-Total-Octets",             RULE_REQUIRED, -1, 1 },
     476                                { 0,     "CC-Input-Octets",             RULE_OPTIONAL, -1, 1 },
     477                                { 0,     "CC-Output-Octets",            RULE_OPTIONAL, -1, 1 },
     478                                { 0,     "CC-Service-Specific-Units",   RULE_OPTIONAL, -1, 1 },
    475479                        };
    476480                        PARSE_loc_rules(rules, rule_avp);
     
    485489                struct local_rules_definition rules[] =
    486490                        {
    487                                 { { .avp_vendor = 10415, .avp_name = "SIP-Method" }, RULE_OPTIONAL, -1, 1 },
    488                                 { { .avp_vendor = 10415, .avp_name = "Event" }, RULE_OPTIONAL, -1, 1 },
    489                                 { { .avp_vendor = 10415, .avp_name = "Expires" }, RULE_OPTIONAL, -1, 1 },
     491                                { 10415, "SIP-Method",          RULE_OPTIONAL, -1, 1 },
     492                                { 10415, "Event",               RULE_OPTIONAL, -1, 1 },
     493                                { 10415, "Expires",             RULE_OPTIONAL, -1, 1 },
    490494                        };
    491495                        PARSE_loc_rules(rules, rule_avp);
     
    500504                struct local_rules_definition rules[] =
    501505                        {
    502                                 { { .avp_vendor = 10415, .avp_name = "Event-Type" }, RULE_OPTIONAL, -1, 1 },
    503                                 { { .avp_vendor = 10415, .avp_name = "Role-Of-Node" }, RULE_OPTIONAL, -1, 1 },
    504                                 { { .avp_vendor = 10415, .avp_name = "Node-Functionality" }, RULE_REQUIRED, -1, 1 },
    505                                 { { .avp_vendor = 10415, .avp_name = "User-Session-Id" }, RULE_OPTIONAL, -1, 1 },
    506                                 { { .avp_vendor = 10415, .avp_name = "Outgoing-Session-Id" }, RULE_OPTIONAL, -1, 1 },
    507                                 { { .avp_vendor = 10415, .avp_name = "Session-Priority" }, RULE_OPTIONAL, -1, 1 },
    508                                 { { .avp_vendor = 10415, .avp_name = "Calling-Party-Address" }, RULE_OPTIONAL, -1, -1 },
    509                                 { { .avp_vendor = 10415, .avp_name = "Called-Party-Address" }, RULE_OPTIONAL, -1, 1 },
    510                                 { { .avp_vendor = 10415, .avp_name = "Called-Asserted-Identity" }, RULE_OPTIONAL, -1, -1 },
    511                                 { { .avp_vendor = 10415, .avp_name = "Number-Portability-Routing-Information" }, RULE_OPTIONAL, -1, 1 },
    512                                 { { .avp_vendor = 10415, .avp_name = "Carrier-Select-Routing-Information" }, RULE_OPTIONAL, -1, 1 },
    513                                 { { .avp_vendor = 10415, .avp_name = "Alternate-Charged-Party-Address" }, RULE_OPTIONAL, -1, 1 },
    514                                 { { .avp_vendor = 10415, .avp_name = "Requested-Party-Address" }, RULE_OPTIONAL, -1, -1 },
    515                                 { { .avp_vendor = 10415, .avp_name = "Associated-URI" }, RULE_OPTIONAL, -1, -1 },
    516                                 { { .avp_vendor = 10415, .avp_name = "Time-Stamps" }, RULE_OPTIONAL, -1, 1 },
    517                                 { { .avp_vendor = 10415, .avp_name = "Application-Server-Information" }, RULE_OPTIONAL, -1, -1 },
    518                                 { { .avp_vendor = 10415, .avp_name = "Inter-Operator-Identifier" }, RULE_OPTIONAL, -1, -1 },
    519                                 { { .avp_vendor = 10415, .avp_name = "Transit-IOI-List" }, RULE_OPTIONAL, -1, 1 },
    520                                 { { .avp_vendor = 10415, .avp_name = "IMS-Charging-Identifier" }, RULE_OPTIONAL, -1, 1 },
    521                                 { { .avp_vendor = 10415, .avp_name = "SDP-Session-Description" }, RULE_OPTIONAL, -1, -1 },
    522                                 { { .avp_vendor = 10415, .avp_name = "SDP-Media-Component" }, RULE_OPTIONAL, -1, -1 },
    523                                 { { .avp_vendor = 10415, .avp_name = "Served-Party-IP-Address" }, RULE_OPTIONAL, -1, 1 },
    524                                 { { .avp_vendor = 10415, .avp_name = "Server-Capabilities" }, RULE_OPTIONAL, -1, 1 },
    525                                 { { .avp_vendor = 10415, .avp_name = "Trunk-Group-Id" }, RULE_OPTIONAL, -1, 1 },
    526                                 { { .avp_vendor = 10415, .avp_name = "Bearer-Service" }, RULE_OPTIONAL, -1, 1 },
    527                                 { { .avp_vendor = 10415, .avp_name = "Service-Id" }, RULE_OPTIONAL, -1, 1 },
    528                                 { { .avp_vendor = 10415, .avp_name = "Service-Specific-Info" }, RULE_OPTIONAL, -1, -1 },
    529                                 { { .avp_vendor = 10415, .avp_name = "Message-Body" }, RULE_OPTIONAL, -1, -1 },
    530                                 { { .avp_vendor = 10415, .avp_name = "Cause-Code" }, RULE_OPTIONAL, -1, 1 },
    531                                 { { .avp_vendor = 10415, .avp_name = "Access-Network-Information" }, RULE_OPTIONAL, -1, 1 },
    532                                 { { .avp_vendor = 10415, .avp_name = "Early-Media-Description" }, RULE_OPTIONAL, -1, -1 },
    533                                 { { .avp_vendor = 10415, .avp_name = "IMS-Communication-Service-Identifier" }, RULE_OPTIONAL, -1, 1 },
    534                                 { { .avp_vendor = 10415, .avp_name = "IMS-Application-Reference-Identifier" }, RULE_OPTIONAL, -1, 1 },
    535                                 { { .avp_vendor = 10415, .avp_name = "Online-Charging-Flag" }, RULE_OPTIONAL, -1, 1 },
    536                                 { { .avp_vendor = 10415, .avp_name = "Real-Time-Tariff-Information" }, RULE_OPTIONAL, -1, 1 },
    537                                 { { .avp_vendor = 10415, .avp_name = "Account-Expiration" }, RULE_OPTIONAL, -1, 1 },
    538                                 { { .avp_vendor = 10415, .avp_name = "Initial-IMS-Charging-Identifier" }, RULE_OPTIONAL, -1, 1 },
    539                                 { { .avp_vendor = 10415, .avp_name = "NNI-Information" }, RULE_OPTIONAL, -1, -1 },
    540                                 { { .avp_vendor = 10415, .avp_name = "From-Address" }, RULE_OPTIONAL, -1, 1 },
    541                                 { { .avp_vendor = 10415, .avp_name = "IMS-Emergency-Indicator" }, RULE_OPTIONAL, -1, 1 },
    542                                 { { .avp_vendor = 10415, .avp_name = "Access-Transfer-Information" }, RULE_OPTIONAL, -1, -1 },
     506                                { 10415, "Event-Type",                          RULE_OPTIONAL, -1, 1 },
     507                                { 10415, "Role-Of-Node",                        RULE_OPTIONAL, -1, 1 },
     508                                { 10415, "Node-Functionality",                  RULE_REQUIRED, -1, 1 },
     509                                { 10415, "User-Session-Id",                     RULE_OPTIONAL, -1, 1 },
     510                                { 10415, "Outgoing-Session-Id",                 RULE_OPTIONAL, -1, 1 },
     511                                { 10415, "Session-Priority",                    RULE_OPTIONAL, -1, 1 },
     512                                { 10415, "Calling-Party-Address",               RULE_OPTIONAL, -1, -1 },
     513                                { 10415, "Called-Party-Address",                RULE_OPTIONAL, -1, 1 },
     514                                { 10415, "Called-Asserted-Identity",            RULE_OPTIONAL, -1, -1 },
     515                                { 10415, "Number-Portability-Routing-Information",      RULE_OPTIONAL, -1, 1 },
     516                                { 10415, "Carrier-Select-Routing-Information",  RULE_OPTIONAL, -1, 1 },
     517                                { 10415, "Alternate-Charged-Party-Address",     RULE_OPTIONAL, -1, 1 },
     518                                { 10415, "Requested-Party-Address",             RULE_OPTIONAL, -1, -1 },
     519                                { 10415, "Associated-URI",                      RULE_OPTIONAL, -1, -1 },
     520                                { 10415, "Time-Stamps",                         RULE_OPTIONAL, -1, 1 },
     521                                { 10415, "Application-Server-Information",      RULE_OPTIONAL, -1, -1 },
     522                                { 10415, "Inter-Operator-Identifier",           RULE_OPTIONAL, -1, -1 },
     523                                { 10415, "Transit-IOI-List",                    RULE_OPTIONAL, -1, 1 },
     524                                { 10415, "IMS-Charging-Identifier",             RULE_OPTIONAL, -1, 1 },
     525                                { 10415, "SDP-Session-Description",             RULE_OPTIONAL, -1, -1 },
     526                                { 10415, "SDP-Media-Component",                 RULE_OPTIONAL, -1, -1 },
     527                                { 10415, "Served-Party-IP-Address",             RULE_OPTIONAL, -1, 1 },
     528                                { 10415, "Server-Capabilities",                 RULE_OPTIONAL, -1, 1 },
     529                                { 10415, "Trunk-Group-Id",                      RULE_OPTIONAL, -1, 1 },
     530                                { 10415, "Bearer-Service",                      RULE_OPTIONAL, -1, 1 },
     531                                { 10415, "Service-Id",                          RULE_OPTIONAL, -1, 1 },
     532                                { 10415, "Service-Specific-Info",               RULE_OPTIONAL, -1, -1 },
     533                                { 10415, "Message-Body",                        RULE_OPTIONAL, -1, -1 },
     534                                { 10415, "Cause-Code",                          RULE_OPTIONAL, -1, 1 },
     535                                { 10415, "Access-Network-Information",          RULE_OPTIONAL, -1, 1 },
     536                                { 10415, "Early-Media-Description",             RULE_OPTIONAL, -1, -1 },
     537                                { 10415, "IMS-Communication-Service-Identifier",RULE_OPTIONAL, -1, 1 },
     538                                { 10415, "IMS-Application-Reference-Identifier",RULE_OPTIONAL, -1, 1 },
     539                                { 10415, "Online-Charging-Flag",                RULE_OPTIONAL, -1, 1 },
     540                                { 10415, "Real-Time-Tariff-Information",        RULE_OPTIONAL, -1, 1 },
     541                                { 10415, "Account-Expiration",                  RULE_OPTIONAL, -1, 1 },
     542                                { 10415, "Initial-IMS-Charging-Identifier",     RULE_OPTIONAL, -1, 1 },
     543                                { 10415, "NNI-Information",                     RULE_OPTIONAL, -1, -1 },
     544                                { 10415, "From-Address",                        RULE_OPTIONAL, -1, 1 },
     545                                { 10415, "IMS-Emergency-Indicator",             RULE_OPTIONAL, -1, 1 },
     546                                { 10415, "Access-Transfer-Information",         RULE_OPTIONAL, -1, -1 },
    543547                        };
    544548                        PARSE_loc_rules(rules, rule_avp);
     
    553557                struct local_rules_definition rules[] =
    554558                        {
    555                                 { { .avp_vendor = 10415, .avp_name = "Class-Identifier" }, RULE_OPTIONAL, -1, 1 },
    556                                 { { .avp_vendor = 10415, .avp_name = "Token-Text" }, RULE_OPTIONAL, -1, 1 },
     559                                { 10415, "Class-Identifier",    RULE_OPTIONAL, -1, 1 },
     560                                { 10415, "Token-Text",          RULE_OPTIONAL, -1, 1 },
    557561                        };
    558562                        PARSE_loc_rules(rules, rule_avp);
     
    567571                struct local_rules_definition rules[] =
    568572                        {
    569                                 { { .avp_vendor = 10415, .avp_name = "Originator-Address" }, RULE_OPTIONAL, -1, 1 },
    570                                 { { .avp_vendor = 10415, .avp_name = "Recipient-Address" }, RULE_OPTIONAL, -1, -1 },
    571                                 { { .avp_vendor = 10415, .avp_name = "Submission-Time" }, RULE_OPTIONAL, -1, 1 },
    572                                 { { .avp_vendor = 10415, .avp_name = "MM-Content-Type" }, RULE_OPTIONAL, -1, 1 },
    573                                 { { .avp_vendor = 10415, .avp_name = "Priority" }, RULE_OPTIONAL, -1, -1 },
    574                                 { { .avp_vendor = 10415, .avp_name = "Message-ID" }, RULE_OPTIONAL, -1, 1 },
    575                                 { { .avp_vendor = 10415, .avp_name = "Message-Type" }, RULE_OPTIONAL, -1, 1 },
    576                                 { { .avp_vendor = 10415, .avp_name = "Message-Size" }, RULE_OPTIONAL, -1, 1 },
    577                                 { { .avp_vendor = 10415, .avp_name = "Message-Class" }, RULE_OPTIONAL, -1, 1 },
    578                                 { { .avp_vendor = 10415, .avp_name = "Delivery-Report-Requested" }, RULE_OPTIONAL, -1, 1 },
    579                                 { { .avp_vendor = 10415, .avp_name = "Read-Reply-Report-Requested" }, RULE_OPTIONAL, -1, 1 },
    580                                 { { .avp_vendor = 10415, .avp_name = "MMBox-Storage-Requested" }, RULE_OPTIONAL, -1, 1 },
    581                                 { { .avp_vendor = 10415, .avp_name = "Applic-ID" }, RULE_OPTIONAL, -1, 1 },
    582                                 { { .avp_vendor = 10415, .avp_name = "Reply-Applic-ID" }, RULE_OPTIONAL, -1, 1 },
    583                                 { { .avp_vendor = 10415, .avp_name = "Aux-Applic-Info" }, RULE_OPTIONAL, -1, 1 },
    584                                 { { .avp_vendor = 10415, .avp_name = "Content-Class" }, RULE_OPTIONAL, -1, 1 },
    585                                 { { .avp_vendor = 10415, .avp_name = "DRM-Content" }, RULE_OPTIONAL, -1, 1 },
    586                                 { { .avp_vendor = 10415, .avp_name = "Adaptations" }, RULE_OPTIONAL, -1, 1 },
    587                                 { { .avp_vendor = 10415, .avp_name = "VASP-ID" }, RULE_OPTIONAL, -1, 1 },
    588                                 { { .avp_vendor = 10415, .avp_name = "VAS-ID" }, RULE_OPTIONAL, -1, 1 },
     573                                { 10415, "Originator-Address",          RULE_OPTIONAL, -1, 1 },
     574                                { 10415, "Recipient-Address",           RULE_OPTIONAL, -1, -1 },
     575                                { 10415, "Submission-Time",             RULE_OPTIONAL, -1, 1 },
     576                                { 10415, "MM-Content-Type",             RULE_OPTIONAL, -1, 1 },
     577                                { 10415, "Priority",                    RULE_OPTIONAL, -1, -1 },
     578                                { 10415, "Message-ID",                  RULE_OPTIONAL, -1, 1 },
     579                                { 10415, "Message-Type",                RULE_OPTIONAL, -1, 1 },
     580                                { 10415, "Message-Size",                RULE_OPTIONAL, -1, 1 },
     581                                { 10415, "Message-Class",               RULE_OPTIONAL, -1, 1 },
     582                                { 10415, "Delivery-Report-Requested",   RULE_OPTIONAL, -1, 1 },
     583                                { 10415, "Read-Reply-Report-Requested", RULE_OPTIONAL, -1, 1 },
     584                                { 10415, "MMBox-Storage-Requested",     RULE_OPTIONAL, -1, 1 },
     585                                { 10415, "Applic-ID",                   RULE_OPTIONAL, -1, 1 },
     586                                { 10415, "Reply-Applic-ID",             RULE_OPTIONAL, -1, 1 },
     587                                { 10415, "Aux-Applic-Info",             RULE_OPTIONAL, -1, 1 },
     588                                { 10415, "Content-Class",               RULE_OPTIONAL, -1, 1 },
     589                                { 10415, "DRM-Content",                 RULE_OPTIONAL, -1, 1 },
     590                                { 10415, "Adaptations",                 RULE_OPTIONAL, -1, 1 },
     591                                { 10415, "VASP-ID",                     RULE_OPTIONAL, -1, 1 },
     592                                { 10415, "VAS-ID",                      RULE_OPTIONAL, -1, 1 },
    589593                        };
    590594                        PARSE_loc_rules(rules, rule_avp);
     
    601605                struct local_rules_definition rules[] =
    602606                        {
    603                                 { { .avp_vendor = 10415, .avp_name = "Time-Quota-Threshold" }, RULE_OPTIONAL, -1, 1 },
    604                                 { { .avp_vendor = 10415, .avp_name = "Volume-Quota-Threshold" }, RULE_OPTIONAL, -1, 1 },
    605                                 { { .avp_vendor = 10415, .avp_name = "Unit-Quota-Threshold" }, RULE_OPTIONAL, -1, 1 },
    606                                 { { .avp_vendor = 10415, .avp_name = "Quota-Holding-Time" }, RULE_OPTIONAL, -1, 1 },
    607                                 { { .avp_vendor = 10415, .avp_name = "Quota-Consumption-Time" }, RULE_OPTIONAL, -1, 1 },
    608                                 { { .avp_vendor = 10415, .avp_name = "Reporting-Reason" }, RULE_OPTIONAL, -1, -1 },
    609                                 { { .avp_vendor = 10415, .avp_name = "Trigger" }, RULE_OPTIONAL, -1, 1 },
    610                                 { { .avp_vendor = 10415, .avp_name = "PS-Furnish-Charging-Information" }, RULE_OPTIONAL, -1, 1 },
    611                                 { { .avp_vendor = 10415, .avp_name = "Refund-Information" }, RULE_OPTIONAL, -1, 1 },
    612                                 { { .avp_vendor = 10415, .avp_name = "AF-Correlation-Information" }, RULE_OPTIONAL, -1, -1 },
    613                                 { { .avp_vendor = 10415, .avp_name = "Envelope" }, RULE_OPTIONAL, -1, -1 },
    614                                 { { .avp_vendor = 10415, .avp_name = "Envelope-Reporting" }, RULE_OPTIONAL, -1, 1 },
    615                                 { { .avp_vendor = 10415, .avp_name = "Time-Quota-Mechanism" }, RULE_OPTIONAL, -1, 1 },
    616                                 { { .avp_vendor = 10415, .avp_name = "Service-Specific-Info" }, RULE_OPTIONAL, -1, -1 },
    617                                 { { .avp_vendor = 10415, .avp_name = "QoS-Information" }, RULE_OPTIONAL, -1, 1 },
     607                                { 10415, "Time-Quota-Threshold",                RULE_OPTIONAL, -1, 1 },
     608                                { 10415, "Volume-Quota-Threshold",              RULE_OPTIONAL, -1, 1 },
     609                                { 10415, "Unit-Quota-Threshold",                RULE_OPTIONAL, -1, 1 },
     610                                { 10415, "Quota-Holding-Time",                  RULE_OPTIONAL, -1, 1 },
     611                                { 10415, "Quota-Consumption-Time",              RULE_OPTIONAL, -1, 1 },
     612                                { 10415, "Reporting-Reason",                    RULE_OPTIONAL, -1, -1 },
     613                                { 10415, "Trigger",                             RULE_OPTIONAL, -1, 1 },
     614                                { 10415, "PS-Furnish-Charging-Information",     RULE_OPTIONAL, -1, 1 },
     615                                { 10415, "Refund-Information",                  RULE_OPTIONAL, -1, 1 },
     616                                { 10415, "AF-Correlation-Information",          RULE_OPTIONAL, -1, -1 },
     617                                { 10415, "Envelope",                            RULE_OPTIONAL, -1, -1 },
     618                                { 10415, "Envelope-Reporting",                  RULE_OPTIONAL, -1, 1 },
     619                                { 10415, "Time-Quota-Mechanism",                RULE_OPTIONAL, -1, 1 },
     620                                { 10415, "Service-Specific-Info",               RULE_OPTIONAL, -1, -1 },
     621                                { 10415, "QoS-Information",                     RULE_OPTIONAL, -1, 1 },
    618622                        };
    619623                PARSE_loc_rules(rules, rule_avp);
     
    628632                struct local_rules_definition rules[] =
    629633                        {
    630                                 { { .avp_vendor = 10415, .avp_name = "Quota-Consumption-Time" }, RULE_OPTIONAL, -1, 1 },
    631                                 { { .avp_vendor = 10415, .avp_name = "Time-Quota-Mechanism" }, RULE_OPTIONAL, -1, 1 },
    632                                 { { .avp_vendor = 10415, .avp_name = "Envelope-Reporting" }, RULE_OPTIONAL, -1, 1 },
    633                                 { { .avp_vendor = 0,     .avp_name = "Multiple-Services-Credit-Control" }, RULE_OPTIONAL, -1, -1 },
     634                                { 10415, "Quota-Consumption-Time",              RULE_OPTIONAL, -1, 1 },
     635                                { 10415, "Time-Quota-Mechanism",                RULE_OPTIONAL, -1, 1 },
     636                                { 10415, "Envelope-Reporting",                  RULE_OPTIONAL, -1, 1 },
     637                                { 0,     "Multiple-Services-Credit-Control",    RULE_OPTIONAL, -1, -1 },
    634638                        };
    635639                        PARSE_loc_rules(rules, rule_avp);
     
    644648                struct local_rules_definition rules[] =
    645649                        {
    646                                 { { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 },
    647                                 { { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 },
    648                                 { { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 },
     650                                { 10415, "Address-Type",                RULE_OPTIONAL, -1, 1 },
     651                                { 10415, "Address-Data",                RULE_OPTIONAL, -1, 1 },
     652                                { 10415, "Address-Domain",              RULE_OPTIONAL, -1, 1 },
    649653                        };
    650654                        PARSE_loc_rules(rules, rule_avp);
     
    659663                struct local_rules_definition rules[] =
    660664                        {
    661                                 { { .avp_vendor = 10415, .avp_name = "Interface-Id" }, RULE_OPTIONAL, -1, 1 },
    662                                 { { .avp_vendor = 10415, .avp_name = "Interface-Text" }, RULE_OPTIONAL, -1, 1 },
    663                                 { { .avp_vendor = 10415, .avp_name = "Interface-Port" }, RULE_OPTIONAL, -1, 1 },
    664                                 { { .avp_vendor = 10415, .avp_name = "Interface-Type" }, RULE_OPTIONAL, -1, 1 },
     665                                { 10415, "Interface-Id",                RULE_OPTIONAL, -1, 1 },
     666                                { 10415, "Interface-Text",              RULE_OPTIONAL, -1, 1 },
     667                                { 10415, "Interface-Port",              RULE_OPTIONAL, -1, 1 },
     668                                { 10415, "Interface-Type",              RULE_OPTIONAL, -1, 1 },
    665669                        };
    666670                        PARSE_loc_rules(rules, rule_avp);
     
    675679                struct local_rules_definition rules[] =
    676680                        {
    677                                 { { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 },
    678                                 { { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 },
    679                                 { { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 },
     681                                { 10415, "Address-Type",                RULE_OPTIONAL, -1, 1 },
     682                                { 10415, "Address-Data",                RULE_OPTIONAL, -1, 1 },
     683                                { 10415, "Address-Domain",              RULE_OPTIONAL, -1, 1 },
    680684                        };
    681685                        PARSE_loc_rules(rules, rule_avp);
     
    690694                struct local_rules_definition rules[] =
    691695                        {
    692                                 { { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Id" }, RULE_REQUIRED, -1, 1 },
    693                                 { { .avp_vendor = 10415, .avp_name = "PS-Free-Format-Data" }, RULE_REQUIRED, -1, 1 },
    694                                 { { .avp_vendor = 10415, .avp_name = "PS-Append-Free-Format-Data" }, RULE_OPTIONAL, -1, 1 },
     696                                { 10415, "3GPP-Charging-Id",            RULE_REQUIRED, -1, 1 },
     697                                { 10415, "PS-Free-Format-Data",         RULE_REQUIRED, -1, 1 },
     698                                { 10415, "PS-Append-Free-Format-Data",  RULE_OPTIONAL, -1, 1 },
    695699                        };
    696700                        PARSE_loc_rules(rules, rule_avp);
     
    705709                struct local_rules_definition rules[] =
    706710                        {
    707                                 { { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Id" }, RULE_OPTIONAL, -1, 1 },
    708                                 { { .avp_vendor = 10415, .avp_name = "PDN-Connection-Charging-ID" }, RULE_OPTIONAL, -1, 1 },
    709                                 { { .avp_vendor = 10415, .avp_name = "Node-Id" }, RULE_OPTIONAL, -1, 1 },
    710                                 { { .avp_vendor = 10415, .avp_name = "3GPP-PDP-Type" }, RULE_OPTIONAL, -1, 1 },
    711                                 { { .avp_vendor = 10415, .avp_name = "PDP-Address" }, RULE_OPTIONAL, -1, -1 },
    712                                 { { .avp_vendor = 10415, .avp_name = "PDP-Address-Prefix-Length" }, RULE_OPTIONAL, -1, 1 },
    713                                 { { .avp_vendor = 10415, .avp_name = "Dynamic-Address-Flag" }, RULE_OPTIONAL, -1, 1 },
    714                                 { { .avp_vendor = 10415, .avp_name = "Dynamic-Address-Flag-Extension" }, RULE_OPTIONAL, -1, 1 },
    715                                 { { .avp_vendor = 10415, .avp_name = "QoS-Information" }, RULE_OPTIONAL, -1, 1 },
    716                                 { { .avp_vendor = 10415, .avp_name = "SGSN-Address" }, RULE_OPTIONAL, -1, -1 },
    717                                 { { .avp_vendor = 10415, .avp_name = "GGSN-Address" }, RULE_OPTIONAL, -1, -1 },
    718                                 { { .avp_vendor = 10415, .avp_name = "SGW-Address" }, RULE_OPTIONAL, -1, -1 },
    719                                 { { .avp_vendor = 10415, .avp_name = "CG-Address" }, RULE_OPTIONAL, -1, 1 },
    720                                 { { .avp_vendor = 10415, .avp_name = "Serving-Node-Type" }, RULE_OPTIONAL, -1, 1 },
    721                                 { { .avp_vendor = 10415, .avp_name = "SGW-Change" }, RULE_OPTIONAL, -1, 1 },
    722                                 { { .avp_vendor = 10415, .avp_name = "3GPP-IMSI-MCC-MNC" }, RULE_OPTIONAL, -1, 1 },
    723                                 { { .avp_vendor = 10415, .avp_name = "IMSI-Unauthenticated-Flag" }, RULE_OPTIONAL, -1, 1 },
    724                                 { { .avp_vendor = 10415, .avp_name = "3GPP-GGSN-MCC-MNC" }, RULE_OPTIONAL, -1, 1 },
    725                                 { { .avp_vendor = 10415, .avp_name = "3GPP-NSAPI" }, RULE_OPTIONAL, -1, 1 },
    726                                 { { .avp_vendor = 0,     .avp_name = "Called-Station-Id" }, RULE_OPTIONAL, -1, 1 },
    727                                 { { .avp_vendor = 10415, .avp_name = "3GPP-Session-Stop-Indicator" }, RULE_OPTIONAL, -1, 1 },
    728                                 { { .avp_vendor = 10415, .avp_name = "3GPP-Selection-Mode" }, RULE_OPTIONAL, -1, 1 },
    729                                 { { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Characteristics" }, RULE_OPTIONAL, -1, 1 },
    730                                 { { .avp_vendor = 10415, .avp_name = "Charging-Characteristics-Selection-Mode" }, RULE_OPTIONAL, -1, 1 },
    731                                 { { .avp_vendor = 10415, .avp_name = "3GPP-SGSN-MCC-MNC" }, RULE_OPTIONAL, -1, 1 },
    732                                 { { .avp_vendor = 10415, .avp_name = "3GPP-MS-TimeZone" }, RULE_OPTIONAL, -1, 1 },
    733                                 { { .avp_vendor = 10415, .avp_name = "Charging-Rule-Base-Name" }, RULE_OPTIONAL, -1, 1 },
    734                                 { { .avp_vendor = 10415, .avp_name = "3GPP-User-Location-Info" }, RULE_OPTIONAL, -1, 1 },
    735                                 { { .avp_vendor = 10415, .avp_name = "User-CSG-Information" }, RULE_OPTIONAL, -1, 1 },
    736                                 { { .avp_vendor = 5535,  .avp_name = "3GPP2-BSID" }, RULE_OPTIONAL, -1, 1 },
    737                                 { { .avp_vendor = 10415, .avp_name = "3GPP-RAT-Type" }, RULE_OPTIONAL, -1, 1 },
    738                                 { { .avp_vendor = 10415, .avp_name = "PS-Furnish-Charging-Information" }, RULE_OPTIONAL, -1, 1 },
    739                                 { { .avp_vendor = 10415, .avp_name = "PDP-Context-Type" }, RULE_OPTIONAL, -1, 1 },
    740                                 { { .avp_vendor = 10415, .avp_name = "Offline-Charging" }, RULE_OPTIONAL, -1, 1 },
    741                                 { { .avp_vendor = 10415, .avp_name = "Traffic-Data-Volumes" }, RULE_OPTIONAL, -1, -1 },
    742                                 { { .avp_vendor = 10415, .avp_name = "Service-Data-Container" }, RULE_OPTIONAL, -1, -1 },
    743                                 { { .avp_vendor = 0,     .avp_name = "User-Equipment-Info" }, RULE_OPTIONAL, -1, 1 },
    744                                 { { .avp_vendor = 10415, .avp_name = "Terminal-Information" }, RULE_OPTIONAL, -1, 1 },
    745                                 { { .avp_vendor = 10415, .avp_name = "Start-Time" }, RULE_OPTIONAL, -1, 1 },
    746                                 { { .avp_vendor = 10415, .avp_name = "Stop-Time" }, RULE_OPTIONAL, -1, 1 },
    747                                 { { .avp_vendor = 10415, .avp_name = "Change-Condition" }, RULE_OPTIONAL, -1, 1 },
    748                                 { { .avp_vendor = 10415, .avp_name = "Diagnostics" }, RULE_OPTIONAL, -1, 1 },
    749                                 { { .avp_vendor = 10415, .avp_name = "Low-Priority-Indicator" }, RULE_OPTIONAL, -1, 1 },
    750                                 { { .avp_vendor = 10415, .avp_name = "MME-Number-for-MT-SMS" }, RULE_OPTIONAL, -1, 1 },
    751                                 { { .avp_vendor = 10415, .avp_name = "MME-Name" }, RULE_OPTIONAL, -1, 1 },
    752                                 { { .avp_vendor = 10415, .avp_name = "MME-Realm" }, RULE_OPTIONAL, -1, 1 },
     711                                { 10415, "3GPP-Charging-Id",                    RULE_OPTIONAL, -1, 1 },
     712                                { 10415, "PDN-Connection-Charging-ID",          RULE_OPTIONAL, -1, 1 },
     713                                { 10415, "Node-Id",                             RULE_OPTIONAL, -1, 1 },
     714                                { 10415, "3GPP-PDP-Type",                       RULE_OPTIONAL, -1, 1 },
     715                                { 10415, "PDP-Address",                         RULE_OPTIONAL, -1, -1 },
     716                                { 10415, "PDP-Address-Prefix-Length",           RULE_OPTIONAL, -1, 1 },
     717                                { 10415, "Dynamic-Address-Flag",                RULE_OPTIONAL, -1, 1 },
     718                                { 10415, "Dynamic-Address-Flag-Extension",      RULE_OPTIONAL, -1, 1 },
     719                                { 10415, "QoS-Information",                     RULE_OPTIONAL, -1, 1 },
     720                                { 10415, "SGSN-Address",                        RULE_OPTIONAL, -1, -1 },
     721                                { 10415, "GGSN-Address",                        RULE_OPTIONAL, -1, -1 },
     722                                { 10415, "SGW-Address",                         RULE_OPTIONAL, -1, -1 },
     723                                { 10415, "CG-Address",                          RULE_OPTIONAL, -1, 1 },
     724                                { 10415, "Serving-Node-Type",                   RULE_OPTIONAL, -1, 1 },
     725                                { 10415, "SGW-Change",                          RULE_OPTIONAL, -1, 1 },
     726                                { 10415, "3GPP-IMSI-MCC-MNC",                   RULE_OPTIONAL, -1, 1 },
     727                                { 10415, "IMSI-Unauthenticated-Flag",           RULE_OPTIONAL, -1, 1 },
     728                                { 10415, "3GPP-GGSN-MCC-MNC",                   RULE_OPTIONAL, -1, 1 },
     729                                { 10415, "3GPP-NSAPI",                          RULE_OPTIONAL, -1, 1 },
     730                                { 0,     "Called-Station-Id",                   RULE_OPTIONAL, -1, 1 },
     731                                { 10415, "3GPP-Session-Stop-Indicator",         RULE_OPTIONAL, -1, 1 },
     732                                { 10415, "3GPP-Selection-Mode",                 RULE_OPTIONAL, -1, 1 },
     733                                { 10415, "3GPP-Charging-Characteristics",       RULE_OPTIONAL, -1, 1 },
     734                                { 10415, "Charging-Characteristics-Selection-Mode",     RULE_OPTIONAL, -1, 1 },
     735                                { 10415, "3GPP-SGSN-MCC-MNC",                   RULE_OPTIONAL, -1, 1 },
     736                                { 10415, "3GPP-MS-TimeZone",                    RULE_OPTIONAL, -1, 1 },
     737                                { 10415, "Charging-Rule-Base-Name",             RULE_OPTIONAL, -1, 1 },
     738                                { 10415, "3GPP-User-Location-Info",             RULE_OPTIONAL, -1, 1 },
     739                                { 10415, "User-CSG-Information",                RULE_OPTIONAL, -1, 1 },
     740                                { 5535,  "3GPP2-BSID",                          RULE_OPTIONAL, -1, 1 },
     741                                { 10415, "3GPP-RAT-Type",                       RULE_OPTIONAL, -1, 1 },
     742                                { 10415, "PS-Furnish-Charging-Information",     RULE_OPTIONAL, -1, 1 },
     743                                { 10415, "PDP-Context-Type",                    RULE_OPTIONAL, -1, 1 },
     744                                { 10415, "Offline-Charging",                    RULE_OPTIONAL, -1, 1 },
     745                                { 10415, "Traffic-Data-Volumes",                RULE_OPTIONAL, -1, -1 },
     746                                { 10415, "Service-Data-Container",              RULE_OPTIONAL, -1, -1 },
     747                                { 0,     "User-Equipment-Info",                 RULE_OPTIONAL, -1, 1 },
     748                                { 10415, "Terminal-Information",                RULE_OPTIONAL, -1, 1 },
     749                                { 10415, "Start-Time",                          RULE_OPTIONAL, -1, 1 },
     750                                { 10415, "Stop-Time",                           RULE_OPTIONAL, -1, 1 },
     751                                { 10415, "Change-Condition",                    RULE_OPTIONAL, -1, 1 },
     752                                { 10415, "Diagnostics",                         RULE_OPTIONAL, -1, 1 },
     753                                { 10415, "Low-Priority-Indicator",              RULE_OPTIONAL, -1, 1 },
     754                                { 10415, "MME-Number-for-MT-SMS",               RULE_OPTIONAL, -1, 1 },
     755                                { 10415, "MME-Name",                            RULE_OPTIONAL, -1, 1 },
     756                                { 10415, "MME-Realm",                           RULE_OPTIONAL, -1, 1 },
    753757                        };
    754758                        PARSE_loc_rules(rules, rule_avp);
     
    763767                struct local_rules_definition rules[] =
    764768                        {
    765                                 { { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 },
    766                                 { { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 },
    767                                 { { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 },
    768                                 { { .avp_vendor = 10415, .avp_name = "Addressee-Type" }, RULE_OPTIONAL, -1, 1 },
     769                                { 10415, "Address-Type",                RULE_OPTIONAL, -1, 1 },
     770                                { 10415, "Address-Data",                RULE_OPTIONAL, -1, 1 },
     771                                { 10415, "Address-Domain",              RULE_OPTIONAL, -1, 1 },
     772                                { 10415, "Addressee-Type",              RULE_OPTIONAL, -1, 1 },
    769773                        };
    770774                        PARSE_loc_rules(rules, rule_avp);
     
    779783                struct local_rules_definition rules[] =
    780784                        {
    781                                 { { .avp_vendor = 10415, .avp_name = "Destination-Interface" }, RULE_OPTIONAL, -1, 1 },
    782                                 { { .avp_vendor = 10415, .avp_name = "Recipient-Address" }, RULE_OPTIONAL, -1, -1 },
    783                                 { { .avp_vendor = 10415, .avp_name = "Recipient-Received-Address" }, RULE_OPTIONAL, -1, -1 },
    784                                 { { .avp_vendor = 10415, .avp_name = "Recipient-SCCP-Address" }, RULE_OPTIONAL, -1, 1 },
    785                                 { { .avp_vendor = 10415, .avp_name = "SM-Protocol-ID" }, RULE_OPTIONAL, -1, 1 },
     785                                { 10415, "Destination-Interface",       RULE_OPTIONAL, -1, 1 },
     786                                { 10415, "Recipient-Address",           RULE_OPTIONAL, -1, -1 },
     787                                { 10415, "Recipient-Received-Address",  RULE_OPTIONAL, -1, -1 },
     788                                { 10415, "Recipient-SCCP-Address",      RULE_OPTIONAL, -1, 1 },
     789                                { 10415, "SM-Protocol-ID",              RULE_OPTIONAL, -1, 1 },
    786790                        };
    787791                        PARSE_loc_rules(rules, rule_avp);
     
    796800                struct local_rules_definition rules[] =
    797801                        {
    798                                 { { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 },
    799                                 { { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 },
    800                                 { { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 },
     802                                { 10415, "Address-Type",                RULE_OPTIONAL, -1, 1 },
     803                                { 10415, "Address-Data",                RULE_OPTIONAL, -1, 1 },
     804                                { 10415, "Address-Domain",              RULE_OPTIONAL, -1, 1 },
    801805                        };
    802806                        PARSE_loc_rules(rules, rule_avp);
     
    811815                struct local_rules_definition rules[] =
    812816                        {
    813                                 { { .avp_vendor = 10415, .avp_name = "SDP-Media-Name" }, RULE_OPTIONAL, -1, 1 },
    814                                 { { .avp_vendor = 10415, .avp_name = "SDP-Media-Description" }, RULE_OPTIONAL, -1, -1 },
    815                                 { { .avp_vendor = 10415, .avp_name = "Local-GW-Inserted-Indication" }, RULE_OPTIONAL, -1, 1 },
    816                                 { { .avp_vendor = 10415, .avp_name = "IP-Realm-Default-Indication" }, RULE_OPTIONAL, -1, 1 },
    817                                 { { .avp_vendor = 10415, .avp_name = "Transcoder-Inserted-Indication" }, RULE_OPTIONAL, -1, 1 },
    818                                 { { .avp_vendor = 10415, .avp_name = "Media-Initiator-Flag" }, RULE_OPTIONAL, -1, 1 },
    819                                 { { .avp_vendor = 10415, .avp_name = "Media-Initiator-Party" }, RULE_OPTIONAL, -1, 1 },
    820                                 { { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Id" }, RULE_OPTIONAL, -1, 1 },
    821                                 { { .avp_vendor = 10415, .avp_name = "Access-Network-Charging-Identifier-Value" }, RULE_OPTIONAL, -1, 1 },
    822                                 { { .avp_vendor = 10415, .avp_name = "SDP-Type" }, RULE_OPTIONAL, -1, 1 },
     817                                { 10415, "SDP-Media-Name",                      RULE_OPTIONAL, -1, 1 },
     818                                { 10415, "SDP-Media-Description",               RULE_OPTIONAL, -1, -1 },
     819                                { 10415, "Local-GW-Inserted-Indication",        RULE_OPTIONAL, -1, 1 },
     820                                { 10415, "IP-Realm-Default-Indication",         RULE_OPTIONAL, -1, 1 },
     821                                { 10415, "Transcoder-Inserted-Indication",      RULE_OPTIONAL, -1, 1 },
     822                                { 10415, "Media-Initiator-Flag",                RULE_OPTIONAL, -1, 1 },
     823                                { 10415, "Media-Initiator-Party",               RULE_OPTIONAL, -1, 1 },
     824                                { 10415, "3GPP-Charging-Id",                    RULE_OPTIONAL, -1, 1 },
     825                                { 10415, "Access-Network-Charging-Identifier-Value",    RULE_OPTIONAL, -1, 1 },
     826                                { 10415, "SDP-Type",                            RULE_OPTIONAL, -1, 1 },
    823827                        };
    824828                        PARSE_loc_rules(rules, rule_avp);
     
    833837                struct local_rules_definition rules[] =
    834838                        {
    835                                 { { .avp_vendor = 0,     .avp_name = "Subscription-Id" }, RULE_OPTIONAL, -1, -1 },
    836                                 { { .avp_vendor = 10415, .avp_name = "AoC-Information" }, RULE_OPTIONAL, -1, 1 },
    837                                 { { .avp_vendor = 10415, .avp_name = "PS-Information" }, RULE_OPTIONAL, -1, 1 },
    838                                 { { .avp_vendor = 10415, .avp_name = "IMS-Information" }, RULE_OPTIONAL, -1, 1 },
    839                                 { { .avp_vendor = 10415, .avp_name = "MMS-Information" }, RULE_OPTIONAL, -1, 1 },
    840                                 { { .avp_vendor = 10415, .avp_name = "LCS-Information" }, RULE_OPTIONAL, -1, 1 },
    841                                 { { .avp_vendor = 10415, .avp_name = "PoC-Information" }, RULE_OPTIONAL, -1, 1 },
    842                                 { { .avp_vendor = 10415, .avp_name = "MBMS-Information" }, RULE_OPTIONAL, -1, 1 },
    843                                 { { .avp_vendor = 10415, .avp_name = "SMS-Information" }, RULE_OPTIONAL, -1, 1 },
    844                                 { { .avp_vendor = 10415, .avp_name = "MMTel-Information" }, RULE_OPTIONAL, -1, 1 },
    845                                 { { .avp_vendor = 10415, .avp_name = "Service-Generic-Information" }, RULE_OPTIONAL, -1, 1 },
    846                                 { { .avp_vendor = 10415, .avp_name = "IM-Information" }, RULE_OPTIONAL, -1, 1 },
    847                                 { { .avp_vendor = 10415, .avp_name = "DCD-Information" }, RULE_OPTIONAL, -1, 1 },
     839                                { 0,     "Subscription-Id",             RULE_OPTIONAL, -1, -1 },
     840                                { 10415, "AoC-Information",             RULE_OPTIONAL, -1, 1 },
     841                                { 10415, "PS-Information",              RULE_OPTIONAL, -1, 1 },
     842                                { 10415, "IMS-Information",             RULE_OPTIONAL, -1, 1 },
     843                                { 10415, "MMS-Information",             RULE_OPTIONAL, -1, 1 },
     844                                { 10415, "LCS-Information",             RULE_OPTIONAL, -1, 1 },
     845                                { 10415, "PoC-Information",             RULE_OPTIONAL, -1, 1 },
     846                                { 10415, "MBMS-Information",            RULE_OPTIONAL, -1, 1 },
     847                                { 10415, "SMS-Information",             RULE_OPTIONAL, -1, 1 },
     848                                { 10415, "MMTel-Information",           RULE_OPTIONAL, -1, 1 },
     849                                { 10415, "Service-Generic-Information", RULE_OPTIONAL, -1, 1 },
     850                                { 10415, "IM-Information",              RULE_OPTIONAL, -1, 1 },
     851                                { 10415, "DCD-Information",             RULE_OPTIONAL, -1, 1 },
    848852                        };
    849853                        PARSE_loc_rules(rules, rule_avp);
     
    858862                struct local_rules_definition rules[] =
    859863                        {
    860                                 { { .avp_vendor = 10415, .avp_name = "SMS-Node" }, RULE_OPTIONAL, -1, 1 },
    861                                 { { .avp_vendor = 10415, .avp_name = "Client-Address" }, RULE_OPTIONAL, -1, 1 },
    862                                 { { .avp_vendor = 10415, .avp_name = "Originator-SCCP-Address" }, RULE_OPTIONAL, -1, 1 },
    863                                 { { .avp_vendor = 10415, .avp_name = "SMSC-Address" }, RULE_OPTIONAL, -1, 1 },
    864                                 { { .avp_vendor = 10415, .avp_name = "Data-Coding-Scheme" }, RULE_OPTIONAL, -1, 1 },
    865                                 { { .avp_vendor = 10415, .avp_name = "SM-Discharge-Time" }, RULE_OPTIONAL, -1, 1 },
    866                                 { { .avp_vendor = 10415, .avp_name = "SM-Message-Type" }, RULE_OPTIONAL, -1, 1 },
    867                                 { { .avp_vendor = 10415, .avp_name = "Originator-Interface" }, RULE_OPTIONAL, -1, 1 },
    868                                 { { .avp_vendor = 10415, .avp_name = "SM-Protocol-ID" }, RULE_OPTIONAL, -1, 1 },
    869                                 { { .avp_vendor = 10415, .avp_name = "Reply-Path-Requested" }, RULE_OPTIONAL, -1, 1 },
    870                                 { { .avp_vendor = 10415, .avp_name = "SM-Status" }, RULE_OPTIONAL, -1, 1 },
    871                                 { { .avp_vendor = 10415, .avp_name = "SM-User-Data-Header" }, RULE_OPTIONAL, -1, 1 },
    872                                 { { .avp_vendor = 10415, .avp_name = "Number-Of-Messages-Sent" }, RULE_OPTIONAL, -1, 1 },
    873                                 { { .avp_vendor = 10415, .avp_name = "Recipient-Info" }, RULE_OPTIONAL, -1, -1 },
    874                                 { { .avp_vendor = 10415, .avp_name = "Originator-Received-Address" }, RULE_OPTIONAL, -1, 1 },
    875                                 { { .avp_vendor = 10415, .avp_name = "SM-Service-Type" }, RULE_OPTIONAL, -1, 1 },
     864                                { 10415, "SMS-Node",                    RULE_OPTIONAL, -1, 1 },
     865                                { 10415, "Client-Address",              RULE_OPTIONAL, -1, 1 },
     866                                { 10415, "Originator-SCCP-Address",     RULE_OPTIONAL, -1, 1 },
     867                                { 10415, "SMSC-Address",                RULE_OPTIONAL, -1, 1 },
     868                                { 10415, "Data-Coding-Scheme",          RULE_OPTIONAL, -1, 1 },
     869                                { 10415, "SM-Discharge-Time",           RULE_OPTIONAL, -1, 1 },
     870                                { 10415, "SM-Message-Type",             RULE_OPTIONAL, -1, 1 },
     871                                { 10415, "Originator-Interface",        RULE_OPTIONAL, -1, 1 },
     872                                { 10415, "SM-Protocol-ID",              RULE_OPTIONAL, -1, 1 },
     873                                { 10415, "Reply-Path-Requested",        RULE_OPTIONAL, -1, 1 },
     874                                { 10415, "SM-Status",                   RULE_OPTIONAL, -1, 1 },
     875                                { 10415, "SM-User-Data-Header",         RULE_OPTIONAL, -1, 1 },
     876                                { 10415, "Number-Of-Messages-Sent",     RULE_OPTIONAL, -1, 1 },
     877                                { 10415, "Recipient-Info",              RULE_OPTIONAL, -1, -1 },
     878                                { 10415, "Originator-Received-Address", RULE_OPTIONAL, -1, 1 },
     879                                { 10415, "SM-Service-Type",             RULE_OPTIONAL, -1, 1 },
    876880                        };
    877881                        PARSE_loc_rules(rules, rule_avp);
     
    886890                struct local_rules_definition rules[] =
    887891                        {
    888                                 { { .avp_vendor = 10415, .avp_name = "Time-Quota-Type" }, RULE_REQUIRED, -1, 1 },
    889                                 { { .avp_vendor = 10415, .avp_name = "Base-Time-Interval" }, RULE_REQUIRED, -1, 1 },
     892                                { 10415, "Time-Quota-Type",             RULE_REQUIRED, -1, 1 },
     893                                { 10415, "Base-Time-Interval",          RULE_REQUIRED, -1, 1 },
    890894                        };
    891895                        PARSE_loc_rules(rules, rule_avp);
     
    900904                struct local_rules_definition rules[] =
    901905                        {
    902                                 { { .avp_vendor = 10415, .avp_name = "SIP-Request-Timestamp" }, RULE_OPTIONAL, -1, 1 },
    903                                 { { .avp_vendor = 10415, .avp_name = "SIP-Response-Timestamp" }, RULE_OPTIONAL, -1, 1 },
    904                                 { { .avp_vendor = 10415, .avp_name = "SIP-Request-Timestamp-Fraction" }, RULE_OPTIONAL, -1, 1 },
    905                                 { { .avp_vendor = 10415, .avp_name = "SIP-Response-Timestamp-Fraction" }, RULE_OPTIONAL, -1, 1 },
     906                                { 10415, "SIP-Request-Timestamp",               RULE_OPTIONAL, -1, 1 },
     907                                { 10415, "SIP-Response-Timestamp",              RULE_OPTIONAL, -1, 1 },
     908                                { 10415, "SIP-Request-Timestamp-Fraction",      RULE_OPTIONAL, -1, 1 },
     909                                { 10415, "SIP-Response-Timestamp-Fraction",     RULE_OPTIONAL, -1, 1 },
    906910                        };
    907911                        PARSE_loc_rules(rules, rule_avp);
     
    918922                struct local_rules_definition rules[] =
    919923                        {
    920                                 { { .avp_vendor = 10415, .avp_name = "Reporting-Reason" }, RULE_OPTIONAL, -1, 1 },
    921                                 { { .avp_vendor = 10415, .avp_name = "Event-Charging-TimeStamp" }, RULE_OPTIONAL, -1, -1 },
     924                                { 10415, "Reporting-Reason",            RULE_OPTIONAL, -1, 1 },
     925                                { 10415, "Event-Charging-TimeStamp",    RULE_OPTIONAL, -1, -1 },
    922926                        };
    923927                PARSE_loc_rules(rules, rule_avp);
     
    933937                struct local_rules_definition rules[] =
    934938                        {
    935                                 { { .avp_vendor = 10415, .avp_name = "Content-ID" }, RULE_OPTIONAL, -1, 1 },
    936                                 { { .avp_vendor = 10415, .avp_name = "Content-provider-ID" }, RULE_OPTIONAL, -1, 1 },
     939                                { 10415, "Content-ID",                  RULE_OPTIONAL, -1, 1 },
     940                                { 10415, "Content-provider-ID",         RULE_OPTIONAL, -1, 1 },
    937941                        };
    938942                        PARSE_loc_rules(rules, rule_avp);
     
    946950                struct local_rules_definition rules[] =
    947951                        {
    948                                 { { .avp_vendor = 10415, .avp_name = "Total-Number-Of-Messages-Sent" }, RULE_OPTIONAL, -1, 1 },
    949                                 { { .avp_vendor = 10415, .avp_name = "Total-Number-Of-Messages-Exploded" }, RULE_OPTIONAL, -1, 1 },
    950                                 { { .avp_vendor = 10415, .avp_name = "Number-Of-Messages-Successfully-Sent" }, RULE_OPTIONAL, -1, 1 },
    951                                 { { .avp_vendor = 10415, .avp_name = "Number-Of-Messages-Successfully-Exploded" }, RULE_OPTIONAL, -1, 1 },
     952                                { 10415, "Total-Number-Of-Messages-Sent",               RULE_OPTIONAL, -1, 1 },
     953                                { 10415, "Total-Number-Of-Messages-Exploded",           RULE_OPTIONAL, -1, 1 },
     954                                { 10415, "Number-Of-Messages-Successfully-Sent",        RULE_OPTIONAL, -1, 1 },
     955                                { 10415, "Number-Of-Messages-Successfully-Exploded",    RULE_OPTIONAL, -1, 1 },
    952956                        };
    953957                        PARSE_loc_rules(rules, rule_avp);
     
    961965                struct local_rules_definition rules[] =
    962966                        {
    963                                 { { .avp_vendor = 10415, .avp_name = "Application-Server-Id" }, RULE_OPTIONAL, -1, 1 },
    964                                 { { .avp_vendor = 10415, .avp_name = "Application-Service-Type" }, RULE_OPTIONAL, -1, 1 },
    965                                 { { .avp_vendor = 10415, .avp_name = "Application-Session-Id" }, RULE_OPTIONAL, -1, 1 },
    966                                 { { .avp_vendor = 10415, .avp_name = "Delivery-Status" }, RULE_OPTIONAL, -1, 1 },
     967                                { 10415, "Application-Server-Id",       RULE_OPTIONAL, -1, 1 },
     968                                { 10415, "Application-Service-Type",    RULE_OPTIONAL, -1, 1 },
     969                                { 10415, "Application-Session-Id",      RULE_OPTIONAL, -1, 1 },
     970                                { 10415, "Delivery-Status",             RULE_OPTIONAL, -1, 1 },
    967971                        };
    968972                        PARSE_loc_rules(rules, rule_avp);
Note: See TracChangeset for help on using the changeset viewer.