diff options
| author | Sukchan Lee <acetcom@gmail.com> | 2021-03-21 13:14:26 +0900 |
|---|---|---|
| committer | Sukchan Lee <acetcom@gmail.com> | 2021-03-21 13:14:26 +0900 |
| commit | 32d46d3f43485e171b1e28117d0db049dfc829b0 (patch) | |
| tree | b3506d614932f50730e023391600287676ac0c08 /extensions | |
| parent | e07f3955e6d0f59f272fd21d3b21a5e2eac17426 (diff) | |
Release freeDiameter v1.5.0main
Diffstat (limited to 'extensions')
56 files changed, 26196 insertions, 10932 deletions
diff --git a/extensions/CMakeLists.txt b/extensions/CMakeLists.txt index 46f5c30..4331bf4 100644 --- a/extensions/CMakeLists.txt +++ b/extensions/CMakeLists.txt @@ -10,6 +10,8 @@ MACRO(FD_ADD_EXTENSION EXTNAME) ADD_LIBRARY(${EXTNAME} MODULE ${ARGN}) SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES PREFIX "" ) SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES SUFFIX ".fdx" ) + SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES C_VISIBILITY_PRESET hidden ) + SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES CXX_VISIBILITY_PRESET hidden ) ENDMACRO(FD_ADD_EXTENSION) # Use the macro FD_EXTENSION_SUBDIR(extmacroname subdir descr default) to @@ -88,6 +90,8 @@ FD_EXTENSION_SUBDIR(acl_wl "White-list based authorization of incoming connectio #### # Debug & test extensions +FD_EXTENSION_SUBDIR(dbg_dict_dump "Log dictionary dump" ON) +FD_EXTENSION_SUBDIR(dbg_dict_dump_json "Dump dictionary as JSON" OFF) FD_EXTENSION_SUBDIR(dbg_loglevel "Read loglevel from file -- allows runtime change" ON) FD_EXTENSION_SUBDIR(dbg_monitor "Outputs periodical status information" ON) FD_EXTENSION_SUBDIR(dbg_msg_timings "Show some timing information for messages" ON) @@ -95,7 +99,8 @@ FD_EXTENSION_SUBDIR(dbg_msg_dumps "Show human-readable content of the received FD_EXTENSION_SUBDIR(dbg_rt "Routing extension for debugging the routing module" ON) FD_EXTENSION_SUBDIR(test_app "Testing application to send dummy message to another peer, like a Diameter 'ping'" OFF) FD_EXTENSION_SUBDIR(test_as "Receive Abort-Session-Requests and display the data" OFF) -FD_EXTENSION_SUBDIR(test_cc "Receive Credit-Control-Requests and display the data" OFF) +FD_EXTENSION_SUBDIR(test_cc "Receive Credit-Control-Requests and display the data" ON) +FD_EXTENSION_SUBDIR(test_ccload "Generate Credit-Control-Requests and count replies" ON) FD_EXTENSION_SUBDIR(test_sip "Testing application to simulate Diameter-SIP client (RFC4740)" OFF) FD_EXTENSION_SUBDIR(dbg_interactive "Python-interpreter based module" OFF) FD_EXTENSION_SUBDIR(test_netemul "Simple Diameter network emulator proxy extension (latency, PDV, duplicates)" OFF) diff --git a/extensions/acl_wl/acl_wl.c b/extensions/acl_wl/acl_wl.c index 97d970b..39c7339 100644 --- a/extensions/acl_wl/acl_wl.c +++ b/extensions/acl_wl/acl_wl.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2011, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/acl_wl/acl_wl.h b/extensions/acl_wl/acl_wl.h index 6ac2cce..56ae203 100644 --- a/extensions/acl_wl/acl_wl.h +++ b/extensions/acl_wl/acl_wl.h @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2011, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/acl_wl/aw_conf.l b/extensions/acl_wl/aw_conf.l index cfcd324..b74cc20 100644 --- a/extensions/acl_wl/aw_conf.l +++ b/extensions/acl_wl/aw_conf.l @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/acl_wl/aw_conf.y b/extensions/acl_wl/aw_conf.y index 5594aa4..3825aa2 100644 --- a/extensions/acl_wl/aw_conf.y +++ b/extensions/acl_wl/aw_conf.y @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/acl_wl/aw_tree.c b/extensions/acl_wl/aw_tree.c index 3ae170a..82e79f4 100644 --- a/extensions/acl_wl/aw_tree.c +++ b/extensions/acl_wl/aw_tree.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2020, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * @@ -339,7 +339,7 @@ int aw_tree_lookup(char * name, int * result) { struct split_name sn; int lbl, found; - struct tree_item * ti; + struct tree_item * ti = NULL; struct fd_list * senti, *li; TRACE_ENTRY("%p %p", name, result); diff --git a/extensions/app_diameap/CMakeLists.txt b/extensions/app_diameap/CMakeLists.txt index f463022..8844286 100644 --- a/extensions/app_diameap/CMakeLists.txt +++ b/extensions/app_diameap/CMakeLists.txt @@ -1,11 +1,26 @@ # The Diameter EAP Application extension PROJECT("Diameter EAP Application extension" C) +INCLUDE (CheckCSourceCompiles) + # Find MySQL FIND_PACKAGE(MySQL REQUIRED) FIND_PACKAGE(Gcrypt REQUIRED) INCLUDE_DIRECTORIES(${MySQL_INCLUDE_DIR}) +# Check for my_bool, deprecated in MySQL 8.0 +SET(CHECK_MYSQL_MY_BOOL " +#include <mysql.h> +int main() { +my_bool f; +}") +SET(CMAKE_REQUIRED_INCLUDES ${MySQL_INCLUDE_DIR}) +SET(CMAKE_REQUIRED_LIBRARIES ${MySQL_LIBRARY}) +CHECK_C_SOURCE_COMPILES("${CHECK_MYSQL_MY_BOOL}" HAVE_MYSQL_MY_BOOL) +IF (HAVE_MYSQL_MY_BOOL) + ADD_DEFINITIONS(-DHAVE_MYSQL_MY_BOOL) +ENDIF() + # Parse plugins ADD_SUBDIRECTORY(plugins) diff --git a/extensions/app_diameap/diameap_eap.c b/extensions/app_diameap/diameap_eap.c index 72885ea..d7b235c 100644 --- a/extensions/app_diameap/diameap_eap.c +++ b/extensions/app_diameap/diameap_eap.c @@ -59,7 +59,7 @@ static void diameap_ba_policyupdate(struct eap_state_machine * eap_sm, struct eap_packet *eapPacket) { TRACE_ENTRY("%p %p",eap_sm, eapPacket); - if ((eap_sm->respMethod == TYPE_NAK)) + if (eap_sm->respMethod == TYPE_NAK) { int id; eap_sm->user.pmethods = 0; @@ -100,7 +100,7 @@ static int diameap_ba_policygetnextmethod(struct eap_state_machine * eap_sm, if (eap_sm->user.userid == NULL) { - if ((eap_sm->currentMethod == TYPE_NONE)) + if (eap_sm->currentMethod == TYPE_NONE) { *vendor = VENDOR_IETF; *eaptype = TYPE_IDENTITY; diff --git a/extensions/app_diameap/diameap_init.c b/extensions/app_diameap/diameap_init.c index e3b8cc9..59a0bbb 100644 --- a/extensions/app_diameap/diameap_init.c +++ b/extensions/app_diameap/diameap_init.c @@ -38,6 +38,11 @@ #include "diameap_common.h" +#ifndef HAVE_MYSQL_MY_BOOL +#include <stdbool.h> +typedef bool my_bool; +#endif /* HAVE_MYSQL_MY_BOOL */ + /* Dictionary Object templates */ struct dict_object * dataobj_diameap_cmd = NULL; /* Diameter-EAP-Request Command Code */ struct dict_object * dataobj_diameap_app = NULL; /* Diameter EAP Application object */ diff --git a/extensions/app_diameap/diameap_server.c b/extensions/app_diameap/diameap_server.c index b93f6bb..329d6a2 100644 --- a/extensions/app_diameap/diameap_server.c +++ b/extensions/app_diameap/diameap_server.c @@ -1674,6 +1674,7 @@ union avp_value diameap_get_num(char * num, enum dict_avp_basetype datatype) break; default: TRACE_DEBUG(INFO, "%sUnknown AVP Base Type.",DIAMEAP_EXTENSION) + memset(&val, 0, sizeof(val)); ; } return val; @@ -1959,22 +1960,16 @@ char * diameap_attribute_operator(char * op, int * toadd, boolean *isrule) switch (*toadd) { case 1: - attribute_op = malloc(strlen(op)); - memset(attribute_op, 0, strlen(op)); - strncpy(attribute_op, op + 1, strlen(op) - 1); - attribute_op[strlen(op)] = '\0'; + attribute_op = calloc(strlen(op), sizeof(char *)); + memcpy(attribute_op, op + 1, strlen(op) - 1); break; case 2: - attribute_op = malloc(strlen(op)); - memset(attribute_op, 0, strlen(op)); - strncpy(attribute_op, op, strlen(op) - 1); - attribute_op[strlen(op)] = '\0'; + attribute_op = calloc(strlen(op), sizeof(char *)); + memcpy(attribute_op, op, strlen(op) - 1); break; default: - attribute_op = malloc(strlen(op) + 1); - memset(attribute_op, 0, strlen(op) + 1); - strcpy(attribute_op, op); - attribute_op[strlen(op) + 1] = '\0'; + attribute_op = calloc(strlen(op) + 1, sizeof(char *)); + memcpy(attribute_op, op, strlen(op)); } if (strcmp(attribute_op, "=") == 0) { @@ -3064,7 +3059,7 @@ static int diameap_server_callback(struct msg ** rmsg, struct avp * ravp, struct sess_state * diameap_sess_data = NULL; struct diameap_state_machine * diameap_sm = NULL; struct diameap_eap_interface eap_i; - struct msg *req, *ans; + struct msg *req, *ans = NULL; boolean non_fatal_error = FALSE; if (rmsg == NULL) diff --git a/extensions/app_radgw/md5.c b/extensions/app_radgw/md5.c index 055fcf0..88995f6 100644 --- a/extensions/app_radgw/md5.c +++ b/extensions/app_radgw/md5.c @@ -286,8 +286,7 @@ void MD5Final(unsigned char digest[16], struct MD5Context *ctx) byteReverse(ctx->in, 14); /* Append length in bits and transform */ - ((u32 *) ctx->in)[14] = ctx->bits[0]; - ((u32 *) ctx->in)[15] = ctx->bits[1]; + os_memcpy(&ctx->in[56], &ctx->bits[0], 8); MD5Transform(ctx->buf, (u32 *) ctx->in); byteReverse((unsigned char *) ctx->buf, 4); diff --git a/extensions/app_radgw/rgw_clients.c b/extensions/app_radgw/rgw_clients.c index 10922ce..1954f7f 100644 --- a/extensions/app_radgw/rgw_clients.c +++ b/extensions/app_radgw/rgw_clients.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2020, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * @@ -548,7 +548,7 @@ int rgw_clients_create_origin(struct rgw_radius_msg_meta *msg, struct rgw_client int idx; int valid_nas_info = 0; struct radius_attr_hdr *nas_ip = NULL, *nas_ip6 = NULL, *nas_id = NULL; - size_t nas_id_len; + size_t nas_id_len = 0; char * oh_str = NULL; size_t oh_strlen = 0; int oh_free = 0; char * or_str = NULL; size_t or_strlen = 0; char * rr_str = NULL; size_t rr_strlen = 0; @@ -710,7 +710,7 @@ int rgw_clients_create_origin(struct rgw_radius_msg_meta *msg, struct rgw_client ASSERT(nas_id); { - int found, ret; + int found = 0, ret; struct addrinfo hint, *res, *ptr; /* @@ -763,7 +763,7 @@ int rgw_clients_create_origin(struct rgw_radius_msg_meta *msg, struct rgw_client hint.ai_flags = AI_CANONNAME; ret = getaddrinfo(buf, NULL, &hint, &res); if (ret == 0) { - strncpy(buf, res->ai_canonname, sizeof(buf)); + snprintf(buf, sizeof(buf), "%s", res->ai_canonname); /* The name was resolved correctly, does it match the IP of the client? */ for (ptr = res; ptr != NULL; ptr = ptr->ai_next) { if (cli->sa->sa_family != ptr->ai_family) diff --git a/extensions/app_sip/TODO b/extensions/app_sip/TODO index 661face..bef88f7 100644 --- a/extensions/app_sip/TODO +++ b/extensions/app_sip/TODO @@ -49,6 +49,10 @@ TODO List * add mutex on mysql writing * check multithreading of mysql! * get destination host in database for RTR and PPR +* libapp_sip.c: fix username_pure memory leaks +* app_sip_MAR_cb: + - too much mysql_real_escape_string() use, both within the function and functions it calls + - on error, leaks allocated: sipuri, username, query. diff --git a/extensions/app_sip/app_sip.h b/extensions/app_sip/app_sip.h index a6532b7..09960c6 100644 --- a/extensions/app_sip/app_sip.h +++ b/extensions/app_sip/app_sip.h @@ -110,8 +110,6 @@ void DigestCalcHA1(char * pszAlg,char * pszUserName,char * pszRealm,char * pszPa void DigestCalcResponse(HASHHEX HA1,char * pszNonce,char * pszNonceCount,char * pszCNonce,char * pszQop,char * pszMethod,char * pszDigestUri,HASHHEX HEntity,HASHHEX Response); void DigestCalcResponseAuth(HASHHEX HA1,char * pszNonce,char * pszNonceCount,char * pszCNonce,char * pszQop,char * pszMethod,char * pszDigestUri,HASHHEX HEntity,HASHHEX Response); -int fd_avp_search_avp ( struct avp * groupedavp, struct dict_object * what, struct avp ** avp ); - //thread procedure void *rtr_socket(void *); void *ppr_socket(void *); diff --git a/extensions/app_sip/libapp_sip.c b/extensions/app_sip/libapp_sip.c index 6442ff4..ffe1c80 100644 --- a/extensions/app_sip/libapp_sip.c +++ b/extensions/app_sip/libapp_sip.c @@ -66,54 +66,6 @@ void calc_md5(char *clearDigest, char * data) return; } - -/* Search a given AVP model in an AVP (extracted from libfreediameter/message.c ) */ -int fd_avp_search_avp ( struct avp * groupedavp, struct dict_object * what, struct avp ** avp ) -{ - struct avp * nextavp; - struct avp_hdr * nextavphdr; - struct dict_avp_data dictdata; - - - TRACE_ENTRY("%p %p %p", groupedavp, what, avp); - - CHECK_FCT( fd_dict_getval(what, &dictdata) ); - - // Loop only in the group AVP - CHECK_FCT( fd_msg_browse(groupedavp, MSG_BRW_FIRST_CHILD, (void *)&nextavp, NULL) ); - CHECK_FCT( fd_msg_avp_hdr( nextavp, &nextavphdr ) ); - - while (nextavphdr) { - - if ( (nextavphdr->avp_code == dictdata.avp_code) && (nextavphdr->avp_vendor == dictdata.avp_vendor) ) // always 0 if no Vendor flag - { - break; - } - - // Otherwise move to next AVP in the grouped AVP - CHECK_FCT( fd_msg_browse(nextavp, MSG_BRW_NEXT, (void *)&nextavp, NULL) ); - - if(nextavp!=NULL) - { - CHECK_FCT( fd_msg_avp_hdr( nextavp, &nextavphdr ) ); - } - else - nextavphdr=NULL; - } - if (avp) - *avp = nextavp; - - if (avp && nextavp) { - struct dictionary * dict; - CHECK_FCT( fd_dict_getdict( what, &dict) ); - CHECK_FCT_DO( fd_msg_parse_dict( nextavp, dict, NULL ), ); - } - - if (avp || nextavp) - return 0; - else - return ENOENT; -} struct avp_hdr *walk_digest(struct avp *avp, int avp_code) { struct avp_hdr *temphdr=NULL; diff --git a/extensions/app_sip/md5.c b/extensions/app_sip/md5.c index 4079bda..11b18f5 100644 --- a/extensions/app_sip/md5.c +++ b/extensions/app_sip/md5.c @@ -309,8 +309,7 @@ void MD5Final(unsigned char digest[16], struct MD5Context *ctx) byteReverse(ctx->in, 14); /* Append length in bits and transform */ - ((u32 *) ctx->in)[14] = ctx->bits[0]; - ((u32 *) ctx->in)[15] = ctx->bits[1]; + os_memcpy(&ctx->in[56], &ctx->bits[0], 8); MD5Transform(ctx->buf, (u32 *) ctx->in); byteReverse((unsigned char *) ctx->buf, 4); diff --git a/extensions/app_sip/multimediaauth.c b/extensions/app_sip/multimediaauth.c index 12c1bcb..cb368da 100644 --- a/extensions/app_sip/multimediaauth.c +++ b/extensions/app_sip/multimediaauth.c @@ -50,7 +50,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s union avp_value val; int found_cnonce=0; struct avp * tempavp=NULL,*sipAuthentication=NULL,*sipAuthenticate=NULL; - char * result; + char * result = NULL; char password[51]; int idx=0, number_of_auth_items=0,i=0, ret=0; //Flags and variables for Database @@ -148,7 +148,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s if(not_found) { - TRACE_DEBUG(FULL,"The user %s doesn't exist!",username); + TRACE_DEBUG(FULL,"The user %s doesn't exist!", avphdr->avp_value->os.data); result="DIAMETER_ERROR_USER_UNKNOWN"; free(username); goto out; @@ -320,7 +320,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s //CHECK_FCT(fd_msg_browse ( avp, MSG_BRW_WALK, &avp, NULL) ); - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_CNonce, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_CNonce, &a2 )); if(a2!=NULL) found_cnonce=1; @@ -457,7 +457,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s char * digest_username=NULL, *digest_uri=NULL, *digest_response=NULL, *digest_realm=NULL, *digest_nonce=NULL, *digest_method=NULL, *digest_qop=NULL, *digest_algorithm=NULL, *digest_cnonce=NULL, *digest_noncecount=NULL; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Nonce, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Nonce, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -486,7 +486,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s } } - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Response, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Response, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -500,7 +500,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s } } - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Realm, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Realm, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -514,7 +514,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s } } - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Method, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Method, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -530,7 +530,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s else digest_method=""; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_URI, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_URI, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -544,7 +544,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s } } - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_QOP, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_QOP, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -559,7 +559,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s } else digest_qop=NULL; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Algorithm, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Algorithm, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -574,7 +574,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s } else digest_algorithm=NULL; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_CNonce, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_CNonce, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -589,7 +589,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s } else digest_cnonce=""; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Nonce_Count, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Nonce_Count, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -604,7 +604,7 @@ int app_sip_MAR_cb( struct msg ** msg, struct avp * paramavp, struct session * s } else digest_noncecount=""; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Username, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Username, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); diff --git a/extensions/app_sip/registrationtermination.c b/extensions/app_sip/registrationtermination.c index 9300467..7f43c28 100644 --- a/extensions/app_sip/registrationtermination.c +++ b/extensions/app_sip/registrationtermination.c @@ -114,7 +114,7 @@ int app_sip_RTR_cb(struct rtrsipaor *structure) } } - if(structure->strreason!='\0') + if(structure->strreason[0]!='\0') got_streason=1; diff --git a/extensions/dbg_dict_dump/CMakeLists.txt b/extensions/dbg_dict_dump/CMakeLists.txt new file mode 100644 index 0000000..c193666 --- /dev/null +++ b/extensions/dbg_dict_dump/CMakeLists.txt @@ -0,0 +1,12 @@ +# Dictionary dump extension +PROJECT("Dictionary dump extension" C) +FD_ADD_EXTENSION(dbg_dict_dump dbg_dict_dump.c) + + +#### +## INSTALL section ## + +INSTALL(TARGETS dbg_dict_dump + LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX} + COMPONENT freeDiameter-debug-tools) + diff --git a/extensions/dbg_dict_dump/dbg_dict_dump.c b/extensions/dbg_dict_dump/dbg_dict_dump.c new file mode 100644 index 0000000..2fa0b5e --- /dev/null +++ b/extensions/dbg_dict_dump/dbg_dict_dump.c @@ -0,0 +1,87 @@ +/********************************************************************************************************* +* Software License Agreement (BSD License) * +* Author: Luke Mewburn <luke@mewburn.net> * +* * +* Copyright (c) 2020, WIDE Project and NICT * +* All rights reserved. * +* * +* Redistribution and use of this software in source and binary forms, with or without modification, are * +* permitted provided that the following conditions are met: * +* * +* * Redistributions of source code must retain the above * +* copyright notice, this list of conditions and the * +* following disclaimer. * +* * +* * Redistributions in binary form must reproduce the above * +* copyright notice, this list of conditions and the * +* following disclaimer in the documentation and/or other * +* materials provided with the distribution. * +* * +* * Neither the name of the WIDE Project or NICT nor the * +* names of its contributors may be used to endorse or * +* promote products derived from this software without * +* specific prior written permission of WIDE Project and * +* NICT. * +* * +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * +* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * +* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * +* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * +* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * +* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * +*********************************************************************************************************/ + +/* + * Dump Diameter dictionary (using fd_dict_dump()) to a file or the log. + * + * If conffile is provided, write the dump to that file, + * otherwise write to log. + */ + +#include <freeDiameter/extension.h> + +static int dbg_dict_dump_entry(char * conffile) +{ + TRACE_ENTRY("%p", conffile); + + FILE * out = NULL; + if (conffile) { + LOG_N("Dictionary dump to file '%s'", conffile); + out = fopen(conffile, "w"); + if (NULL == out) { + LOG_E("Cannot open output file '%s' for writing", conffile); + return EINVAL; + } + } else { + LOG_N("Dictionary dump to log"); + } + + char * tbuf = NULL; size_t tbuflen = 0; + if (NULL == fd_dict_dump(&tbuf, &tbuflen, NULL, fd_g_config->cnf_dict)) { + LOG_E("Cannot dump dictionary"); + } else if (out) { + fprintf(out, "%s\n", tbuf); + } else { + LOG_N("%s", fd_dict_dump(&tbuf, &tbuflen, NULL, fd_g_config->cnf_dict)); + } + free(tbuf); + if (out) { + fclose(out); + out = NULL; + } + + LOG_N("Dictionary dump completed"); + return 0; +} + +void fd_ext_fini(void) +{ + TRACE_ENTRY(); + + /* Nothing to do */ + return; +} + +EXTENSION_ENTRY("dbg_dict_dump", dbg_dict_dump_entry); diff --git a/extensions/dbg_dict_dump_json/CMakeLists.txt b/extensions/dbg_dict_dump_json/CMakeLists.txt new file mode 100644 index 0000000..e02306b --- /dev/null +++ b/extensions/dbg_dict_dump_json/CMakeLists.txt @@ -0,0 +1,21 @@ +PROJECT("Dictionary dump to JSON extension" C) +FD_ADD_EXTENSION(dbg_dict_dump_json dbg_dict_dump_json.cc) + +# sneakily uses dictionary-internal.h +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../libfdproto) + +INCLUDE(FindPkgConfig) + +# Uses JSONCPP to write JSON files +PKG_CHECK_MODULES(JSONCPP REQUIRED jsoncpp) +INCLUDE_DIRECTORIES(${JSONCPP_INCLUDE_DIRS}) +LINK_DIRECTORIES(${JSONCPP_LIBDIR}) +TARGET_LINK_LIBRARIES(dbg_dict_dump_json ${JSONCPP_LIBRARIES}) + +#### +## INSTALL section ## + +INSTALL(TARGETS dbg_dict_dump_json + LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX} + COMPONENT freeDiameter-debug-tools) + diff --git a/extensions/dbg_dict_dump_json/dbg_dict_dump_json.cc b/extensions/dbg_dict_dump_json/dbg_dict_dump_json.cc new file mode 100644 index 0000000..6fd2539 --- /dev/null +++ b/extensions/dbg_dict_dump_json/dbg_dict_dump_json.cc @@ -0,0 +1,441 @@ +/********************************************************************************************************** + * Software License Agreement (BSD License) * + * Author: Thomas Klausner <tk@giga.or.at> * + * * + * Copyright (c) 2020 Thomas Klausner * + * All rights reserved. * + * * + * Written under contract by nfotex IT GmbH, http://nfotex.com/ * + * * + * Redistribution and use of this software in source and binary forms, with or without modification, are * + * permitted provided that the following conditions are met: * + * * + * * Redistributions of source code must retain the above * + * copyright notice, this list of conditions and the * + * following disclaimer. * + * * + * * Redistributions in binary form must reproduce the above * + * copyright notice, this list of conditions and the * + * following disclaimer in the documentation and/or other * + * materials provided with the distribution. * + * * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * + **********************************************************************************************************/ + + +/* + * Dump Diameter dictionary to JSON file. + */ + +#include <freeDiameter/extension.h> +#include "dictionary-internal.h" +#include <json/json.h> +#include <sys/stat.h> + +#include <iomanip> +#include <sstream> + + +void +dump_vendor(dict_object *self, struct dict_vendor_data *data, struct dict_object *parent, int depth, Json::Value &main) +{ + Json::Value vendor; + + vendor["Code"] = Json::Value(data->vendor_id); + vendor["Name"] = Json::Value(data->vendor_name); + main["Vendors"].append(vendor); +} + +void +dump_application(dict_object *self, struct dict_application_data *data, struct dict_object *parent, int depth, Json::Value &main) +{ + Json::Value application; + + application["Code"] = Json::Value(data->application_id); + application["Name"] = Json::Value(data->application_name); + main["Applications"].append(application); +} + +void +dump_enumval(dict_object *self, struct dict_enumval_data *data, struct dict_object *parent, int depth, Json::Value &main) +{ + enum dict_avp_basetype type; + struct dict_type_data type_data; + Json::Value enumval; + bool is_printable; + + type = parent->data.type.type_base; + + /* Standard only allows Integer32 Enumerated values, but freeDiameter is more permissive */ + switch (type) { + case AVP_TYPE_OCTETSTRING: + is_printable = true; + for (size_t i = 0; i < data->enum_value.os.len; i++) { + if (isprint(data->enum_value.os.data[i]) == 0) { + is_printable = false; + break; + } + } + if (is_printable) { + std::string output((const char*)data->enum_value.os.data, (size_t)data->enum_value.os.len); + enumval["Code"] = Json::Value(output); + } else { + std::stringstream quoted_string; + quoted_string << "<"; + for (size_t i = 0; i < data->enum_value.os.len; i++) { + quoted_string << std::hex << std::setfill('0') << std::setw(2) << (int)data->enum_value.os.data[i]; + } + quoted_string << ">"; + enumval["Code"] = Json::Value(quoted_string.str()); + } + break; + + case AVP_TYPE_INTEGER32: + enumval["Code"] = Json::Value(data->enum_value.i32); + break; + + case AVP_TYPE_INTEGER64: + enumval["Code"] = Json::Value(static_cast<Json::Int64>(data->enum_value.i64)); + break; + + case AVP_TYPE_UNSIGNED32: + enumval["Code"] = Json::Value(data->enum_value.u32); + break; + + case AVP_TYPE_UNSIGNED64: + enumval["Code"] = Json::Value(static_cast<Json::UInt64>(data->enum_value.u64)); + break; + + case AVP_TYPE_FLOAT32: + enumval["Code"] = Json::Value(data->enum_value.f32); + break; + + case AVP_TYPE_FLOAT64: + enumval["Code"] = Json::Value(data->enum_value.f64); + break; + + default: + printf("??? (ERROR unknown type %d)", type); + break; + } + if (fd_dict_getval(parent, &type_data) != 0) { + /* TODO: fd_dict_getval error */ + return; + } + if (!main.isMember("Types") || !main["Types"].isMember(type_data.type_name)) { + /* TODO: missing type error */ + return; + } + + enumval["Name"] = Json::Value(data->enum_name); + main["Types"][type_data.type_name]["EnumValues"].append(enumval); +} + +void +dump_type(dict_object *self, struct dict_type_data *data, struct dict_object *parent, int depth, Json::Value &main) +{ + Json::Value type; + + type["Name"] = Json::Value(data->type_name); + type["Base"] = Json::Value(type_base_name[data->type_base]); + main["Types"][data->type_name] = type; +} + +#define AVPFL_str "%s%s" +#define AVPFL_val(_val) (_val & AVP_FLAG_VENDOR)?"V":"" , (_val & AVP_FLAG_MANDATORY)?"M":"" + +void +dump_avp(dict_object *self, struct dict_avp_data *data, struct dict_object *parent, int depth, Json::Value &main) +{ + struct dict_object *type = NULL; + struct dict_type_data type_data; + Json::Value avp; + char flags[10]; + + if (fd_dict_search(fd_g_config->cnf_dict, DICT_TYPE, TYPE_OF_AVP, self, &type, 0) != 0) { + /* TODO: fd_dict_search error */ + return; + } + + if ((type == NULL) || (fd_dict_getval(type, &type_data) != 0)) { + avp["Type"] = Json::Value(type_base_name[data->avp_basetype]); + } else { + if (strstr(type_data.type_name, "Enumerated") != 0) { + if (data->avp_basetype == AVP_TYPE_INTEGER32) { + avp["Type"] = "Enumerated"; + } else { + /* freeDiameter allows enumerated types not based on integer32; + * write those out with their basic type for dict_json */ + avp["Type"] = Json::Value(type_base_name[data->avp_basetype]); + } + } else { + avp["Type"] = Json::Value(type_data.type_name); + } + if (main["Types"].isMember(type_data.type_name) && main["Types"][type_data.type_name].isMember("EnumValues")) { + avp["EnumValues"] = main["Types"][type_data.type_name]["EnumValues"]; + } + } + + avp["Code"] = Json::Value(data->avp_code); + if (data->avp_vendor != 0) { + avp["Vendor"] = Json::Value(data->avp_vendor); + } + avp["Name"] = Json::Value(data->avp_name); + snprintf(flags, sizeof(flags), AVPFL_str, AVPFL_val(data->avp_flag_val)); + avp["Flags"]["Must"] = Json::Value(flags); + snprintf(flags, sizeof(flags), AVPFL_str, AVPFL_val(data->avp_flag_mask & ~data->avp_flag_val)); + avp["Flags"]["MustNot"] = Json::Value(flags); + + main["AVPs"].append(avp); +} + +#define CMDFL_str "%s%s%s%s" +#define CMDFL_val(_val) (_val & CMD_FLAG_REQUEST)?"R":"" , (_val & CMD_FLAG_PROXIABLE)?"P":"" , (_val & CMD_FLAG_ERROR)?"E":"" , (_val & CMD_FLAG_RETRANSMIT)?"T":"" + +void +dump_command(dict_object *self, struct dict_cmd_data *data, struct dict_object *parent, int depth, Json::Value &main) +{ + Json::Value command; + char flags[10]; + + command["Code"] = Json::Value(data->cmd_code); + command["Name"] = Json::Value(data->cmd_name); + snprintf(flags, sizeof(flags), CMDFL_str, CMDFL_val(data->cmd_flag_val)); + command["Flags"]["Must"] = Json::Value(flags); + snprintf(flags, sizeof(flags), CMDFL_str, CMDFL_val(data->cmd_flag_mask & ~data->cmd_flag_val)); + command["Flags"]["MustNot"] = Json::Value(flags); + main["Commands"].append(command); +} + +bool dump_object(dict_object *self, int depth, Json::Value &main); + +void +dump_rule(dict_object *self, struct dict_rule_data *data, struct dict_object *parent, int depth, Json::Value &main) +{ + Json::Value avp_rule; + struct dict_avp_data avp_data; + const char *slot, *entry, *parent_avp_name; + vendor_id_t parent_avp_vendor; + unsigned int i; + bool found = false; + enum dict_object_type parent_type; + + if (fd_dict_getval(data->rule_avp, &avp_data) != 0) { + /* TODO: fd_dict_getval error */ + return; + } + + if (avp_data.avp_vendor != 0) { + avp_rule["Vendor"] = Json::Value(avp_data.avp_vendor); + } + avp_rule["AVP"] = Json::Value(avp_data.avp_name); + /* TODO is this correct? what does rule_order specify? */ + if (data->rule_position == RULE_FIXED_HEAD) { + avp_rule["First"] = Json::Value(true); + } + /* TODO: insert "unbounded" for -1? */ + if (data->rule_min != -1) { + avp_rule["Min"] = Json::Value(data->rule_min); + } + if (data->rule_max != -1) { + avp_rule["Max"] = Json::Value(data->rule_max); + } + + int ret = fd_dict_gettype(parent, &parent_type); + if (ret != 0) { + /* TODO: fd_dict_gettype error */ + return; + } + + if (parent_type == DICT_AVP) { + struct dict_avp_data parent_data; + + slot = "AVPRules"; + entry = "AVP"; + if (fd_dict_getval(parent, &parent_data) != 0) { + /* TODO: fd_dict_getval error */ + return; + } + parent_avp_name = parent_data.avp_name; + parent_avp_vendor = parent_data.avp_vendor; + } else if (parent_type == DICT_COMMAND) { + struct dict_cmd_data parent_data; + + slot = "CommandRules"; + entry = "Command"; + if (fd_dict_getval(parent, &parent_data) != 0) { + /* TODO: fd_dict_getval error */ + return; + } + parent_avp_name = parent_data.cmd_name; + parent_avp_vendor = 0; + } else { + /* TODO: error, unknown case */ + return; + } + + for (i=0; i<main[slot].size(); i++) { + if (main[slot][i][entry] == parent_avp_name + && (parent_avp_vendor == 0 || !main[slot][i].isMember("Vendor") || parent_avp_vendor == main[slot][i]["Vendor"].asUInt())) { + found = true; + main[slot][i]["Content"].append(avp_rule); + break; + } + } + if (!found) { + Json::Value parent_avp; + parent_avp[entry] = parent_avp_name; + if (parent_avp_vendor != 0) { + parent_avp["Vendor"] = Json::Value(parent_avp_vendor); + } + parent_avp["Content"].append(avp_rule); + main[slot].append(parent_avp); + } + +} + +bool +dump_list(struct fd_list *list, const char *type, int depth, Json::Value &main) { + fd_list *li; + for (li = list->next; li != list; li = li->next) { + if (!dump_object((dict_object *)li->o, depth, main)) { + LOG_E("error dumping %s", type); + return false; + } + } + return true; +} + +bool +dump_object(dict_object *self, int depth, Json::Value &main) +{ + enum dict_object_type t; + int ret = fd_dict_gettype (self, &t); + if (ret != 0) { + return false; + } + + switch (t) { +#define DUMP_OBJECT_CASE(TYPE, STRUCT, DUMP_FUNCTION) \ + case TYPE: { \ + struct STRUCT * data = NULL; \ + int i; \ + data = (struct STRUCT *)malloc(sizeof(struct STRUCT)); \ + if (!data) { \ + /* TODO: malloc error */ \ + return false; \ + } \ + ret = fd_dict_getval(self, data); \ + if (ret != 0) { \ + /* TODO: fd_dict_getval error */ \ + free(data); \ + return false; \ + } \ + DUMP_FUNCTION(self, data, self->parent, depth, main); \ + if (depth > 0) { \ + for (i=0; i<NB_LISTS_PER_OBJ; i++) { \ + if ((self->list[i].o == NULL) && (self->list[i].next != &self->list[i])) { \ + dump_list(&self->list[i], 0, depth-1, main); \ + break; \ + } \ + } \ + } \ + } \ + break; + + DUMP_OBJECT_CASE(DICT_VENDOR, dict_vendor_data, dump_vendor); + DUMP_OBJECT_CASE(DICT_APPLICATION, dict_application_data, dump_application); + DUMP_OBJECT_CASE(DICT_TYPE, dict_type_data, dump_type); + DUMP_OBJECT_CASE(DICT_ENUMVAL, dict_enumval_data, dump_enumval); + DUMP_OBJECT_CASE(DICT_AVP, dict_avp_data, dump_avp); + DUMP_OBJECT_CASE(DICT_COMMAND, dict_cmd_data, dump_command); + DUMP_OBJECT_CASE(DICT_RULE, dict_rule_data, dump_rule); + default: + /* TODO: unhandled type error */ + return false; + } + return true; +} + +bool +dump_dictionary_to_json(dictionary *dict, Json::Value &main) +{ + if (dict == NULL) { + return false; + } + + if (pthread_rwlock_rdlock(&dict->dict_lock) != 0) { + return false; + } + + dump_list(&(dict->dict_types), "types", 2, main); + dump_object(&(dict->dict_vendors), 3, main); + dump_list(&(dict->dict_vendors.list[0]), "vendors", 3, main); + dump_object(&(dict->dict_applications), 1, main); + dump_list(&(dict->dict_applications.list[0]), "applications", 1, main); + dump_list(&(dict->dict_cmd_code), "commands", 1, main); + + if (pthread_rwlock_unlock( &dict->dict_lock) != 0) { + return false; + } + + return true; +} + + +static int +dbg_dict_dump_json_entry(char * conffile) +{ + TRACE_ENTRY("%p", conffile); + Json::Value main; + Json::Value types = Json::Value::null; + Json::StyledWriter writer; + FILE *out = stdout; + + if (conffile) { + if ((out=fopen(conffile, "w")) == NULL) { + LOG_E("cannot open output file '%s' for writing", conffile); + return EINVAL; + } + } + + /* get main dictionary */ + struct dictionary * dict = fd_g_config->cnf_dict; + if (!dump_dictionary_to_json(dict, main)) { + LOG_E("error dumping dictionary to JSON"); + return EINVAL; + } + /* remove enumerated types before dumping, they are in AVPs */ + /* convert remaining ones to array */ + Json::Value::Members members = main["Types"].getMemberNames(); + for (Json::Value::Members::const_iterator it = members.begin() ; it != members.end(); ++it) { + if (strncmp("Enumerated", main["Types"][*it]["Name"].asCString(), strlen("Enumerated")) == 0) { + main["Types"].removeMember(*it); + } else { + types.append(main["Types"][*it]); + } + } + main.removeMember("Types"); + main["Types"] = types; + + std::string value_str = writer.write(main); + fprintf(out, "%s\n", value_str.c_str()); + + if (conffile) { + fclose(out); + } + + LOG_N("Extension 'Dump dictionaries to JSON' initialized"); + return 0; +} + +extern "C" { + EXTENSION_ENTRY("dbg_dict_dump_json", dbg_dict_dump_json_entry); +} diff --git a/extensions/dbg_loglevel/dbg_loglevel_conf.l b/extensions/dbg_loglevel/dbg_loglevel_conf.l index 0a8d206..038e50a 100644 --- a/extensions/dbg_loglevel/dbg_loglevel_conf.l +++ b/extensions/dbg_loglevel/dbg_loglevel_conf.l @@ -3,7 +3,7 @@ * Authors: Thomas Klausner <tk@giga.or.at> based on code by Sebastien Decugis <sdecugis@freediameter.net>* * * * Copyright (c) 2019, Thomas Klausner * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Written under contract by Effortel Technologies SA, http://effortel.com/ * diff --git a/extensions/dbg_monitor/dbg_monitor.c b/extensions/dbg_monitor/dbg_monitor.c index de7c13a..f5d8f09 100644 --- a/extensions/dbg_monitor/dbg_monitor.c +++ b/extensions/dbg_monitor/dbg_monitor.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2020, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * @@ -75,7 +75,9 @@ static void display_info(char * queue_desc, char * peer, int current_count, int static pthread_t thr; static void * mn_thr(void * arg) { +#ifdef DEBUG int i = 0; +#endif fd_log_threadname("Monitor thread"); char * buf = NULL; size_t len; diff --git a/extensions/dbg_msg_dumps/dbg_msg_dumps.c b/extensions/dbg_msg_dumps/dbg_msg_dumps.c index a26b14c..238f2b0 100644 --- a/extensions/dbg_msg_dumps/dbg_msg_dumps.c +++ b/extensions/dbg_msg_dumps/dbg_msg_dumps.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2015, WIDE Project and NICT * +* Copyright (c) 2016, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/dbg_rt/dbg_rt.c b/extensions/dbg_rt/dbg_rt.c index 906e18e..0aefcbe 100644 --- a/extensions/dbg_rt/dbg_rt.c +++ b/extensions/dbg_rt/dbg_rt.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2020, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * @@ -33,8 +33,8 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *********************************************************************************************************/ -/* - * Debug-only extension for routing module; +/* + * Debug-only extension for routing module; * displays state information at the end of routing information process. */ #include <freeDiameter/extension.h> @@ -47,7 +47,7 @@ static int dbgrt_fwd_cb(void * cbdata, struct msg ** msg) { char * buf = NULL; size_t buflen; TRACE_ENTRY("%p %p", cbdata, msg); - + LOG_D("[dbg_rt] FWD routing message: %p", msg ? *msg : NULL); if (msg) { CHECK_MALLOC( fd_msg_dump_treeview(&buf, &buflen, NULL, *msg, NULL, 0, 1) ); @@ -63,19 +63,20 @@ static int dbgrt_out_cb(void * cbdata, struct msg ** pmsg, struct fd_list * cand struct fd_list * li; struct msg * msg = *pmsg; char * buf = NULL; size_t buflen; - + TRACE_ENTRY("%p %p %p", cbdata, msg, candidates); - + LOG_D("[dbg_rt] OUT routing message: %p", msg); CHECK_MALLOC( fd_msg_dump_treeview(&buf, &buflen, NULL, msg, NULL, 0, 1) ); LOG_D("%s", buf); + free(buf); LOG_D("[dbg_rt] Current list of candidates (%p): (score - id)", msg); - + for (li = candidates->next; li != candidates; li = li->next) { struct rtd_candidate *c = (struct rtd_candidate *) li; LOG_D("[dbg_rt] %d -\t%s", c->score, c->diamid); } - + return 0; } @@ -83,7 +84,7 @@ static int dbgrt_out_cb(void * cbdata, struct msg ** pmsg, struct fd_list * cand static int dbgrt_main(char * conffile) { TRACE_ENTRY("%p", conffile); - + CHECK_FCT( fd_rt_fwd_register ( dbgrt_fwd_cb, NULL, RT_FWD_ALL, &fwd_hdl ) ); CHECK_FCT( fd_rt_out_register ( dbgrt_out_cb, NULL, -1 /* so that it is called late */, &out_hdl ) ); @@ -94,11 +95,11 @@ static int dbgrt_main(char * conffile) void fd_ext_fini(void) { TRACE_ENTRY(); - + /* Unregister the modules */ CHECK_FCT_DO( fd_rt_fwd_unregister ( fwd_hdl, NULL ), /* continue */ ); CHECK_FCT_DO( fd_rt_out_unregister ( out_hdl, NULL ), /* continue */ ); - + return ; } diff --git a/extensions/dict_dcca_3gpp/CMakeLists.txt b/extensions/dict_dcca_3gpp/CMakeLists.txt index 7105c15..b4cc5ba 100644 --- a/extensions/dict_dcca_3gpp/CMakeLists.txt +++ b/extensions/dict_dcca_3gpp/CMakeLists.txt @@ -2,7 +2,7 @@ PROJECT("Diameter DCCA (Diameter Credit Control Application) 3GPP dictionary definitions" C) # Compile as a module -FD_ADD_EXTENSION(dict_dcca_3gpp dict_dcca_3gpp.c) +FD_ADD_EXTENSION(dict_dcca_3gpp dict_dcca_3gpp.c add_avps.c) #### diff --git a/extensions/dict_dcca_3gpp/add_avps.c b/extensions/dict_dcca_3gpp/add_avps.c new file mode 100644 index 0000000..60d3c64 --- /dev/null +++ b/extensions/dict_dcca_3gpp/add_avps.c @@ -0,0 +1,21454 @@ +/* +Generated by: + csv_to_fd -p fdc dict_dcca_3gpp.csv + +Do not modify; modify the source .csv files instead. +*/ + +#include <freeDiameter/extension.h> + +#define CHECK_dict_new( _type, _data, _parent, _ref ) \ + CHECK_FCT( fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref)) ); + +#define CHECK_dict_search( _type, _criteria, _what, _result ) \ + CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) ); + +int add_avps() +{ + struct dict_object * DiameterIdentity_type = NULL; + CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type); + + struct dict_object * DiameterURI_type = NULL; + CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type); + + struct dict_object * Time_type = NULL; + CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type); + + struct dict_object * UTF8String_type = NULL; + CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type); + + struct dict_object * IPFilterRule_type = NULL; + CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type); + + struct dict_object * Address_type = NULL; + CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type); + + /*==================================================================*/ + /* 3GPP TS 29.061 V15.5.0 (2018-12) */ + /* Interworking between the Public Land Mobile Network (PLMN) */ + /* supporting packet based services and */ + /* Packet Data Networks (PDN) */ + /* */ + /* From 3GPP 29061-f50.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.061 Table 9a: Gi/Sgi specific AVPs */ + + /* Note: 3GPP TS 29.061 is unclear and inconsistent about M. */ + /* For this reason, other sources are assumed more trustworthy. */ + /*==================================================================*/ + + /* Fix: 3GPP-IMSI (1) changed to Must M. */ + /* 3GPP-IMSI, UTF8String, code 1, section 16.4.7 */ + { + struct dict_avp_data data = { + 1, /* Code */ + 10415, /* Vendor */ + "3GPP-IMSI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Fix: 3GPP-Charging-Id (2) type changed from OctetString to Unsigned32, */ + /* per 3GPP TS 29.061 clause 16.4.7.2/2 and packet dumps. */ + /* 3GPP-Charging-Id, Unsigned32, code 2, section 16.4.7 */ + { + struct dict_avp_data data = { + 2, /* Code */ + 10415, /* Vendor */ + "3GPP-Charging-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Fix: 3GPP-PDP-Type (3) changed to Must M. */ + /* 3GPP-PDP-Type, Enumerated, code 3, section 16.4.7 */ + { + struct dict_avp_data data = { + 3, /* Code */ + 10415, /* Vendor */ + "3GPP-PDP-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/3GPP-PDP-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* 3GPP-CG-Address, OctetString, code 4, section 16.4.7 */ + { + struct dict_avp_data data = { + 4, /* Code */ + 10415, /* Vendor */ + "3GPP-CG-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Fix: 3GPP-GPRS-Negotiated-QoS-Profile (5) changed to Must M per contrib/3gpp. */ + /* 3GPP-GPRS-Negotiated-QoS-Profile, UTF8String, code 5, section 16.4.7 */ + { + struct dict_avp_data data = { + 5, /* Code */ + 10415, /* Vendor */ + "3GPP-GPRS-Negotiated-QoS-Profile", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* 3GPP-SGSN-Address, OctetString, code 6, section 16.4.7 */ + { + struct dict_avp_data data = { + 6, /* Code */ + 10415, /* Vendor */ + "3GPP-SGSN-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-GGSN-Address, OctetString, code 7, section 16.4.7 */ + { + struct dict_avp_data data = { + 7, /* Code */ + 10415, /* Vendor */ + "3GPP-GGSN-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Fix: 3GPP-IMSI-MCC-MNC (8) changed to Must M per packet dumps. */ + /* 3GPP-IMSI-MCC-MNC, UTF8String, code 8, section 16.4.7 */ + { + struct dict_avp_data data = { + 8, /* Code */ + 10415, /* Vendor */ + "3GPP-IMSI-MCC-MNC", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Fix: 3GPP-GGSN-MCC-MNC (9) changed to Must M per contrib/3gpp. */ + /* 3GPP-GGSN-MCC-MNC, UTF8String, code 9, section 16.4.7 */ + { + struct dict_avp_data data = { + 9, /* Code */ + 10415, /* Vendor */ + "3GPP-GGSN-MCC-MNC", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Fix: 3GPP-NSAPI (10) changed to Must M per contrib/3gpp. */ + /* 3GPP-NSAPI, OctetString, code 10, section 16.4.7 */ + { + struct dict_avp_data data = { + 10, /* Code */ + 10415, /* Vendor */ + "3GPP-NSAPI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.061 Table 9a does not define */ + /* 3GPP-Session-Stop-Indicator (11) even when it is referenced */ + /* by other 3GPP Diameter AVPs including PS-Information (874). */ + /* */ + /* Fix: Add 3GPP-Session-Stop-Indicator (11) OctetString. */ + /* 3GPP-Session-Stop-Indicator, OctetString, code 11, section 16.4.7 */ + { + struct dict_avp_data data = { + 11, /* Code */ + 10415, /* Vendor */ + "3GPP-Session-Stop-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Fix: 3GPP-Selection-Mode (12) changed to Must M per contrib/3gpp. */ + /* 3GPP-Selection-Mode, UTF8String, code 12, section 16.4.7 */ + { + struct dict_avp_data data = { + 12, /* Code */ + 10415, /* Vendor */ + "3GPP-Selection-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Fix: 3GPP-Charging-Characteristics (13) changed to Must M per contrib/3gpp. */ + /* 3GPP-Charging-Characteristics, UTF8String, code 13, section 16.4.7 */ + { + struct dict_avp_data data = { + 13, /* Code */ + 10415, /* Vendor */ + "3GPP-Charging-Characteristics", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed */ + /* 3GPP-CG-IPv6-Address (14) to 3GPP-CG-Ipv6-Address. */ + /* */ + /* Fix: 3GPP-CG-Ipv6-Address (14) changed to Must M per contrib/3gpp. */ + /* Change-1.4.0: 3GPP-CG-IPv6-Address (14) renamed to 3GPP-CG-Ipv6-Address (14). */ + /* 3GPP-CG-Ipv6-Address, OctetString, code 14, section 16.4.7 */ + { + struct dict_avp_data data = { + 14, /* Code */ + 10415, /* Vendor */ + "3GPP-CG-Ipv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed */ + /* 3GPP-SGSN-IPv6-Address (15) to 3GPP-SGSN-Ipv6-Address. */ + /* */ + /* Fix: 3GPP-SGSN-Ipv6-Address (15) changed to Must M per contrib/3gpp. */ + /* Change-1.4.0: 3GPP-SGSN-IPv6-Address (15) renamed to 3GPP-SGSN-Ipv6-Address (15). */ + /* 3GPP-SGSN-Ipv6-Address, OctetString, code 15, section 16.4.7 */ + { + struct dict_avp_data data = { + 15, /* Code */ + 10415, /* Vendor */ + "3GPP-SGSN-Ipv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed */ + /* 3GPP-GGSN-IPv6-Address (16) to 3GPP-GGSN-Ipv6-Address. */ + /* */ + /* Fix: 3GPP-GGSN-Ipv6-Address (16) changed to Must M per contrib/3gpp. */ + /* Change-1.4.0: 3GPP-GGSN-IPv6-Address (16) renamed to 3GPP-GGSN-Ipv6-Address (16). */ + /* 3GPP-GGSN-Ipv6-Address, OctetString, code 16, section 16.4.7 */ + { + struct dict_avp_data data = { + 16, /* Code */ + 10415, /* Vendor */ + "3GPP-GGSN-Ipv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed */ + /* 3GPP-IPv6-DNS-Servers (17) to 3GPP-Ipv6-DNS-Servers. */ + /* */ + /* Fix: 3GPP-Ipv6-DNS-Servers (17) changed to Must M per contrib/3gpp. */ + /* Change-1.4.0: 3GPP-IPv6-DNS-Servers (17) renamed to 3GPP-Ipv6-DNS-Servers (17). */ + /* 3GPP-Ipv6-DNS-Servers, OctetString, code 17, section 16.4.7 */ + { + struct dict_avp_data data = { + 17, /* Code */ + 10415, /* Vendor */ + "3GPP-Ipv6-DNS-Servers", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Fix: 3GPP-SGSN-MCC-MNC (18) changed to Must M per contrib/3gpp. */ + /* 3GPP-SGSN-MCC-MNC, UTF8String, code 18, section 16.4.7 */ + { + struct dict_avp_data data = { + 18, /* Code */ + 10415, /* Vendor */ + "3GPP-SGSN-MCC-MNC", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Fix: 3GPP-IMEISV (20) changed to Must M. */ + /* 3GPP-IMEISV, OctetString, code 20, section 16.4.7 */ + { + struct dict_avp_data data = { + 20, /* Code */ + 10415, /* Vendor */ + "3GPP-IMEISV", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Fix: 3GPP-RAT-Type (21) changed to Must M. */ + /* 3GPP-RAT-Type, OctetString, code 21, section 16.4.7 */ + { + struct dict_avp_data data = { + 21, /* Code */ + 10415, /* Vendor */ + "3GPP-RAT-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Fix: 3GPP-User-Location-Info (22) changed to Must M. */ + /* 3GPP-User-Location-Info, OctetString, code 22, section 16.4.7 */ + { + struct dict_avp_data data = { + 22, /* Code */ + 10415, /* Vendor */ + "3GPP-User-Location-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Fix: 3GPP-MS-TimeZone (23) changed to Must M. */ + /* 3GPP-MS-TimeZone, OctetString, code 23, section 16.4.7 */ + { + struct dict_avp_data data = { + 23, /* Code */ + 10415, /* Vendor */ + "3GPP-MS-TimeZone", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-CAMEL-Charging-Info, OctetString, code 24, section 16.4.7 */ + { + struct dict_avp_data data = { + 24, /* Code */ + 10415, /* Vendor */ + "3GPP-CAMEL-Charging-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Packet-Filter, OctetString, code 25, section 16.4.7 */ + { + struct dict_avp_data data = { + 25, /* Code */ + 10415, /* Vendor */ + "3GPP-Packet-Filter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Negotiated-DSCP, OctetString, code 26, section 16.4.7 */ + { + struct dict_avp_data data = { + 26, /* Code */ + 10415, /* Vendor */ + "3GPP-Negotiated-DSCP", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Allocate-IP-Type, OctetString, code 27, section 16.4.7 */ + { + struct dict_avp_data data = { + 27, /* Code */ + 10415, /* Vendor */ + "3GPP-Allocate-IP-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.061 Table 9a does not define */ + /* External-Identifier (28) for Diameter; it is RADIUS only. */ + /* 3GPP TS 29.061 Table 9b refers to 3GPP TS 29.336 */ + /* for External-Identifier (3111). */ + /* */ + /* Change-1.4.0: External-Identifier (28) OctetString replaced by External-Identifier (3111) UTF8String. */ + + /* TWAN-Identifier, OctetString, code 29, section 16.4.7 */ + { + struct dict_avp_data data = { + 29, /* Code */ + 10415, /* Vendor */ + "TWAN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-User-Location-Info-Time, OctetString, code 30, section 16.4.7 */ + { + struct dict_avp_data data = { + 30, /* Code */ + 10415, /* Vendor */ + "3GPP-User-Location-Info-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Secondary-RAT-Usage, OctetString, code 31, section 16.4.7 */ + { + struct dict_avp_data data = { + 31, /* Code */ + 10415, /* Vendor */ + "3GPP-Secondary-RAT-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.061 Table 10: Gmb specific AVPs */ + /*==================================================================*/ + + /* TMGI, OctetString, code 900, section 17.7.2 */ + { + struct dict_avp_data data = { + 900, /* Code */ + 10415, /* Vendor */ + "TMGI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Required-MBMS-Bearer-Capabilities, UTF8String, code 901, section 17.7.3 */ + { + struct dict_avp_data data = { + 901, /* Code */ + 10415, /* Vendor */ + "Required-MBMS-Bearer-Capabilities", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* MBMS-StartStop-Indication, Enumerated, code 902, section 17.7.5 */ + { + struct dict_avp_data data = { + 902, /* Code */ + 10415, /* Vendor */ + "MBMS-StartStop-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-StartStop-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-Service-Area, OctetString, code 903, section 17.7.6 */ + { + struct dict_avp_data data = { + 903, /* Code */ + 10415, /* Vendor */ + "MBMS-Service-Area", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Session-Duration, OctetString, code 904, section 17.7.7 */ + { + struct dict_avp_data data = { + 904, /* Code */ + 10415, /* Vendor */ + "MBMS-Session-Duration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Alternative-APN, UTF8String, code 905, section 17.7.8 */ + { + struct dict_avp_data data = { + 905, /* Code */ + 10415, /* Vendor */ + "Alternative-APN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* MBMS-Service-Type, Enumerated, code 906, section 17.7.9 */ + { + struct dict_avp_data data = { + 906, /* Code */ + 10415, /* Vendor */ + "MBMS-Service-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Service-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-2G-3G-Indicator, Enumerated, code 907, section 17.7.10 */ + { + struct dict_avp_data data = { + 907, /* Code */ + 10415, /* Vendor */ + "MBMS-2G-3G-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-2G-3G-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-Session-Identity, OctetString, code 908, section 17.7.11 */ + { + struct dict_avp_data data = { + 908, /* Code */ + 10415, /* Vendor */ + "MBMS-Session-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RAI, UTF8String, code 909, section 17.7.12 */ + { + struct dict_avp_data data = { + 909, /* Code */ + 10415, /* Vendor */ + "RAI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Additional-MBMS-Trace-Info, OctetString, code 910, section 17.7.13 */ + { + struct dict_avp_data data = { + 910, /* Code */ + 10415, /* Vendor */ + "Additional-MBMS-Trace-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Time-To-Data-Transfer, OctetString, code 911, section 17.7.14 */ + { + struct dict_avp_data data = { + 911, /* Code */ + 10415, /* Vendor */ + "MBMS-Time-To-Data-Transfer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Session-Repetition-Number, OctetString, code 912, section 17.7.15 */ + { + struct dict_avp_data data = { + 912, /* Code */ + 10415, /* Vendor */ + "MBMS-Session-Repetition-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Required-QoS, UTF8String, code 913, section 17.7.16 */ + { + struct dict_avp_data data = { + 913, /* Code */ + 10415, /* Vendor */ + "MBMS-Required-QoS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* MBMS-Counting-Information, Enumerated, code 914, section 17.7.17 */ + { + struct dict_avp_data data = { + 914, /* Code */ + 10415, /* Vendor */ + "MBMS-Counting-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Counting-Information)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-User-Data-Mode-Indication, Enumerated, code 915, section 17.7.18 */ + { + struct dict_avp_data data = { + 915, /* Code */ + 10415, /* Vendor */ + "MBMS-User-Data-Mode-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-User-Data-Mode-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-GGSN-Address, OctetString, code 916, section 17.7.19 */ + { + struct dict_avp_data data = { + 916, /* Code */ + 10415, /* Vendor */ + "MBMS-GGSN-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed */ + /* MBMS-GGSN-IPv6-Address (917) to MBMS-GGSN-Ipv6-Address. */ + /* */ + /* Change-1.4.0: MBMS-GGSN-IPv6-Address (917) renamed to MBMS-GGSN-Ipv6-Address (917). */ + /* MBMS-GGSN-Ipv6-Address, OctetString, code 917, section 17.7.20 */ + { + struct dict_avp_data data = { + 917, /* Code */ + 10415, /* Vendor */ + "MBMS-GGSN-Ipv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-BMSC-SSM-IP-Address, OctetString, code 918, section 17.7.21 */ + { + struct dict_avp_data data = { + 918, /* Code */ + 10415, /* Vendor */ + "MBMS-BMSC-SSM-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed */ + /* MBMS-BMSC-SSM-IPv6-Address (919) to MBMS-BMSC-SSM-Ipv6-Address. */ + /* */ + /* Change-1.4.0: MBMS-BMSC-SSM-IPv6-Address (919) renamed to MBMS-BMSC-SSM-Ipv6-Address (919). */ + /* MBMS-BMSC-SSM-Ipv6-Address, OctetString, code 919, section 17.7.22 */ + { + struct dict_avp_data data = { + 919, /* Code */ + 10415, /* Vendor */ + "MBMS-BMSC-SSM-Ipv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Flow-Identifier, OctetString, code 920, section 17.7.23 */ + { + struct dict_avp_data data = { + 920, /* Code */ + 10415, /* Vendor */ + "MBMS-Flow-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CN-IP-Multicast-Distribution, Enumerated, code 921, section 17.7.24 */ + { + struct dict_avp_data data = { + 921, /* Code */ + 10415, /* Vendor */ + "CN-IP-Multicast-Distribution", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CN-IP-Multicast-Distribution)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-HC-Indicator, Enumerated, code 922, section 17.7.25 */ + { + struct dict_avp_data data = { + 922, /* Code */ + 10415, /* Vendor */ + "MBMS-HC-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-HC-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.061 Table 20.5a.1: SGmb specific AVPs */ + /*==================================================================*/ + + /* MBMS-Access-Indicator, Enumerated, code 923, section 20.5a.1 */ + { + struct dict_avp_data data = { + 923, /* Code */ + 10415, /* Vendor */ + "MBMS-Access-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Access-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IP-Address (3522). */ + /* 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IP-Address (924). */ + /* 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IP-Address (3522). */ + /* MBMS-GW-SSM-IP-Address, OctetString, code 924, section 20.5a.2 */ + { + struct dict_avp_data data = { + 924, /* Code */ + 10415, /* Vendor */ + "MBMS-GW-SSM-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed */ + /* MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address. */ + /* Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IPv6-Address (3523). */ + /* 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IPv6-Address (925). */ + /* 3GPP TS 29.061 V12.6.0 (2014-06) renamed */ + /* MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address. */ + /* 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IPv6-Address (3523). */ + /* MBMS-GW-SSM-IPv6-Address, OctetString, code 925, section 20.5a.3 */ + { + struct dict_avp_data data = { + 925, /* Code */ + 10415, /* Vendor */ + "MBMS-GW-SSM-IPv6-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-BMSC-SSM-UDP-Port, OctetString, code 926, section 20.5a.4 */ + { + struct dict_avp_data data = { + 926, /* Code */ + 10415, /* Vendor */ + "MBMS-BMSC-SSM-UDP-Port", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-GW-UDP-Port, OctetString, code 927, section 20.5a.5 */ + { + struct dict_avp_data data = { + 927, /* Code */ + 10415, /* Vendor */ + "MBMS-GW-UDP-Port", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-GW-UDP-Port-Indicator, Enumerated, code 928, section 20.5a.6 */ + { + struct dict_avp_data data = { + 928, /* Code */ + 10415, /* Vendor */ + "MBMS-GW-UDP-Port-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-GW-UDP-Port-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-Data-Transfer-Start, Unsigned64, code 929, section 20.5a.7 */ + { + struct dict_avp_data data = { + 929, /* Code */ + 10415, /* Vendor */ + "MBMS-Data-Transfer-Start", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Data-Transfer-Stop, Unsigned64, code 930, section 20.5a.8 */ + { + struct dict_avp_data data = { + 930, /* Code */ + 10415, /* Vendor */ + "MBMS-Data-Transfer-Stop", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.061 Table 20.5a.1 row MBMS-Flag (931) has */ + /* incorrect name and should be "MBMS-Flags" per clause 20.5a.9. */ + /* */ + /* Fix: MBMS-Flag (931) renamed to MBMS-Flags (931). */ + /* MBMS-Flags, Unsigned32, code 931, section 20.5a.9 */ + { + struct dict_avp_data data = { + 931, /* Code */ + 10415, /* Vendor */ + "MBMS-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Restart-Counter, Unsigned32, code 932, section 20.5a.10 */ + { + struct dict_avp_data data = { + 932, /* Code */ + 10415, /* Vendor */ + "Restart-Counter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Diagnostic-Info, Unsigned32, code 933, section 20.5a.11 */ + { + struct dict_avp_data data = { + 933, /* Code */ + 10415, /* Vendor */ + "Diagnostic-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Cell-List, OctetString, code 934, section 20.5a.12 */ + { + struct dict_avp_data data = { + 934, /* Code */ + 10415, /* Vendor */ + "MBMS-Cell-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.109 V15.0.0 (2017-06) */ + /* Generic Authentication Architecture (GAA); */ + /* Zh and Zn Interfaces based on the Diameter protocol; */ + /* Stage 3 */ + /* */ + /* From 3GPP 29109-f00.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.109 Table 6.1: New Diameter Multimedia Application AVPs */ + /*==================================================================*/ + + /* GBA-UserSecSettings, OctetString, code 400, section 6.3.1.1 */ + { + struct dict_avp_data data = { + 400, /* Code */ + 10415, /* Vendor */ + "GBA-UserSecSettings", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Transaction-Identifier, OctetString, code 401, section 6.3.1.2 */ + { + struct dict_avp_data data = { + 401, /* Code */ + 10415, /* Vendor */ + "Transaction-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NAF-Id, OctetString, code 402, section 6.3.1.3 */ + { + struct dict_avp_data data = { + 402, /* Code */ + 10415, /* Vendor */ + "NAF-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* GAA-Service-Identifier, OctetString, code 403, section 6.3.1.4 */ + { + struct dict_avp_data data = { + 403, /* Code */ + 10415, /* Vendor */ + "GAA-Service-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Key-ExpiryTime, Time, code 404, section 6.3.1.5 */ + { + struct dict_avp_data data = { + 404, /* Code */ + 10415, /* Vendor */ + "Key-ExpiryTime", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* ME-Key-Material, OctetString, code 405, section 6.3.1.6 */ + { + struct dict_avp_data data = { + 405, /* Code */ + 10415, /* Vendor */ + "ME-Key-Material", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UICC-Key-Material, OctetString, code 406, section 6.3.1.7 */ + { + struct dict_avp_data data = { + 406, /* Code */ + 10415, /* Vendor */ + "UICC-Key-Material", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.109 Table 6.1 row GBA_U-Awareness-Indicator (407) */ + /* has an underscore in the name (contrary to RFC 6733 section 4.1). */ + /* */ + /* Fix: GBA_U-Awareness-Indicator (407) renamed to GBA-U-Awareness-Indicator (407). */ + /* GBA-U-Awareness-Indicator, Enumerated, code 407, section 6.3.1.8 */ + { + struct dict_avp_data data = { + 407, /* Code */ + 10415, /* Vendor */ + "GBA-U-Awareness-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/GBA-U-Awareness-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* BootstrapInfoCreationTime, Time, code 408, section 6.3.1.9 */ + { + struct dict_avp_data data = { + 408, /* Code */ + 10415, /* Vendor */ + "BootstrapInfoCreationTime", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* GUSS-Timestamp, Time, code 409, section 6.3.1.10 */ + { + struct dict_avp_data data = { + 409, /* Code */ + 10415, /* Vendor */ + "GUSS-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* GBA-Type, Enumerated, code 410, section 6.3.1.11 */ + { + struct dict_avp_data data = { + 410, /* Code */ + 10415, /* Vendor */ + "GBA-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/GBA-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* UE-Id, OctetString, code 411, section 6.3.1.12 */ + { + struct dict_avp_data data = { + 411, /* Code */ + 10415, /* Vendor */ + "UE-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UE-Id-Type, Enumerated, code 412, section 6.3.1.13 */ + { + struct dict_avp_data data = { + 412, /* Code */ + 10415, /* Vendor */ + "UE-Id-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/UE-Id-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* UICC-App-Label, OctetString, code 413, section 6.3.1.14 */ + { + struct dict_avp_data data = { + 413, /* Code */ + 10415, /* Vendor */ + "UICC-App-Label", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UICC-ME, Enumerated, code 414, section 6.3.1.15 */ + { + struct dict_avp_data data = { + 414, /* Code */ + 10415, /* Vendor */ + "UICC-ME", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/UICC-ME)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Requested-Key-Lifetime, Time, code 415, section 6.3.1.16 */ + { + struct dict_avp_data data = { + 415, /* Code */ + 10415, /* Vendor */ + "Requested-Key-Lifetime", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Private-Identity-Request, Enumerated, code 416, section 6.3.1.17 */ + { + struct dict_avp_data data = { + 416, /* Code */ + 10415, /* Vendor */ + "Private-Identity-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Private-Identity-Request)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* GBA-Push-Info, OctetString, code 417, section 6.3.1.18 */ + { + struct dict_avp_data data = { + 417, /* Code */ + 10415, /* Vendor */ + "GBA-Push-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NAF-SA-Identifier, OctetString, code 418, section 6.3.1.19 */ + { + struct dict_avp_data data = { + 418, /* Code */ + 10415, /* Vendor */ + "NAF-SA-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Security-Feature-Request, OctetString, code 419, section 6.3.1.20 */ + { + struct dict_avp_data data = { + 419, /* Code */ + 10415, /* Vendor */ + "Security-Feature-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Security-Feature-Response, OctetString, code 420, section 6.3.1.21 */ + { + struct dict_avp_data data = { + 420, /* Code */ + 10415, /* Vendor */ + "Security-Feature-Response", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.128 V15.6.0 (2019-09) */ + /* Mobility Management Entity (MME) and Serving GPRS Support */ + /* Node (SGSN) interfaces for interworking with packet data */ + /* networks and applications */ + /* */ + /* From 3GPP 29128-f60.docx */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.128 Table 6.4.1-1: T6a/T6b specific Diameter AVPs */ + /*==================================================================*/ + + /* Communication-Failure-Information, Grouped, code 4300, section 6.4.4 */ + { + struct dict_avp_data data = { + 4300, /* Code */ + 10415, /* Vendor */ + "Communication-Failure-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Cause-Type, Unsigned32, code 4301, section 6.4.5 */ + { + struct dict_avp_data data = { + 4301, /* Code */ + 10415, /* Vendor */ + "Cause-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* S1AP-Cause, Unsigned32, code 4302, section 6.4.6 */ + { + struct dict_avp_data data = { + 4302, /* Code */ + 10415, /* Vendor */ + "S1AP-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RANAP-Cause, Unsigned32, code 4303, section 6.4.7 */ + { + struct dict_avp_data data = { + 4303, /* Code */ + 10415, /* Vendor */ + "RANAP-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* BSSGP-Cause, Unsigned32, code 4309, section 6.4.8 */ + { + struct dict_avp_data data = { + 4309, /* Code */ + 10415, /* Vendor */ + "BSSGP-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* GMM-Cause, Unsigned32, code 4304, section 6.4.9 */ + { + struct dict_avp_data data = { + 4304, /* Code */ + 10415, /* Vendor */ + "GMM-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Cause, Unsigned32, code 4305, section 6.4.10 */ + { + struct dict_avp_data data = { + 4305, /* Code */ + 10415, /* Vendor */ + "SM-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-UE-Per-Location-Configuration, Grouped, code 4306, section 6.4.11 */ + { + struct dict_avp_data data = { + 4306, /* Code */ + 10415, /* Vendor */ + "Number-Of-UE-Per-Location-Configuration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-UE-Per-Location-Report, Grouped, code 4307, section 6.4.12 */ + { + struct dict_avp_data data = { + 4307, /* Code */ + 10415, /* Vendor */ + "Number-Of-UE-Per-Location-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UE-Count, Unsigned32, code 4308, section 6.4.13 */ + { + struct dict_avp_data data = { + 4308, /* Code */ + 10415, /* Vendor */ + "UE-Count", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Connection-Action, Unsigned32, code 4314, section 6.4.18 */ + { + struct dict_avp_data data = { + 4314, /* Code */ + 10415, /* Vendor */ + "Connection-Action", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Non-IP-Data, OctetString, code 4315, section 6.4.19 */ + { + struct dict_avp_data data = { + 4315, /* Code */ + 10415, /* Vendor */ + "Non-IP-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Serving-PLMN-Rate-Control, Grouped, code 4310, section 6.4.21 */ + { + struct dict_avp_data data = { + 4310, /* Code */ + 10415, /* Vendor */ + "Serving-PLMN-Rate-Control", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Uplink-Rate-Limit, Unsigned32, code 4311, section 6.4.23 */ + { + struct dict_avp_data data = { + 4311, /* Code */ + 10415, /* Vendor */ + "Uplink-Rate-Limit", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Downlink-Rate-Limit, Unsigned32, code 4312, section 6.4.22 */ + { + struct dict_avp_data data = { + 4312, /* Code */ + 10415, /* Vendor */ + "Downlink-Rate-Limit", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-PCO, OctetString, code 4313, section 6.4.26 */ + { + struct dict_avp_data data = { + 4313, /* Code */ + 10415, /* Vendor */ + "Extended-PCO", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SCEF-Wait-Time, Time, code 4316, section 6.4.24 */ + { + struct dict_avp_data data = { + 4316, /* Code */ + 10415, /* Vendor */ + "SCEF-Wait-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* CMR-Flags, Unsigned32, code 4317, section 6.4.25 */ + { + struct dict_avp_data data = { + 4317, /* Code */ + 10415, /* Vendor */ + "CMR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RRC-Cause-Counter, Grouped, code 4318, section 6.4.27 */ + { + struct dict_avp_data data = { + 4318, /* Code */ + 10415, /* Vendor */ + "RRC-Cause-Counter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Counter-Value, Unsigned32, code 4319, section 6.4.28 */ + { + struct dict_avp_data data = { + 4319, /* Code */ + 10415, /* Vendor */ + "Counter-Value", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RRC-Counter-Timestamp, Time, code 4320, section 6.4.29 */ + { + struct dict_avp_data data = { + 4320, /* Code */ + 10415, /* Vendor */ + "RRC-Counter-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* TDA-Flags, Unsigned32, code 4321, section 6.4.31 */ + { + struct dict_avp_data data = { + 4321, /* Code */ + 10415, /* Vendor */ + "TDA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Idle-Status-Indication, Grouped, code 4322, section 6.4.32 */ + { + struct dict_avp_data data = { + 4322, /* Code */ + 10415, /* Vendor */ + "Idle-Status-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Idle-Status-Timestamp, Time, code 4323, section 6.4.33 */ + { + struct dict_avp_data data = { + 4323, /* Code */ + 10415, /* Vendor */ + "Idle-Status-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Active-Time, Unsigned32, code 4324, section 6.4.34 */ + { + struct dict_avp_data data = { + 4324, /* Code */ + 10415, /* Vendor */ + "Active-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.140 V7.0.0 (2007-06) */ + /* MM10 interface based on Diameter protocol; */ + /* Stage 3 */ + /* */ + /* From 3GPP 29140-700.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.140 Table 6.3.1: Diameter MM10 Application AVPs */ + /* */ + /* Note: AVPs referenced from other sources are not added here. */ + /*==================================================================*/ + + /* Served-User-Identity, Grouped, code 1100, section 6.3.1 */ + { + struct dict_avp_data data = { + 1100, /* Code */ + 10415, /* Vendor */ + "Served-User-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* VASP-ID, UTF8String, code 1101, section 6.3.3 */ + { + struct dict_avp_data data = { + 1101, /* Code */ + 10415, /* Vendor */ + "VASP-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* VAS-ID, UTF8String, code 1102, section 6.3.4 */ + { + struct dict_avp_data data = { + 1102, /* Code */ + 10415, /* Vendor */ + "VAS-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Trigger-Event, Enumerated, code 1103, section 6.3.5 */ + { + struct dict_avp_data data = { + 1103, /* Code */ + 10415, /* Vendor */ + "Trigger-Event", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trigger-Event)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Sender-Address, UTF8String, code 1104, section 6.3.7 */ + { + struct dict_avp_data data = { + 1104, /* Code */ + 10415, /* Vendor */ + "Sender-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Initial-Recipient-Address, Grouped, code 1105, section 6.3.8 */ + { + struct dict_avp_data data = { + 1105, /* Code */ + 10415, /* Vendor */ + "Initial-Recipient-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Result-Recipient-Address, Grouped, code 1106, section 6.3.9 */ + { + struct dict_avp_data data = { + 1106, /* Code */ + 10415, /* Vendor */ + "Result-Recipient-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.329 Sequence-Number (716) */ + /* and 3GPP TS 29.283 Sequence-Number (4512). */ + /* 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107). */ + /* 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716). */ + /* 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512). */ + /* */ + /* Fix: Sequence-Number (1107) renamed to Sequence-Number-29.140 (1107). */ + /* Sequence-Number-29.140, Unsigned32, code 1107, section 6.3.10 */ + { + struct dict_avp_data data = { + 1107, /* Code */ + 10415, /* Vendor */ + "Sequence-Number-29.140", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: Name conflict with 3GPP TS 32.299 Recipient-Address (1201); */ + /* 3GPP TS 29.140 V6.1.0 (2005-06) allocated Recipient-Address (1108). */ + /* 3GPP TS 32.299 V6.4.0 (2005-09) CR 0028 added Recipient-Address (1201). */ + /* */ + /* Fix: Recipient-Address (1108) renamed to Recipient-Address-29.140 (1108). */ + /* Recipient-Address-29.140, UTF8String, code 1108, section 6.3.11 */ + { + struct dict_avp_data data = { + 1108, /* Code */ + 10415, /* Vendor */ + "Recipient-Address-29.140", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Routeing-Address, UTF8String, code 1109, section 6.3.12 */ + { + struct dict_avp_data data = { + 1109, /* Code */ + 10415, /* Vendor */ + "Routeing-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Originating-Interface, Enumerated, code 1110, section 6.3.13 */ + { + struct dict_avp_data data = { + 1110, /* Code */ + 10415, /* Vendor */ + "Originating-Interface", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originating-Interface)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Delivery-Report, Enumerated, code 1111, section 6.3.14 */ + { + struct dict_avp_data data = { + 1111, /* Code */ + 10415, /* Vendor */ + "Delivery-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Delivery-Report)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Read-Reply, Enumerated, code 1112, section 6.3.15 */ + { + struct dict_avp_data data = { + 1112, /* Code */ + 10415, /* Vendor */ + "Read-Reply", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Read-Reply)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Sender-Visibility, Enumerated, code 1113, section 6.3.16 */ + { + struct dict_avp_data data = { + 1113, /* Code */ + 10415, /* Vendor */ + "Sender-Visibility", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Sender-Visibility)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Service-Key, UTF8String, code 1114, section 6.3.17 */ + { + struct dict_avp_data data = { + 1114, /* Code */ + 10415, /* Vendor */ + "Service-Key", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Billing-Information, UTF8String, code 1115, section 6.3.18 */ + { + struct dict_avp_data data = { + 1115, /* Code */ + 10415, /* Vendor */ + "Billing-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Note: Name conflict with 3GPP TS 32.299 V11.6.0 Status (2702). */ + /* 3GPP TS 32.299 V11.10.0 (2013-12) CR 0566 renamed */ + /* Status (2702) to Status-Code (2702). */ + /* 3GPP TS 32.299 V11.14.0 (2014-12) CR 0617 renamed */ + /* Status-Code (2702) to Status-AS-Code (2702). */ + /* */ + /* TODO: rename back to Status ? */ + /* Fix: Status (1116) renamed to Status-29.140 (1116). */ + /* Status-29.140, Grouped, code 1116, section 6.3.19 */ + { + struct dict_avp_data data = { + 1116, /* Code */ + 10415, /* Vendor */ + "Status-29.140", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Status-Code, UTF8String, code 1117, section 6.3.20 */ + { + struct dict_avp_data data = { + 1117, /* Code */ + 10415, /* Vendor */ + "Status-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Status-Text, UTF8String, code 1118, section 6.3.21 */ + { + struct dict_avp_data data = { + 1118, /* Code */ + 10415, /* Vendor */ + "Status-Text", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Routeing-Address-Resolution, Enumerated, code 1119, section 6.3.22 */ + { + struct dict_avp_data data = { + 1119, /* Code */ + 10415, /* Vendor */ + "Routeing-Address-Resolution", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Routeing-Address-Resolution)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.153 V15.1.0 (2019-09) */ + /* Service capability exposure functionality over Ns */ + /* reference point */ + /* */ + /* From 3GPP 29153-f10.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.153 Table 5.3.1.1: Ns specific Diameter AVPs */ + /*==================================================================*/ + + /* Network-Congestion-Area-Report, Grouped, code 4101, section 5.3.2 */ + { + struct dict_avp_data data = { + 4101, /* Code */ + 10415, /* Vendor */ + "Network-Congestion-Area-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Ns-Request-Type, Unsigned32, code 4102, section 5.3.3 */ + { + struct dict_avp_data data = { + 4102, /* Code */ + 10415, /* Vendor */ + "Ns-Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.154 V15.3.0 (2019-09) */ + /* Service capability exposure functionality over */ + /* Nt reference point */ + /* */ + /* From 3GPP 29154-f30.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.154 Table 5.3.1.1: Nt specific Diameter AVPs */ + /*==================================================================*/ + + /* Network-Area-Info-List, OctetString, code 4201, section 5.3.2 */ + { + struct dict_avp_data data = { + 4201, /* Code */ + 10415, /* Vendor */ + "Network-Area-Info-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-UEs, Unsigned32, code 4209, section 5.3.10 */ + { + struct dict_avp_data data = { + 4209, /* Code */ + 10415, /* Vendor */ + "Number-Of-UEs", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reference-Id, OctetString, code 4202, section 5.3.3 */ + { + struct dict_avp_data data = { + 4202, /* Code */ + 10415, /* Vendor */ + "Reference-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Transfer-Request-Type, Unsigned32, code 4203, section 5.3.4 */ + { + struct dict_avp_data data = { + 4203, /* Code */ + 10415, /* Vendor */ + "Transfer-Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.345 Time-Window (3818). */ + /* Time-Window (3818) in 3GPP TS 29.345 V12.1.0 (2014-12) predates */ + /* Time-Window (4204) in 3GPP TS 29.154 V13.1.0 (2016-03). */ + /* */ + /* Fix: Time-Window (4204) renamed to Time-Window-29.154 (4204). */ + /* Time-Window-29.154, Grouped, code 4204, section 5.3.5 */ + { + struct dict_avp_data data = { + 4204, /* Code */ + 10415, /* Vendor */ + "Time-Window-29.154", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Transfer-End-Time, Time, code 4205, section 5.3.6 */ + { + struct dict_avp_data data = { + 4205, /* Code */ + 10415, /* Vendor */ + "Transfer-End-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Transfer-Policy, Grouped, code 4207, section 5.3.8 */ + { + struct dict_avp_data data = { + 4207, /* Code */ + 10415, /* Vendor */ + "Transfer-Policy", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Transfer-Policy-Id, Unsigned32, code 4208, section 5.3.9 */ + { + struct dict_avp_data data = { + 4208, /* Code */ + 10415, /* Vendor */ + "Transfer-Policy-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Transfer-Start-Time, Time, code 4206, section 5.3.7 */ + { + struct dict_avp_data data = { + 4206, /* Code */ + 10415, /* Vendor */ + "Transfer-Start-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.154 Table A.6.3.1-1: Nta specific Diameter AVPs */ + /*==================================================================*/ + + /* Access-Network-Reports, Grouped, code 4210, section A.6.3.2 */ + { + struct dict_avp_data data = { + 4210, /* Code */ + 10415, /* Vendor */ + "Access-Network-Reports", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Configuration, Grouped, code 4211, section A.6.3.3 */ + { + struct dict_avp_data data = { + 4211, /* Code */ + 10415, /* Vendor */ + "Event-Configuration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Configuration-State, Unsigned32, code 4212, section A.6.3.4 */ + { + struct dict_avp_data data = { + 4212, /* Code */ + 10415, /* Vendor */ + "Event-Configuration-State", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Configuration-Status, Grouped, code 4213, section A.6.3.5 */ + { + struct dict_avp_data data = { + 4213, /* Code */ + 10415, /* Vendor */ + "Event-Configuration-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Reporting-Results, Unsigned32, code 4214, section A.6.3.6 */ + { + struct dict_avp_data data = { + 4214, /* Code */ + 10415, /* Vendor */ + "Event-Reporting-Results", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Reports, Grouped, code 4215, section A.6.3.7 */ + { + struct dict_avp_data data = { + 4215, /* Code */ + 10415, /* Vendor */ + "Event-Reports", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-SCEF-Reference-ID, Unsigned64, code 4216, section A.6.3.8 */ + { + struct dict_avp_data data = { + 4216, /* Code */ + 10415, /* Vendor */ + "Extended-SCEF-Reference-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.172 V15.2.0 (2019-12) */ + /* Location Services (LCS); */ + /* Evolved Packet Core (EPC) LCS Protocol (ELP) between the */ + /* Gateway Mobile Location Centre (GMLC) and the */ + /* Mobile Management Entity (MME); */ + /* SLg interface */ + /* */ + /* From 3GPP 29172-f20.docx */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.172 Table 7.4.1-1: Diameter ELP Application AVPs */ + /*==================================================================*/ + + /* SLg-Location-Type, Enumerated, code 2500, section 7.4.2 */ + { + struct dict_avp_data data = { + 2500, /* Code */ + 10415, /* Vendor */ + "SLg-Location-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SLg-Location-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* LCS-EPS-Client-Name, Grouped, code 2501, section 7.4.3 */ + { + struct dict_avp_data data = { + 2501, /* Code */ + 10415, /* Vendor */ + "LCS-EPS-Client-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Requestor-Name, Grouped, code 2502, section 7.4.4 */ + { + struct dict_avp_data data = { + 2502, /* Code */ + 10415, /* Vendor */ + "LCS-Requestor-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Priority, Unsigned32, code 2503, section 7.4.5 */ + { + struct dict_avp_data data = { + 2503, /* Code */ + 10415, /* Vendor */ + "LCS-Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-QoS, Grouped, code 2504, section 7.4.6 */ + { + struct dict_avp_data data = { + 2504, /* Code */ + 10415, /* Vendor */ + "LCS-QoS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Horizontal-Accuracy, Unsigned32, code 2505, section 7.4.7 */ + { + struct dict_avp_data data = { + 2505, /* Code */ + 10415, /* Vendor */ + "Horizontal-Accuracy", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Vertical-Accuracy, Unsigned32, code 2506, section 7.4.8 */ + { + struct dict_avp_data data = { + 2506, /* Code */ + 10415, /* Vendor */ + "Vertical-Accuracy", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Vertical-Requested, Enumerated, code 2507, section 7.4.9 */ + { + struct dict_avp_data data = { + 2507, /* Code */ + 10415, /* Vendor */ + "Vertical-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Vertical-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Velocity-Requested, Enumerated, code 2508, section 7.4.10 */ + { + struct dict_avp_data data = { + 2508, /* Code */ + 10415, /* Vendor */ + "Velocity-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Velocity-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Response-Time, Enumerated, code 2509, section 7.4.11 */ + { + struct dict_avp_data data = { + 2509, /* Code */ + 10415, /* Vendor */ + "Response-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Response-Time)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Supported-GAD-Shapes, Unsigned32, code 2510, section 7.4.12 */ + { + struct dict_avp_data data = { + 2510, /* Code */ + 10415, /* Vendor */ + "Supported-GAD-Shapes", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Codeword, UTF8String, code 2511, section 7.4.13 */ + { + struct dict_avp_data data = { + 2511, /* Code */ + 10415, /* Vendor */ + "LCS-Codeword", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* LCS-Privacy-Check, Enumerated, code 2512, section 7.4.14 */ + { + struct dict_avp_data data = { + 2512, /* Code */ + 10415, /* Vendor */ + "LCS-Privacy-Check", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-Privacy-Check)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Accuracy-Fulfilment-Indicator, Enumerated, code 2513, section 7.4.15 */ + { + struct dict_avp_data data = { + 2513, /* Code */ + 10415, /* Vendor */ + "Accuracy-Fulfilment-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Accuracy-Fulfilment-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Age-Of-Location-Estimate, Unsigned32, code 2514, section 7.4.16 */ + { + struct dict_avp_data data = { + 2514, /* Code */ + 10415, /* Vendor */ + "Age-Of-Location-Estimate", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Velocity-Estimate, OctetString, code 2515, section 7.4.17 */ + { + struct dict_avp_data data = { + 2515, /* Code */ + 10415, /* Vendor */ + "Velocity-Estimate", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* EUTRAN-Positioning-Data, OctetString, code 2516, section 7.4.18 */ + { + struct dict_avp_data data = { + 2516, /* Code */ + 10415, /* Vendor */ + "EUTRAN-Positioning-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ECGI, OctetString, code 2517, section 7.4.19 */ + { + struct dict_avp_data data = { + 2517, /* Code */ + 10415, /* Vendor */ + "ECGI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Event, Enumerated, code 2518, section 7.4.20 */ + { + struct dict_avp_data data = { + 2518, /* Code */ + 10415, /* Vendor */ + "Location-Event", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Location-Event)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Pseudonym-Indicator, Enumerated, code 2519, section 7.4.21 */ + { + struct dict_avp_data data = { + 2519, /* Code */ + 10415, /* Vendor */ + "Pseudonym-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pseudonym-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* LCS-Service-Type-ID, Unsigned32, code 2520, section 7.4.22 */ + { + struct dict_avp_data data = { + 2520, /* Code */ + 10415, /* Vendor */ + "LCS-Service-Type-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Privacy-Check-Non-Session, Grouped, code 2521, section 7.4.23 */ + { + struct dict_avp_data data = { + 2521, /* Code */ + 10415, /* Vendor */ + "LCS-Privacy-Check-Non-Session", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Privacy-Check-Session, Grouped, code 2522, section 7.4.24 */ + { + struct dict_avp_data data = { + 2522, /* Code */ + 10415, /* Vendor */ + "LCS-Privacy-Check-Session", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-QoS-Class, Enumerated, code 2523, section 7.4.27 */ + { + struct dict_avp_data data = { + 2523, /* Code */ + 10415, /* Vendor */ + "LCS-QoS-Class", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-QoS-Class)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* GERAN-Positioning-Info, Grouped, code 2524, section 7.4.29 */ + { + struct dict_avp_data data = { + 2524, /* Code */ + 10415, /* Vendor */ + "GERAN-Positioning-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* GERAN-Positioning-Data, OctetString, code 2525, section 7.4.30 */ + { + struct dict_avp_data data = { + 2525, /* Code */ + 10415, /* Vendor */ + "GERAN-Positioning-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* GERAN-GANSS-Positioning-Data, OctetString, code 2526, section 7.4.31 */ + { + struct dict_avp_data data = { + 2526, /* Code */ + 10415, /* Vendor */ + "GERAN-GANSS-Positioning-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UTRAN-Positioning-Info, Grouped, code 2527, section 7.4.32 */ + { + struct dict_avp_data data = { + 2527, /* Code */ + 10415, /* Vendor */ + "UTRAN-Positioning-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UTRAN-Positioning-Data, OctetString, code 2528, section 7.4.33 */ + { + struct dict_avp_data data = { + 2528, /* Code */ + 10415, /* Vendor */ + "UTRAN-Positioning-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UTRAN-GANSS-Positioning-Data, OctetString, code 2529, section 7.4.34 */ + { + struct dict_avp_data data = { + 2529, /* Code */ + 10415, /* Vendor */ + "UTRAN-GANSS-Positioning-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LRR-Flags, Unsigned32, code 2530, section 7.4.35 */ + { + struct dict_avp_data data = { + 2530, /* Code */ + 10415, /* Vendor */ + "LRR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Reference-Number, OctetString, code 2531, section 7.4.37 */ + { + struct dict_avp_data data = { + 2531, /* Code */ + 10415, /* Vendor */ + "LCS-Reference-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Deferred-Location-Type, Unsigned32, code 2532, section 7.4.36 */ + { + struct dict_avp_data data = { + 2532, /* Code */ + 10415, /* Vendor */ + "Deferred-Location-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Area-Event-Info, Grouped, code 2533, section 7.4.38 */ + { + struct dict_avp_data data = { + 2533, /* Code */ + 10415, /* Vendor */ + "Area-Event-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Area-Definition, Grouped, code 2534, section 7.4.39 */ + { + struct dict_avp_data data = { + 2534, /* Code */ + 10415, /* Vendor */ + "Area-Definition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Area, Grouped, code 2535, section 7.4.40 */ + { + struct dict_avp_data data = { + 2535, /* Code */ + 10415, /* Vendor */ + "Area", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Area-Type, Unsigned32, code 2536, section 7.4.41 */ + { + struct dict_avp_data data = { + 2536, /* Code */ + 10415, /* Vendor */ + "Area-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Area-Identification, Grouped, code 2537, section 7.4.42 */ + { + struct dict_avp_data data = { + 2537, /* Code */ + 10415, /* Vendor */ + "Area-Identification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Occurrence-Info, Enumerated, code 2538, section 7.4.43 */ + { + struct dict_avp_data data = { + 2538, /* Code */ + 10415, /* Vendor */ + "Occurrence-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Occurrence-Info)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Interval-Time, Unsigned32, code 2539, section 7.4.44 */ + { + struct dict_avp_data data = { + 2539, /* Code */ + 10415, /* Vendor */ + "Interval-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Periodic-LDR-Information, Grouped, code 2540, section 7.4.45 */ + { + struct dict_avp_data data = { + 2540, /* Code */ + 10415, /* Vendor */ + "Periodic-LDR-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reporting-Amount, Unsigned32, code 2541, section 7.4.46 */ + { + struct dict_avp_data data = { + 2541, /* Code */ + 10415, /* Vendor */ + "Reporting-Amount", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reporting-Interval, Unsigned32, code 2542, section 7.4.47 */ + { + struct dict_avp_data data = { + 2542, /* Code */ + 10415, /* Vendor */ + "Reporting-Interval", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reporting-PLMN-List, Grouped, code 2543, section 7.4.48 */ + { + struct dict_avp_data data = { + 2543, /* Code */ + 10415, /* Vendor */ + "Reporting-PLMN-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PLMN-ID-List, Grouped, code 2544, section 7.4.49 */ + { + struct dict_avp_data data = { + 2544, /* Code */ + 10415, /* Vendor */ + "PLMN-ID-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PLR-Flags, Unsigned32, code 2545, section 7.4.52 */ + { + struct dict_avp_data data = { + 2545, /* Code */ + 10415, /* Vendor */ + "PLR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PLA-Flags, Unsigned32, code 2546, section 7.4.53 */ + { + struct dict_avp_data data = { + 2546, /* Code */ + 10415, /* Vendor */ + "PLA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Deferred-MT-LR-Data, Grouped, code 2547, section 7.4.54 */ + { + struct dict_avp_data data = { + 2547, /* Code */ + 10415, /* Vendor */ + "Deferred-MT-LR-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Termination-Cause, Unsigned32, code 2548, section 7.4.55 */ + { + struct dict_avp_data data = { + 2548, /* Code */ + 10415, /* Vendor */ + "Termination-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LRA-Flags, Unsigned32, code 2549, section 7.4.56 */ + { + struct dict_avp_data data = { + 2549, /* Code */ + 10415, /* Vendor */ + "LRA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Periodic-Location-Support-Indicator, Enumerated, code 2550, section 7.4.50 */ + { + struct dict_avp_data data = { + 2550, /* Code */ + 10415, /* Vendor */ + "Periodic-Location-Support-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Periodic-Location-Support-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Prioritized-List-Indicator, Enumerated, code 2551, section 7.4.51 */ + { + struct dict_avp_data data = { + 2551, /* Code */ + 10415, /* Vendor */ + "Prioritized-List-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Prioritized-List-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* ESMLC-Cell-Info, Grouped, code 2552, section 7.4.57 */ + { + struct dict_avp_data data = { + 2552, /* Code */ + 10415, /* Vendor */ + "ESMLC-Cell-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Cell-Portion-ID, Unsigned32, code 2553, section 7.4.58 */ + { + struct dict_avp_data data = { + 2553, /* Code */ + 10415, /* Vendor */ + "Cell-Portion-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 1xRTT-RCID, OctetString, code 2554, section 7.4.59 */ + { + struct dict_avp_data data = { + 2554, /* Code */ + 10415, /* Vendor */ + "1xRTT-RCID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Delayed-Location-Reporting-Data, Grouped, code 2555, section 7.4.60 */ + { + struct dict_avp_data data = { + 2555, /* Code */ + 10415, /* Vendor */ + "Delayed-Location-Reporting-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Civic-Address, UTF8String, code 2556, section 7.4.61 */ + { + struct dict_avp_data data = { + 2556, /* Code */ + 10415, /* Vendor */ + "Civic-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Barometric-Pressure, Unsigned32, code 2557, section 7.4.62 */ + { + struct dict_avp_data data = { + 2557, /* Code */ + 10415, /* Vendor */ + "Barometric-Pressure", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UTRAN-Additional-Positioning-Data, OctetString, code 2558, section 7.4.63 */ + { + struct dict_avp_data data = { + 2558, /* Code */ + 10415, /* Vendor */ + "UTRAN-Additional-Positioning-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Motion-Event-Info, Grouped, code 2559, section 7.4.64 */ + { + struct dict_avp_data data = { + 2559, /* Code */ + 10415, /* Vendor */ + "Motion-Event-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Linear-Distance, Unsigned32, code 2560, section 7.4.65 */ + { + struct dict_avp_data data = { + 2560, /* Code */ + 10415, /* Vendor */ + "Linear-Distance", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Maximum-Interval, Unsigned32, code 2561, section 7.4.66 */ + { + struct dict_avp_data data = { + 2561, /* Code */ + 10415, /* Vendor */ + "Maximum-Interval", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Sampling-Interval, Unsigned32, code 2562, section 7.4.67 */ + { + struct dict_avp_data data = { + 2562, /* Code */ + 10415, /* Vendor */ + "Sampling-Interval", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reporting-Duration, Unsigned32, code 2563, section 7.4.68 */ + { + struct dict_avp_data data = { + 2563, /* Code */ + 10415, /* Vendor */ + "Reporting-Duration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reporting-Location-Requirements, Unsigned32, code 2564, section 7.4.69 */ + { + struct dict_avp_data data = { + 2564, /* Code */ + 10415, /* Vendor */ + "Reporting-Location-Requirements", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Additional-Area, Grouped, code 2565, section 7.4.70 */ + { + struct dict_avp_data data = { + 2565, /* Code */ + 10415, /* Vendor */ + "Additional-Area", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.173 V15.0.0 (2018-06) */ + /* Location Services (LCS); */ + /* Diameter-based SLh interface for Control Plane LCS */ + /* */ + /* From 3GPP 29173-f00.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.173 Table 6.4.1/1: SLh specific Diameter AVPs */ + /*==================================================================*/ + + /* LMSI, OctetString, code 2400, section 6.4.2 */ + { + struct dict_avp_data data = { + 2400, /* Code */ + 10415, /* Vendor */ + "LMSI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Serving-Node, Grouped, code 2401, section 6.4.3 */ + { + struct dict_avp_data data = { + 2401, /* Code */ + 10415, /* Vendor */ + "Serving-Node", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MME-Name, DiameterIdentity, code 2402, section 6.4.4 */ + { + struct dict_avp_data data = { + 2402, /* Code */ + 10415, /* Vendor */ + "MME-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* MSC-Number, OctetString, code 2403, section 6.4.5 */ + { + struct dict_avp_data data = { + 2403, /* Code */ + 10415, /* Vendor */ + "MSC-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Capabilities-Sets, Unsigned32, code 2404, section 6.4.6 */ + { + struct dict_avp_data data = { + 2404, /* Code */ + 10415, /* Vendor */ + "LCS-Capabilities-Sets", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* GMLC-Address, Address, code 2405, section 6.4.7 */ + { + struct dict_avp_data data = { + 2405, /* Code */ + 10415, /* Vendor */ + "GMLC-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Additional-Serving-Node, Grouped, code 2406, section 6.4.8 */ + { + struct dict_avp_data data = { + 2406, /* Code */ + 10415, /* Vendor */ + "Additional-Serving-Node", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PPR-Address, Address, code 2407, section 6.4.9 */ + { + struct dict_avp_data data = { + 2407, /* Code */ + 10415, /* Vendor */ + "PPR-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* MME-Realm, DiameterIdentity, code 2408, section 6.4.12 */ + { + struct dict_avp_data data = { + 2408, /* Code */ + 10415, /* Vendor */ + "MME-Realm", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* SGSN-Name, DiameterIdentity, code 2409, section 6.4.13 */ + { + struct dict_avp_data data = { + 2409, /* Code */ + 10415, /* Vendor */ + "SGSN-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* SGSN-Realm, DiameterIdentity, code 2410, section 6.4.14 */ + { + struct dict_avp_data data = { + 2410, /* Code */ + 10415, /* Vendor */ + "SGSN-Realm", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* RIA-Flags, Unsigned32, code 2411, section 6.4.15 */ + { + struct dict_avp_data data = { + 2411, /* Code */ + 10415, /* Vendor */ + "RIA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.209 V6.8.0 (2011-09) */ + /* Policy control over Gq interface */ + /* */ + /* From 3GPP 29209-680.doc */ + /* */ + /* Replaced by 3GPP TS 29.214. */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.209 Table 6.5.1: Gq specific Diameter AVPs */ + /* Note: Only AVPs not provided by 3GPP TS 29.214. */ + /*==================================================================*/ + + /* Authorization-Token, OctetString, code 506, section 6.5.7 */ + { + struct dict_avp_data data = { + 506, /* Code */ + 10415, /* Vendor */ + "Authorization-Token", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Flow-Grouping, Grouped, code 508, section 6.5.9 */ + { + struct dict_avp_data data = { + 508, /* Code */ + 10415, /* Vendor */ + "Flow-Grouping", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.210 V6.7.0 (2006-12) */ + /* Charging rule provisioning over Gx interface */ + /* */ + /* From 3GPP 29210-670.doc */ + /* */ + /* Replaced by 3GPP TS 29.212. */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.210 Table 5.2: Gx specific Diameter AVPs */ + /* Note: Only AVPs not provided by 3GPP TS 29.212. */ + /*==================================================================*/ + + /* PDP-Session-Operation, Enumerated, code 1015, section 5.2.21 */ + { + struct dict_avp_data data = { + 1015, /* Code */ + 10415, /* Vendor */ + "PDP-Session-Operation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDP-Session-Operation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.212 V15.9.0 (2019-12) */ + /* Policy and Charging Control (PCC); Reference points */ + /* */ + /* From 3GPP 29212-f90.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.212 Table 5.3.0.1: Gx specific Diameter AVPs */ + /*==================================================================*/ + + /* Change-1.4.0: ADC-Revalidation-Time (2801) Time removed in 3GPP TS 29.212 V12.1.0 (2013-06). */ + + /* Note: Name conflict with 3GPP TS 32.299 3GPP-PS-Data-Off-Status (4406). */ + /* 3GPP TS 29.212 V14.3.0 (2017-03) CR 1559 added 3GPP-PS-Data-Off-Status (2847). */ + /* 3GPP TS 32.299 V14.3.0 (2017-03) CR 0760 added 3GPP-PS-Data-Off-Status (4406). */ + /* 3GPP-PS-Data-Off-Status, Enumerated, code 2847, section 5.3.133 */ + { + struct dict_avp_data data = { + 2847, /* Code */ + 10415, /* Vendor */ + "3GPP-PS-Data-Off-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/3GPP-PS-Data-Off-Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Access-Availability-Change-Reason, Unsigned32, code 2833, section 5.3.121 */ + { + struct dict_avp_data data = { + 2833, /* Code */ + 10415, /* Vendor */ + "Access-Availability-Change-Reason", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Network-Charging-Identifier-Gx, Grouped, code 1022, section 5.3.22 */ + { + struct dict_avp_data data = { + 1022, /* Code */ + 10415, /* Vendor */ + "Access-Network-Charging-Identifier-Gx", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Allocation-Retention-Priority, Grouped, code 1034, section 5.3.32 */ + { + struct dict_avp_data data = { + 1034, /* Code */ + 10415, /* Vendor */ + "Allocation-Retention-Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AN-GW-Address, Address, code 1050, section 5.3.49 */ + { + struct dict_avp_data data = { + 1050, /* Code */ + 10415, /* Vendor */ + "AN-GW-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* AN-GW-Status, Enumerated, code 2811, section 5.3.100 */ + { + struct dict_avp_data data = { + 2811, /* Code */ + 10415, /* Vendor */ + "AN-GW-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AN-GW-Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* APN-Aggregate-Max-Bitrate-DL, Unsigned32, code 1040, section 5.3.39 */ + { + struct dict_avp_data data = { + 1040, /* Code */ + 10415, /* Vendor */ + "APN-Aggregate-Max-Bitrate-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* APN-Aggregate-Max-Bitrate-UL, Unsigned32, code 1041, section 5.3.40 */ + { + struct dict_avp_data data = { + 1041, /* Code */ + 10415, /* Vendor */ + "APN-Aggregate-Max-Bitrate-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Application-Detection-Information, Grouped, code 1098, section 5.3.91 */ + { + struct dict_avp_data data = { + 1098, /* Code */ + 10415, /* Vendor */ + "Application-Detection-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Bearer-Control-Mode, Enumerated, code 1023, section 5.3.23 */ + { + struct dict_avp_data data = { + 1023, /* Code */ + 10415, /* Vendor */ + "Bearer-Control-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Control-Mode)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Bearer-Identifier, OctetString, code 1020, section 5.3.20 */ + { + struct dict_avp_data data = { + 1020, /* Code */ + 10415, /* Vendor */ + "Bearer-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Bearer-Operation, Enumerated, code 1021, section 5.3.21 */ + { + struct dict_avp_data data = { + 1021, /* Code */ + 10415, /* Vendor */ + "Bearer-Operation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Operation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Bearer-Usage, Enumerated, code 1000, section 5.3.1 */ + { + struct dict_avp_data data = { + 1000, /* Code */ + 10415, /* Vendor */ + "Bearer-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Usage)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Charging-Correlation-Indicator, Enumerated, code 1073, section 5.3.67 */ + { + struct dict_avp_data data = { + 1073, /* Code */ + 10415, /* Vendor */ + "Charging-Correlation-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charging-Correlation-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Charging-Rule-Base-Name, UTF8String, code 1004, section 5.3.5 */ + { + struct dict_avp_data data = { + 1004, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Base-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Charging-Rule-Definition, Grouped, code 1003, section 5.3.4 */ + { + struct dict_avp_data data = { + 1003, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Definition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Rule-Install, Grouped, code 1001, section 5.3.2 */ + { + struct dict_avp_data data = { + 1001, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Install", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Rule-Name, OctetString, code 1005, section 5.3.6 */ + { + struct dict_avp_data data = { + 1005, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Rule-Remove, Grouped, code 1002, section 5.3.3 */ + { + struct dict_avp_data data = { + 1002, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Remove", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Rule-Report, Grouped, code 1018, section 5.3.18 */ + { + struct dict_avp_data data = { + 1018, /* Code */ + 10415, /* Vendor */ + "Charging-Rule-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CoA-Information, Grouped, code 1039, section 5.3.37 */ + { + struct dict_avp_data data = { + 1039, /* Code */ + 10415, /* Vendor */ + "CoA-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CoA-IP-Address, Address, code 1035, section 5.3.33 */ + { + struct dict_avp_data data = { + 1035, /* Code */ + 10415, /* Vendor */ + "CoA-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Conditional-APN-Aggregate-Max-Bitrate, Grouped, code 2818, section 5.3.105 */ + { + struct dict_avp_data data = { + 2818, /* Code */ + 10415, /* Vendor */ + "Conditional-APN-Aggregate-Max-Bitrate", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Conditional-Policy-Information, Grouped, code 2840, section 5.3.128 */ + { + struct dict_avp_data data = { + 2840, /* Code */ + 10415, /* Vendor */ + "Conditional-Policy-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Credit-Management-Status, Unsigned32, code 1082, section 5.3.102 */ + { + struct dict_avp_data data = { + 1082, /* Code */ + 10415, /* Vendor */ + "Credit-Management-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CSG-Information-Reporting, Enumerated, code 1071, section 5.3.64 */ + { + struct dict_avp_data data = { + 1071, /* Code */ + 10415, /* Vendor */ + "CSG-Information-Reporting", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Information-Reporting)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Default-Access, Enumerated, code 2829, section 5.3.120 */ + { + struct dict_avp_data data = { + 2829, /* Code */ + 10415, /* Vendor */ + "Default-Access", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Default-Access)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Default-Bearer-Indication, Enumerated, code 2844, section 5.3.132 */ + { + struct dict_avp_data data = { + 2844, /* Code */ + 10415, /* Vendor */ + "Default-Bearer-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Default-Bearer-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Default-EPS-Bearer-QoS, Grouped, code 1049, section 5.3.48 */ + { + struct dict_avp_data data = { + 1049, /* Code */ + 10415, /* Vendor */ + "Default-EPS-Bearer-QoS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Default-QoS-Information, Grouped, code 2816, section 5.3.103 */ + { + struct dict_avp_data data = { + 2816, /* Code */ + 10415, /* Vendor */ + "Default-QoS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Default-QoS-Name, UTF8String, code 2817, section 5.3.104 */ + { + struct dict_avp_data data = { + 2817, /* Code */ + 10415, /* Vendor */ + "Default-QoS-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Event-Report-Indication, Grouped, code 1033, section 5.3.30 */ + { + struct dict_avp_data data = { + 1033, /* Code */ + 10415, /* Vendor */ + "Event-Report-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Trigger, Enumerated, code 1006, section 5.3.7 */ + { + struct dict_avp_data data = { + 1006, /* Code */ + 10415, /* Vendor */ + "Event-Trigger", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Event-Trigger)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Execution-Time, Time, code 2839, section 5.3.127 */ + { + struct dict_avp_data data = { + 2839, /* Code */ + 10415, /* Vendor */ + "Execution-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Extended-APN-AMBR-DL, Unsigned32, code 2848, section 5.3.134 */ + { + struct dict_avp_data data = { + 2848, /* Code */ + 10415, /* Vendor */ + "Extended-APN-AMBR-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-APN-AMBR-UL, Unsigned32, code 2849, section 5.3.135 */ + { + struct dict_avp_data data = { + 2849, /* Code */ + 10415, /* Vendor */ + "Extended-APN-AMBR-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-GBR-DL, Unsigned32, code 2850, section 5.3.136 */ + { + struct dict_avp_data data = { + 2850, /* Code */ + 10415, /* Vendor */ + "Extended-GBR-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-GBR-UL, Unsigned32, code 2851, section 5.3.137 */ + { + struct dict_avp_data data = { + 2851, /* Code */ + 10415, /* Vendor */ + "Extended-GBR-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Flow-Direction, Enumerated, code 1080, section 5.3.65 */ + { + struct dict_avp_data data = { + 1080, /* Code */ + 10415, /* Vendor */ + "Flow-Direction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Direction)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Flow-Information, Grouped, code 1058, section 5.3.53 */ + { + struct dict_avp_data data = { + 1058, /* Code */ + 10415, /* Vendor */ + "Flow-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Flow-Label, OctetString, code 1057, section 5.3.52 */ + { + struct dict_avp_data data = { + 1057, /* Code */ + 10415, /* Vendor */ + "Flow-Label", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Fixed-User-Location-Info, Grouped, code 2825, section 5.3.112 */ + { + struct dict_avp_data data = { + 2825, /* Code */ + 10415, /* Vendor */ + "Fixed-User-Location-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Guaranteed-Bitrate-DL, Unsigned32, code 1025, section 5.3.25 */ + { + struct dict_avp_data data = { + 1025, /* Code */ + 10415, /* Vendor */ + "Guaranteed-Bitrate-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Guaranteed-Bitrate-UL, Unsigned32, code 1026, section 5.3.26 */ + { + struct dict_avp_data data = { + 1026, /* Code */ + 10415, /* Vendor */ + "Guaranteed-Bitrate-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: HeNB-BBF-FQDN (2803) UTF8String removed in 3GPP TS 29.212 V11.8.0 (2013-03). */ + + /* HeNB-Local-IP-Address, Address, code 2804, section 5.3.95 */ + { + struct dict_avp_data data = { + 2804, /* Code */ + 10415, /* Vendor */ + "HeNB-Local-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* IP-CAN-Session-Charging-Scope, Enumerated, code 2827, section 5.3.114 */ + { + struct dict_avp_data data = { + 2827, /* Code */ + 10415, /* Vendor */ + "IP-CAN-Session-Charging-Scope", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IP-CAN-Session-Charging-Scope)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* IP-CAN-Type, Enumerated, code 1027, section 5.3.27 */ + { + struct dict_avp_data data = { + 1027, /* Code */ + 10415, /* Vendor */ + "IP-CAN-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IP-CAN-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Note: 3GPP TS 29.212 Table 5.3.0.1 row Max-PLR-DL (2852) */ + /* incorrectly lists type as Unsigned32 instead of Float32. */ + /* 3GPP TS 29.212 clause 5.3.138 uses Float32. */ + /* */ + /* Fix: Max-PLR-DL (2852) type changed from Float32 to Unsigned32. */ + /* Max-PLR-DL, Unsigned32, code 2852, section 5.3.138 */ + { + struct dict_avp_data data = { + 2852, /* Code */ + 10415, /* Vendor */ + "Max-PLR-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.212 Table 5.3.0.1 row Max-PLR-UL (2853) */ + /* incorrectly lists type as Unsigned32 instead of Float32. */ + /* 3GPP TS 29.212 clause 5.3.139 uses Float32. */ + /* */ + /* Fix: Max-PLR-UL (2853) type changed from Float32 to Unsigned32. */ + /* Max-PLR-UL, Unsigned32, code 2853, section 5.3.139 */ + { + struct dict_avp_data data = { + 2853, /* Code */ + 10415, /* Vendor */ + "Max-PLR-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Metering-Method, Enumerated, code 1007, section 5.3.8 */ + { + struct dict_avp_data data = { + 1007, /* Code */ + 10415, /* Vendor */ + "Metering-Method", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Metering-Method)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Monitoring-Flags, Unsigned32, code 2828, section 5.3.115 */ + { + struct dict_avp_data data = { + 2828, /* Code */ + 10415, /* Vendor */ + "Monitoring-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Key, OctetString, code 1066, section 5.3.59 */ + { + struct dict_avp_data data = { + 1066, /* Code */ + 10415, /* Vendor */ + "Monitoring-Key", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Mute-Notification, Enumerated, code 2809, section 5.3.98 */ + { + struct dict_avp_data data = { + 2809, /* Code */ + 10415, /* Vendor */ + "Mute-Notification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Mute-Notification)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Monitoring-Time, Time, code 2810, section 5.3.99 */ + { + struct dict_avp_data data = { + 2810, /* Code */ + 10415, /* Vendor */ + "Monitoring-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* NBIFOM-Mode, Enumerated, code 2830, section 5.3.117 */ + { + struct dict_avp_data data = { + 2830, /* Code */ + 10415, /* Vendor */ + "NBIFOM-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/NBIFOM-Mode)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* NBIFOM-Support, Enumerated, code 2831, section 5.3.116 */ + { + struct dict_avp_data data = { + 2831, /* Code */ + 10415, /* Vendor */ + "NBIFOM-Support", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/NBIFOM-Support)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* NetLoc-Access-Support, Unsigned32, code 2824, section 5.3.111 */ + { + struct dict_avp_data data = { + 2824, /* Code */ + 10415, /* Vendor */ + "NetLoc-Access-Support", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Network-Request-Support, Enumerated, code 1024, section 5.3.24 */ + { + struct dict_avp_data data = { + 1024, /* Code */ + 10415, /* Vendor */ + "Network-Request-Support", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Network-Request-Support)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Offline, Enumerated, code 1008, section 5.3.9 */ + { + struct dict_avp_data data = { + 1008, /* Code */ + 10415, /* Vendor */ + "Offline", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Offline)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Online, Enumerated, code 1009, section 5.3.10 */ + { + struct dict_avp_data data = { + 1009, /* Code */ + 10415, /* Vendor */ + "Online", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Online)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Packet-Filter-Content, IPFilterRule, code 1059, section 5.3.54 */ + { + struct dict_avp_data data = { + 1059, /* Code */ + 10415, /* Vendor */ + "Packet-Filter-Content", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); + }; + + /* Packet-Filter-Identifier, OctetString, code 1060, section 5.3.55 */ + { + struct dict_avp_data data = { + 1060, /* Code */ + 10415, /* Vendor */ + "Packet-Filter-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Packet-Filter-Information, Grouped, code 1061, section 5.3.56 */ + { + struct dict_avp_data data = { + 1061, /* Code */ + 10415, /* Vendor */ + "Packet-Filter-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Packet-Filter-Operation, Enumerated, code 1062, section 5.3.57 */ + { + struct dict_avp_data data = { + 1062, /* Code */ + 10415, /* Vendor */ + "Packet-Filter-Operation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Packet-Filter-Operation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Packet-Filter-Usage, Enumerated, code 1072, section 5.3.66 */ + { + struct dict_avp_data data = { + 1072, /* Code */ + 10415, /* Vendor */ + "Packet-Filter-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Packet-Filter-Usage)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PCC-Rule-Status, Enumerated, code 1019, section 5.3.19 */ + { + struct dict_avp_data data = { + 1019, /* Code */ + 10415, /* Vendor */ + "PCC-Rule-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PCC-Rule-Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Note: 3GPP TS 29.212 Table 5.3.0.1 row PDN-Connection-ID (1065) */ + /* missing M, assume MUST NOT. */ + /* */ + /* Change-1.4.0: PDN-Connection-ID (1065) flag M MUST NOT. */ + /* PDN-Connection-ID, OctetString, code 1065, section 5.3.58 */ + { + struct dict_avp_data data = { + 1065, /* Code */ + 10415, /* Vendor */ + "PDN-Connection-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PRA-Install, Grouped, code 2845, section 5.3.130 */ + { + struct dict_avp_data data = { + 2845, /* Code */ + 10415, /* Vendor */ + "PRA-Install", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PRA-Remove, Grouped, code 2846, section 5.3.131 */ + { + struct dict_avp_data data = { + 2846, /* Code */ + 10415, /* Vendor */ + "PRA-Remove", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Precedence, Unsigned32, code 1010, section 5.3.11 */ + { + struct dict_avp_data data = { + 1010, /* Code */ + 10415, /* Vendor */ + "Precedence", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Pre-emption-Capability, Enumerated, code 1047, section 5.3.46 */ + { + struct dict_avp_data data = { + 1047, /* Code */ + 10415, /* Vendor */ + "Pre-emption-Capability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pre-emption-Capability)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Pre-emption-Vulnerability, Enumerated, code 1048, section 5.3.47 */ + { + struct dict_avp_data data = { + 1048, /* Code */ + 10415, /* Vendor */ + "Pre-emption-Vulnerability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pre-emption-Vulnerability)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Presence-Reporting-Area-Elements-List, OctetString, code 2820, section 5.3.107 */ + { + struct dict_avp_data data = { + 2820, /* Code */ + 10415, /* Vendor */ + "Presence-Reporting-Area-Elements-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Presence-Reporting-Area-Identifier, OctetString, code 2821, section 5.3.108 */ + { + struct dict_avp_data data = { + 2821, /* Code */ + 10415, /* Vendor */ + "Presence-Reporting-Area-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Presence-Reporting-Area-Information, Grouped, code 2822, section 5.3.109 */ + { + struct dict_avp_data data = { + 2822, /* Code */ + 10415, /* Vendor */ + "Presence-Reporting-Area-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Presence-Reporting-Area-Node, Unsigned32, code 2855, section 5.3.141 */ + { + struct dict_avp_data data = { + 2855, /* Code */ + 10415, /* Vendor */ + "Presence-Reporting-Area-Node", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Presence-Reporting-Area-Status, Unsigned32, code 2823, section 5.3.110 */ + { + struct dict_avp_data data = { + 2823, /* Code */ + 10415, /* Vendor */ + "Presence-Reporting-Area-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Priority-Level, Unsigned32, code 1046, section 5.3.45 */ + { + struct dict_avp_data data = { + 1046, /* Code */ + 10415, /* Vendor */ + "Priority-Level", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.212 Table 5.3.0.1 row PS-to-CS-Session-Continuity (1099) */ + /* missing M, assume MUST NOT. */ + /* */ + /* Change-1.4.0: PS-to-CS-Session-Continuity (1099) flag M MUST NOT. */ + /* PS-to-CS-Session-Continuity, Enumerated, code 1099, section 5.3.84 */ + { + struct dict_avp_data data = { + 1099, /* Code */ + 10415, /* Vendor */ + "PS-to-CS-Session-Continuity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PS-to-CS-Session-Continuity)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* QoS-Class-Identifier, Enumerated, code 1028, section 5.3.17 */ + { + struct dict_avp_data data = { + 1028, /* Code */ + 10415, /* Vendor */ + "QoS-Class-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Class-Identifier)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* QoS-Information, Grouped, code 1016, section 5.3.16 */ + { + struct dict_avp_data data = { + 1016, /* Code */ + 10415, /* Vendor */ + "QoS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* QoS-Negotiation, Enumerated, code 1029, section 5.3.28 */ + { + struct dict_avp_data data = { + 1029, /* Code */ + 10415, /* Vendor */ + "QoS-Negotiation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Negotiation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* QoS-Upgrade, Enumerated, code 1030, section 5.3.29 */ + { + struct dict_avp_data data = { + 1030, /* Code */ + 10415, /* Vendor */ + "QoS-Upgrade", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Upgrade)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* RAN-NAS-Release-Cause, OctetString, code 2819, section 5.3.106 */ + { + struct dict_avp_data data = { + 2819, /* Code */ + 10415, /* Vendor */ + "RAN-NAS-Release-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RAN-Rule-Support, Unsigned32, code 2832, section 5.3.122 */ + { + struct dict_avp_data data = { + 2832, /* Code */ + 10415, /* Vendor */ + "RAN-Rule-Support", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RAT-Type, Enumerated, code 1032, section 5.3.31 */ + { + struct dict_avp_data data = { + 1032, /* Code */ + 10415, /* Vendor */ + "RAT-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/RAT-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Redirect-Information, Grouped, code 1085, section 5.3.82 */ + { + struct dict_avp_data data = { + 1085, /* Code */ + 10415, /* Vendor */ + "Redirect-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Redirect-Support, Enumerated, code 1086, section 5.3.83 */ + { + struct dict_avp_data data = { + 1086, /* Code */ + 10415, /* Vendor */ + "Redirect-Support", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Redirect-Support)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Removal-Of-Access, Enumerated, code 2842, section 5.3.126 */ + { + struct dict_avp_data data = { + 2842, /* Code */ + 10415, /* Vendor */ + "Removal-Of-Access", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Removal-Of-Access)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Reporting-Level, Enumerated, code 1011, section 5.3.12 */ + { + struct dict_avp_data data = { + 1011, /* Code */ + 10415, /* Vendor */ + "Reporting-Level", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reporting-Level)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Resource-Allocation-Notification, Enumerated, code 1063, section 5.3.50 */ + { + struct dict_avp_data data = { + 1063, /* Code */ + 10415, /* Vendor */ + "Resource-Allocation-Notification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Resource-Allocation-Notification)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Resource-Release-Notification, Enumerated, code 2841, section 5.3.125 */ + { + struct dict_avp_data data = { + 2841, /* Code */ + 10415, /* Vendor */ + "Resource-Release-Notification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Resource-Release-Notification)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Revalidation-Time, Time, code 1042, section 5.3.41 */ + { + struct dict_avp_data data = { + 1042, /* Code */ + 10415, /* Vendor */ + "Revalidation-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Routing-Filter, Grouped, code 1078, section 5.3.72 */ + { + struct dict_avp_data data = { + 1078, /* Code */ + 10415, /* Vendor */ + "Routing-Filter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-IP-Address, Address, code 1079, section 5.3.73 */ + { + struct dict_avp_data data = { + 1079, /* Code */ + 10415, /* Vendor */ + "Routing-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Routing-Rule-Definition, Grouped, code 1076, section 5.3.70 */ + { + struct dict_avp_data data = { + 1076, /* Code */ + 10415, /* Vendor */ + "Routing-Rule-Definition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-Rule-Identifier, OctetString, code 1077, section 5.3.71 */ + { + struct dict_avp_data data = { + 1077, /* Code */ + 10415, /* Vendor */ + "Routing-Rule-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-Rule-Install, Grouped, code 1081, section 5.3.68 */ + { + struct dict_avp_data data = { + 1081, /* Code */ + 10415, /* Vendor */ + "Routing-Rule-Install", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-Rule-Remove, Grouped, code 1075, section 5.3.69 */ + { + struct dict_avp_data data = { + 1075, /* Code */ + 10415, /* Vendor */ + "Routing-Rule-Remove", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-Rule-Failure-Code, Unsigned32, code 2834, section 5.3.119 */ + { + struct dict_avp_data data = { + 2834, /* Code */ + 10415, /* Vendor */ + "Routing-Rule-Failure-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-Rule-Report, Grouped, code 2835, section 5.3.118 */ + { + struct dict_avp_data data = { + 2835, /* Code */ + 10415, /* Vendor */ + "Routing-Rule-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Rule-Activation-Time, Time, code 1043, section 5.3.42 */ + { + struct dict_avp_data data = { + 1043, /* Code */ + 10415, /* Vendor */ + "Rule-Activation-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Rule-Deactivation-Time, Time, code 1044, section 5.3.43 */ + { + struct dict_avp_data data = { + 1044, /* Code */ + 10415, /* Vendor */ + "Rule-Deactivation-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Rule-Failure-Code, Enumerated, code 1031, section 5.3.38 */ + { + struct dict_avp_data data = { + 1031, /* Code */ + 10415, /* Vendor */ + "Rule-Failure-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Rule-Failure-Code)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Security-Parameter-Index, OctetString, code 1056, section 5.3.51 */ + { + struct dict_avp_data data = { + 1056, /* Code */ + 10415, /* Vendor */ + "Security-Parameter-Index", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Session-Release-Cause, Enumerated, code 1045, section 5.3.44 */ + { + struct dict_avp_data data = { + 1045, /* Code */ + 10415, /* Vendor */ + "Session-Release-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Release-Cause)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* TCP-Source-Port, Unsigned32, code 2843, section 5.3.129 */ + { + struct dict_avp_data data = { + 2843, /* Code */ + 10415, /* Vendor */ + "TCP-Source-Port", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TDF-Information, Grouped, code 1087, section 5.3.78 */ + { + struct dict_avp_data data = { + 1087, /* Code */ + 10415, /* Vendor */ + "TDF-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TDF-Application-Identifier, OctetString, code 1088, section 5.3.77 */ + { + struct dict_avp_data data = { + 1088, /* Code */ + 10415, /* Vendor */ + "TDF-Application-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TDF-Application-Instance-Identifier, OctetString, code 2802, section 5.3.92 */ + { + struct dict_avp_data data = { + 2802, /* Code */ + 10415, /* Vendor */ + "TDF-Application-Instance-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TDF-Destination-Host, DiameterIdentity, code 1089, section 5.3.80 */ + { + struct dict_avp_data data = { + 1089, /* Code */ + 10415, /* Vendor */ + "TDF-Destination-Host", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* TDF-Destination-Realm, DiameterIdentity, code 1090, section 5.3.79 */ + { + struct dict_avp_data data = { + 1090, /* Code */ + 10415, /* Vendor */ + "TDF-Destination-Realm", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* TDF-IP-Address, Address, code 1091, section 5.3.81 */ + { + struct dict_avp_data data = { + 1091, /* Code */ + 10415, /* Vendor */ + "TDF-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* TFT-Filter, IPFilterRule, code 1012, section 5.3.13 */ + { + struct dict_avp_data data = { + 1012, /* Code */ + 10415, /* Vendor */ + "TFT-Filter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); + }; + + /* TFT-Packet-Filter-Information, Grouped, code 1013, section 5.3.14 */ + { + struct dict_avp_data data = { + 1013, /* Code */ + 10415, /* Vendor */ + "TFT-Packet-Filter-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Traffic-Steering-Policy-Identifier-DL, OctetString, code 2836, section 5.3.123 */ + { + struct dict_avp_data data = { + 2836, /* Code */ + 10415, /* Vendor */ + "Traffic-Steering-Policy-Identifier-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Traffic-Steering-Policy-Identifier-UL, OctetString, code 2837, section 5.3.124 */ + { + struct dict_avp_data data = { + 2837, /* Code */ + 10415, /* Vendor */ + "Traffic-Steering-Policy-Identifier-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ToS-Traffic-Class, OctetString, code 1014, section 5.3.15 */ + { + struct dict_avp_data data = { + 1014, /* Code */ + 10415, /* Vendor */ + "ToS-Traffic-Class", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Tunnel-Header-Filter, IPFilterRule, code 1036, section 5.3.34 */ + { + struct dict_avp_data data = { + 1036, /* Code */ + 10415, /* Vendor */ + "Tunnel-Header-Filter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); + }; + + /* Tunnel-Header-Length, Unsigned32, code 1037, section 5.3.35 */ + { + struct dict_avp_data data = { + 1037, /* Code */ + 10415, /* Vendor */ + "Tunnel-Header-Length", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Tunnel-Information, Grouped, code 1038, section 5.3.36 */ + { + struct dict_avp_data data = { + 1038, /* Code */ + 10415, /* Vendor */ + "Tunnel-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UDP-Source-Port, Unsigned32, code 2806, section 5.3.97 */ + { + struct dict_avp_data data = { + 2806, /* Code */ + 10415, /* Vendor */ + "UDP-Source-Port", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UE-Local-IP-Address, Address, code 2805, section 5.3.96 */ + { + struct dict_avp_data data = { + 2805, /* Code */ + 10415, /* Vendor */ + "UE-Local-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* UE-Status, Unsigned32, code 2854, section 5.3.140 */ + { + struct dict_avp_data data = { + 2854, /* Code */ + 10415, /* Vendor */ + "UE-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Usage-Monitoring-Information, Grouped, code 1067, section 5.3.60 */ + { + struct dict_avp_data data = { + 1067, /* Code */ + 10415, /* Vendor */ + "Usage-Monitoring-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Usage-Monitoring-Level, Enumerated, code 1068, section 5.3.61 */ + { + struct dict_avp_data data = { + 1068, /* Code */ + 10415, /* Vendor */ + "Usage-Monitoring-Level", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Level)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Usage-Monitoring-Report, Enumerated, code 1069, section 5.3.62 */ + { + struct dict_avp_data data = { + 1069, /* Code */ + 10415, /* Vendor */ + "Usage-Monitoring-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Report)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Usage-Monitoring-Support, Enumerated, code 1070, section 5.3.63 */ + { + struct dict_avp_data data = { + 1070, /* Code */ + 10415, /* Vendor */ + "Usage-Monitoring-Support", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Support)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* User-Location-Info-Time, Time, code 2812, section 5.3.101 */ + { + struct dict_avp_data data = { + 2812, /* Code */ + 10415, /* Vendor */ + "User-Location-Info-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* PCSCF-Restoration-Indication, Unsigned32, code 2826, section 5.3.113 */ + { + struct dict_avp_data data = { + 2826, /* Code */ + 10415, /* Vendor */ + "PCSCF-Restoration-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.212 Table 5a.3.0.1: Gxx specific Diameter AVPs */ + /*==================================================================*/ + + /* QoS-Rule-Install, Grouped, code 1051, section 5a.3.1 */ + { + struct dict_avp_data data = { + 1051, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Install", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* QoS-Rule-Remove, Grouped, code 1052, section 5a.3.2 */ + { + struct dict_avp_data data = { + 1052, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Remove", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* QoS-Rule-Definition, Grouped, code 1053, section 5a.3.3 */ + { + struct dict_avp_data data = { + 1053, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Definition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* QoS-Rule-Name, OctetString, code 1054, section 5a.3.4 */ + { + struct dict_avp_data data = { + 1054, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* QoS-Rule-Base-Name, UTF8String, code 1074, section 5a.3.7 */ + { + struct dict_avp_data data = { + 1074, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Base-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* QoS-Rule-Report, Grouped, code 1055, section 5a.3.5 */ + { + struct dict_avp_data data = { + 1055, /* Code */ + 10415, /* Vendor */ + "QoS-Rule-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Session-Linking-Indicator, Enumerated, code 1064, section 5a.3.6 */ + { + struct dict_avp_data data = { + 1064, /* Code */ + 10415, /* Vendor */ + "Session-Linking-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Linking-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.212 Table 5b.3.0.1: Sd specific Diameter AVPs */ + /*==================================================================*/ + + /* Change-1.4.0: ADC-Rule-Base-Name (1095) flag M MUST. */ + /* ADC-Rule-Base-Name, UTF8String, code 1095, section 5b.3.4 */ + { + struct dict_avp_data data = { + 1095, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Base-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Change-1.4.0: ADC-Rule-Definition (1094) flag M MUST. */ + /* ADC-Rule-Definition, Grouped, code 1094, section 5b.3.3 */ + { + struct dict_avp_data data = { + 1094, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Definition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Change-1.4.0: ADC-Rule-Install (1092) flag M MUST. */ + /* ADC-Rule-Install, Grouped, code 1092, section 5b.3.1 */ + { + struct dict_avp_data data = { + 1092, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Install", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Change-1.4.0: ADC-Rule-Name (1096) flag M MUST. */ + /* ADC-Rule-Name, OctetString, code 1096, section 5b.3.5 */ + { + struct dict_avp_data data = { + 1096, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Change-1.4.0: ADC-Rule-Remove (1093) flag M MUST. */ + /* ADC-Rule-Remove, Grouped, code 1093, section 5b.3.2 */ + { + struct dict_avp_data data = { + 1093, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Remove", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Change-1.4.0: ADC-Rule-Report (1097) flag M MUST. */ + /* ADC-Rule-Report, Grouped, code 1097, section 5b.3.6 */ + { + struct dict_avp_data data = { + 1097, /* Code */ + 10415, /* Vendor */ + "ADC-Rule-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.212 Table 5c.3.1.1: St specific Diameter AVPs */ + /*==================================================================*/ + + /* Request-Type, Unsigned32, code 2838, section 5c.3.2 */ + { + struct dict_avp_data data = { + 2838, /* Code */ + 10415, /* Vendor */ + "Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.212 Table E.6.3.1.1: S15 specific Diameter AVPs */ + /*==================================================================*/ + + /* CS-Service-Qos-Request-Identifier, OctetString, code 2807, section E.6.3.2 */ + { + struct dict_avp_data data = { + 2807, /* Code */ + 10415, /* Vendor */ + "CS-Service-Qos-Request-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CS-Service-QoS-Request-Operation, Enumerated, code 2808, section E.6.3.3 */ + { + struct dict_avp_data data = { + 2808, /* Code */ + 10415, /* Vendor */ + "CS-Service-QoS-Request-Operation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CS-Service-QoS-Request-Operation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* CS-Service-Resource-Report, Grouped, code 2813, section E.6.3.6 */ + { + struct dict_avp_data data = { + 2813, /* Code */ + 10415, /* Vendor */ + "CS-Service-Resource-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CS-Service-Resource-Failure-Cause, Enumerated, code 2814, section E.6.3.5 */ + { + struct dict_avp_data data = { + 2814, /* Code */ + 10415, /* Vendor */ + "CS-Service-Resource-Failure-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CS-Service-Resource-Failure-Cause)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* CS-Service-Resource-Result-Operation, Enumerated, code 2815, section E.6.3.4 */ + { + struct dict_avp_data data = { + 2815, /* Code */ + 10415, /* Vendor */ + "CS-Service-Resource-Result-Operation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CS-Service-Resource-Result-Operation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.214 V15.7.0 (2019-09) */ + /* Policy and Charging Control over Rx reference point */ + /* */ + /* From 3GPP 29214-f70.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.214 Table 5.3.0.1: Rx specific Diameter AVPs */ + /*==================================================================*/ + + /* Abort-Cause, Enumerated, code 500, section 5.3.1 */ + { + struct dict_avp_data data = { + 500, /* Code */ + 10415, /* Vendor */ + "Abort-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Abort-Cause)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Access-Network-Charging-Address, Address, code 501, section 5.3.2 */ + { + struct dict_avp_data data = { + 501, /* Code */ + 10415, /* Vendor */ + "Access-Network-Charging-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Access-Network-Charging-Identifier, Grouped, code 502, section 5.3.3 */ + { + struct dict_avp_data data = { + 502, /* Code */ + 10415, /* Vendor */ + "Access-Network-Charging-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Network-Charging-Identifier-Value, OctetString, code 503, section 5.3.4 */ + { + struct dict_avp_data data = { + 503, /* Code */ + 10415, /* Vendor */ + "Access-Network-Charging-Identifier-Value", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Acceptable-Service-Info, Grouped, code 526, section 5.3.24 */ + { + struct dict_avp_data data = { + 526, /* Code */ + 10415, /* Vendor */ + "Acceptable-Service-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AF-Application-Identifier, OctetString, code 504, section 5.3.5 */ + { + struct dict_avp_data data = { + 504, /* Code */ + 10415, /* Vendor */ + "AF-Application-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AF-Charging-Identifier, OctetString, code 505, section 5.3.6 */ + { + struct dict_avp_data data = { + 505, /* Code */ + 10415, /* Vendor */ + "AF-Charging-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AF-Requested-Data, Unsigned32, code 551, section 5.3.50 */ + { + struct dict_avp_data data = { + 551, /* Code */ + 10415, /* Vendor */ + "AF-Requested-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AF-Signalling-Protocol, Enumerated, code 529, section 5.3.26 */ + { + struct dict_avp_data data = { + 529, /* Code */ + 10415, /* Vendor */ + "AF-Signalling-Protocol", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AF-Signalling-Protocol)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Application-Service-Provider-Identity, UTF8String, code 532, section 5.3.29 */ + { + struct dict_avp_data data = { + 532, /* Code */ + 10415, /* Vendor */ + "Application-Service-Provider-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Codec-Data, OctetString, code 524, section 5.3.7 */ + { + struct dict_avp_data data = { + 524, /* Code */ + 10415, /* Vendor */ + "Codec-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Content-Version, Unsigned64, code 552, section 5.3.49 */ + { + struct dict_avp_data data = { + 552, /* Code */ + 10415, /* Vendor */ + "Content-Version", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-Max-Requested-BW-DL, Unsigned32, code 554, section 5.3.52 */ + { + struct dict_avp_data data = { + 554, /* Code */ + 10415, /* Vendor */ + "Extended-Max-Requested-BW-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-Max-Requested-BW-UL, Unsigned32, code 555, section 5.3.53 */ + { + struct dict_avp_data data = { + 555, /* Code */ + 10415, /* Vendor */ + "Extended-Max-Requested-BW-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-Max-Supported-BW-DL, Unsigned32, code 556, section 5.3.54 */ + { + struct dict_avp_data data = { + 556, /* Code */ + 10415, /* Vendor */ + "Extended-Max-Supported-BW-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-Max-Supported-BW-UL, Unsigned32, code 557, section 5.3.55 */ + { + struct dict_avp_data data = { + 557, /* Code */ + 10415, /* Vendor */ + "Extended-Max-Supported-BW-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-Min-Desired-BW-DL, Unsigned32, code 558, section 5.3.56 */ + { + struct dict_avp_data data = { + 558, /* Code */ + 10415, /* Vendor */ + "Extended-Min-Desired-BW-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-Min-Desired-BW-UL, Unsigned32, code 559, section 5.3.57 */ + { + struct dict_avp_data data = { + 559, /* Code */ + 10415, /* Vendor */ + "Extended-Min-Desired-BW-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-Min-Requested-BW-DL, Unsigned32, code 560, section 5.3.58 */ + { + struct dict_avp_data data = { + 560, /* Code */ + 10415, /* Vendor */ + "Extended-Min-Requested-BW-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-Min-Requested-BW-UL, Unsigned32, code 561, section 5.3.59 */ + { + struct dict_avp_data data = { + 561, /* Code */ + 10415, /* Vendor */ + "Extended-Min-Requested-BW-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Flow-Description, IPFilterRule, code 507, section 5.3.8 */ + { + struct dict_avp_data data = { + 507, /* Code */ + 10415, /* Vendor */ + "Flow-Description", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); + }; + + /* Flow-Number, Unsigned32, code 509, section 5.3.9 */ + { + struct dict_avp_data data = { + 509, /* Code */ + 10415, /* Vendor */ + "Flow-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Flows, Grouped, code 510, section 5.3.10 */ + { + struct dict_avp_data data = { + 510, /* Code */ + 10415, /* Vendor */ + "Flows", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Flow-Status, Enumerated, code 511, section 5.3.11 */ + { + struct dict_avp_data data = { + 511, /* Code */ + 10415, /* Vendor */ + "Flow-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Flow-Usage, Enumerated, code 512, section 5.3.12 */ + { + struct dict_avp_data data = { + 512, /* Code */ + 10415, /* Vendor */ + "Flow-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Usage)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* GCS-Identifier, OctetString, code 538, section 5.3.36 */ + { + struct dict_avp_data data = { + 538, /* Code */ + 10415, /* Vendor */ + "GCS-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.214 Table 5.3.0.1 row IMS-Content-Identifier (563) */ + /* missing M, assume MUST NOT. */ + /* */ + /* Fix: IMS-Content-Identifier (563) flag M MUST NOT. */ + /* IMS-Content-Identifier, OctetString, code 563, section 5.3.60 */ + { + struct dict_avp_data data = { + 563, /* Code */ + 10415, /* Vendor */ + "IMS-Content-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.214 Table 5.3.0.1 row IMS-Content (564) */ + /* missing M, assume MUST NOT. */ + /* */ + /* Fix: IMS-Content (564) flag M MUST NOT. */ + /* IMS-Content-Type, Enumerated, code 564, section 5.3.61 */ + { + struct dict_avp_data data = { + 564, /* Code */ + 10415, /* Vendor */ + "IMS-Content-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMS-Content-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* IP-Domain-Id, OctetString, code 537, section 5.3.35 */ + { + struct dict_avp_data data = { + 537, /* Code */ + 10415, /* Vendor */ + "IP-Domain-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Max-Requested-Bandwidth-DL, Unsigned32, code 515, section 5.3.14 */ + { + struct dict_avp_data data = { + 515, /* Code */ + 10415, /* Vendor */ + "Max-Requested-Bandwidth-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Max-Requested-Bandwidth-UL, Unsigned32, code 516, section 5.3.15 */ + { + struct dict_avp_data data = { + 516, /* Code */ + 10415, /* Vendor */ + "Max-Requested-Bandwidth-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Max-Supported-Bandwidth-DL, Unsigned32, code 543, section 5.3.41 */ + { + struct dict_avp_data data = { + 543, /* Code */ + 10415, /* Vendor */ + "Max-Supported-Bandwidth-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Max-Supported-Bandwidth-UL, Unsigned32, code 544, section 5.3.42 */ + { + struct dict_avp_data data = { + 544, /* Code */ + 10415, /* Vendor */ + "Max-Supported-Bandwidth-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MCPTT-Identifier, OctetString, code 547, section 5.3.45 */ + { + struct dict_avp_data data = { + 547, /* Code */ + 10415, /* Vendor */ + "MCPTT-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MCVideo-Identifier, OctetString, code 562, section 5.3.45a */ + { + struct dict_avp_data data = { + 562, /* Code */ + 10415, /* Vendor */ + "MCVideo-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Media-Component-Description, Grouped, code 517, section 5.3.16 */ + { + struct dict_avp_data data = { + 517, /* Code */ + 10415, /* Vendor */ + "Media-Component-Description", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Media-Component-Number, Unsigned32, code 518, section 5.3.17 */ + { + struct dict_avp_data data = { + 518, /* Code */ + 10415, /* Vendor */ + "Media-Component-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Media-Component-Status, Unsigned32, code 549, section 5.3.48 */ + { + struct dict_avp_data data = { + 549, /* Code */ + 10415, /* Vendor */ + "Media-Component-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Media-Sub-Component, Grouped, code 519, section 5.3.18 */ + { + struct dict_avp_data data = { + 519, /* Code */ + 10415, /* Vendor */ + "Media-Sub-Component", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Media-Type, Enumerated, code 520, section 5.3.19 */ + { + struct dict_avp_data data = { + 520, /* Code */ + 10415, /* Vendor */ + "Media-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Media-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MPS-Identifier, OctetString, code 528, section 5.3.30 */ + { + struct dict_avp_data data = { + 528, /* Code */ + 10415, /* Vendor */ + "MPS-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Min-Desired-Bandwidth-DL, Unsigned32, code 545, section 5.3.43 */ + { + struct dict_avp_data data = { + 545, /* Code */ + 10415, /* Vendor */ + "Min-Desired-Bandwidth-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Min-Desired-Bandwidth-UL, Unsigned32, code 546, section 5.3.44 */ + { + struct dict_avp_data data = { + 546, /* Code */ + 10415, /* Vendor */ + "Min-Desired-Bandwidth-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Min-Requested-Bandwidth-DL, Unsigned32, code 534, section 5.3.32 */ + { + struct dict_avp_data data = { + 534, /* Code */ + 10415, /* Vendor */ + "Min-Requested-Bandwidth-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Min-Requested-Bandwidth-UL, Unsigned32, code 535, section 5.3.33 */ + { + struct dict_avp_data data = { + 535, /* Code */ + 10415, /* Vendor */ + "Min-Requested-Bandwidth-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Priority-Sharing-Indicator, Enumerated, code 550, section 5.3.47 */ + { + struct dict_avp_data data = { + 550, /* Code */ + 10415, /* Vendor */ + "Priority-Sharing-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priority-Sharing-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Pre-emption-Control-Info, Unsigned32, code 553, section 5.3.51 */ + { + struct dict_avp_data data = { + 553, /* Code */ + 10415, /* Vendor */ + "Pre-emption-Control-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Required-Access-Info, Enumerated, code 536, section 5.3.34 */ + { + struct dict_avp_data data = { + 536, /* Code */ + 10415, /* Vendor */ + "Required-Access-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Required-Access-Info)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Retry-Interval, Unsigned32, code 541, section 5.3.39 */ + { + struct dict_avp_data data = { + 541, /* Code */ + 10415, /* Vendor */ + "Retry-Interval", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Rx-Request-Type, Enumerated, code 533, section 5.3.31 */ + { + struct dict_avp_data data = { + 533, /* Code */ + 10415, /* Vendor */ + "Rx-Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Rx-Request-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* RR-Bandwidth, Unsigned32, code 521, section 5.3.20 */ + { + struct dict_avp_data data = { + 521, /* Code */ + 10415, /* Vendor */ + "RR-Bandwidth", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RS-Bandwidth, Unsigned32, code 522, section 5.3.21 */ + { + struct dict_avp_data data = { + 522, /* Code */ + 10415, /* Vendor */ + "RS-Bandwidth", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Authorization-Info, Unsigned32, code 548, section 5.3.46 */ + { + struct dict_avp_data data = { + 548, /* Code */ + 10415, /* Vendor */ + "Service-Authorization-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-URN, OctetString, code 525, section 5.3.23 */ + { + struct dict_avp_data data = { + 525, /* Code */ + 10415, /* Vendor */ + "Service-URN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Info-Status, Enumerated, code 527, section 5.3.25 */ + { + struct dict_avp_data data = { + 527, /* Code */ + 10415, /* Vendor */ + "Service-Info-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Service-Info-Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Sharing-Key-DL, Unsigned32, code 539, section 5.3.37 */ + { + struct dict_avp_data data = { + 539, /* Code */ + 10415, /* Vendor */ + "Sharing-Key-DL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Sharing-Key-UL, Unsigned32, code 540, section 5.3.38 */ + { + struct dict_avp_data data = { + 540, /* Code */ + 10415, /* Vendor */ + "Sharing-Key-UL", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Specific-Action, Enumerated, code 513, section 5.3.13 */ + { + struct dict_avp_data data = { + 513, /* Code */ + 10415, /* Vendor */ + "Specific-Action", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Specific-Action)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SIP-Forking-Indication, Enumerated, code 523, section 5.3.22 */ + { + struct dict_avp_data data = { + 523, /* Code */ + 10415, /* Vendor */ + "SIP-Forking-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SIP-Forking-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Sponsor-Identity, UTF8String, code 531, section 5.3.28 */ + { + struct dict_avp_data data = { + 531, /* Code */ + 10415, /* Vendor */ + "Sponsor-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Sponsored-Connectivity-Data, Grouped, code 530, section 5.3.27 */ + { + struct dict_avp_data data = { + 530, /* Code */ + 10415, /* Vendor */ + "Sponsored-Connectivity-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Sponsoring-Action, Enumerated, code 542, section 5.3.40 */ + { + struct dict_avp_data data = { + 542, /* Code */ + 10415, /* Vendor */ + "Sponsoring-Action", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Sponsoring-Action)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.215 V15.2.0 (2019-09) */ + /* Policy and Charging Control (PCC) over S9 reference point; */ + /* Stage 3 */ + /* */ + /* From 3GPP 29215-f20.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.215 Table 5.3.0.1: S9 specific Diameter AVPs */ + /*==================================================================*/ + + /* DRA-Deployment, Enumerated, code 2206, section 5.3.7 */ + { + struct dict_avp_data data = { + 2206, /* Code */ + 10415, /* Vendor */ + "DRA-Deployment", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/DRA-Deployment)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Multiple-BBERF-Action, Enumerated, code 2204, section 5.3.6 */ + { + struct dict_avp_data data = { + 2204, /* Code */ + 10415, /* Vendor */ + "Multiple-BBERF-Action", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Multiple-BBERF-Action)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Subsession-Decision-Info, Grouped, code 2200, section 5.3.1 */ + { + struct dict_avp_data data = { + 2200, /* Code */ + 10415, /* Vendor */ + "Subsession-Decision-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Subsession-Enforcement-Info, Grouped, code 2201, section 5.3.2 */ + { + struct dict_avp_data data = { + 2201, /* Code */ + 10415, /* Vendor */ + "Subsession-Enforcement-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Subsession-Id, Unsigned32, code 2202, section 5.3.3 */ + { + struct dict_avp_data data = { + 2202, /* Code */ + 10415, /* Vendor */ + "Subsession-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Subsession-Operation, Enumerated, code 2203, section 5.3.4 */ + { + struct dict_avp_data data = { + 2203, /* Code */ + 10415, /* Vendor */ + "Subsession-Operation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subsession-Operation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* DRA-Binding, Enumerated, code 2208, section 5.3.x */ + { + struct dict_avp_data data = { + 2208, /* Code */ + 10415, /* Vendor */ + "DRA-Binding", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/DRA-Binding)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.215 Table A.7.3.1.1: S9a specific Diameter AVPs */ + /*==================================================================*/ + + /* PCRF-Address, DiameterIdentity, code 2207, section A.7.3.1.1 */ + { + struct dict_avp_data data = { + 2207, /* Code */ + 10415, /* Vendor */ + "PCRF-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.215 Table A.8.3.1.1: S9a* specific Diameter AVPs */ + /*==================================================================*/ + + /* UE-Local-IPv6-Prefix, OctetString, code 2205, section A.8.3.1 */ + { + struct dict_avp_data data = { + 2205, /* Code */ + 10415, /* Vendor */ + "UE-Local-IPv6-Prefix", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.217 V15.1.0 (2019-09) */ + /* Policy and Charging Control (PCC); */ + /* Congestion reporting over Np reference point */ + /* */ + /* From 3GPP 29217-f10.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.217 Table 5.3.1.1: Np specific Diameter AVPs */ + /*==================================================================*/ + + /* Aggregated-Congestion-Info, Grouped, code 4000, section 5.3.2 */ + { + struct dict_avp_data data = { + 4000, /* Code */ + 10415, /* Vendor */ + "Aggregated-Congestion-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Aggregated-RUCI-Report, Grouped, code 4001, section 5.3.3 */ + { + struct dict_avp_data data = { + 4001, /* Code */ + 10415, /* Vendor */ + "Aggregated-RUCI-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Congestion-Level-Definition, Grouped, code 4002, section 5.3.4 */ + { + struct dict_avp_data data = { + 4002, /* Code */ + 10415, /* Vendor */ + "Congestion-Level-Definition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Congestion-Level-Range, Unsigned32, code 4003, section 5.3.5 */ + { + struct dict_avp_data data = { + 4003, /* Code */ + 10415, /* Vendor */ + "Congestion-Level-Range", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Congestion-Level-Set-Id, Unsigned32, code 4004, section 5.3.6 */ + { + struct dict_avp_data data = { + 4004, /* Code */ + 10415, /* Vendor */ + "Congestion-Level-Set-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Congestion-Level-Value, Unsigned32, code 4005, section 5.3.7 */ + { + struct dict_avp_data data = { + 4005, /* Code */ + 10415, /* Vendor */ + "Congestion-Level-Value", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Congestion-Location-Id, Grouped, code 4006, section 5.3.8 */ + { + struct dict_avp_data data = { + 4006, /* Code */ + 10415, /* Vendor */ + "Congestion-Location-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Conditional-Restriction, Unsigned32, code 4007, section 5.3.9 */ + { + struct dict_avp_data data = { + 4007, /* Code */ + 10415, /* Vendor */ + "Conditional-Restriction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* eNodeB-Id, OctetString, code 4008, section 5.3.10 */ + { + struct dict_avp_data data = { + 4008, /* Code */ + 10415, /* Vendor */ + "eNodeB-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IMSI-List, OctetString, code 4009, section 5.3.11 */ + { + struct dict_avp_data data = { + 4009, /* Code */ + 10415, /* Vendor */ + "IMSI-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RCAF-Id, DiameterIdentity, code 4010, section 5.3.12 */ + { + struct dict_avp_data data = { + 4010, /* Code */ + 10415, /* Vendor */ + "RCAF-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* Reporting-Restriction, Unsigned32, code 4011, section 5.3.13 */ + { + struct dict_avp_data data = { + 4011, /* Code */ + 10415, /* Vendor */ + "Reporting-Restriction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RUCI-Action, Unsigned32, code 4012, section 5.3.14 */ + { + struct dict_avp_data data = { + 4012, /* Code */ + 10415, /* Vendor */ + "RUCI-Action", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Extended-eNodeB-Id, OctetString, code 4013, section 5.3.15 */ + { + struct dict_avp_data data = { + 4013, /* Code */ + 10415, /* Vendor */ + "Extended-eNodeB-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.219 V15.3.0 (2019-09) */ + /* Policy and Charging Control: Spending Limit Reporting over */ + /* Sy reference point */ + /* */ + /* From 3GPP 29219-f30.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.219 Table 5.3.0.1: Sy specific Diameter AVPs */ + /*==================================================================*/ + + /* Pending-Policy-Counter-Information, Grouped, code 2905, section 5.3.5 */ + { + struct dict_avp_data data = { + 2905, /* Code */ + 10415, /* Vendor */ + "Pending-Policy-Counter-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Pending-Policy-Counter-Change-Time, Time, code 2906, section 5.3.6 */ + { + struct dict_avp_data data = { + 2906, /* Code */ + 10415, /* Vendor */ + "Pending-Policy-Counter-Change-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Policy-Counter-Identifier, UTF8String, code 2901, section 5.3.1 */ + { + struct dict_avp_data data = { + 2901, /* Code */ + 10415, /* Vendor */ + "Policy-Counter-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Policy-Counter-Status, UTF8String, code 2902, section 5.3.2 */ + { + struct dict_avp_data data = { + 2902, /* Code */ + 10415, /* Vendor */ + "Policy-Counter-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Policy-Counter-Status-Report, Grouped, code 2903, section 5.3.3 */ + { + struct dict_avp_data data = { + 2903, /* Code */ + 10415, /* Vendor */ + "Policy-Counter-Status-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SL-Request-Type, Enumerated, code 2904, section 5.3.4 */ + { + struct dict_avp_data data = { + 2904, /* Code */ + 10415, /* Vendor */ + "SL-Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SL-Request-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SN-Request-Type, Unsigned32, code 2907, section 5.3.7 */ + { + struct dict_avp_data data = { + 2907, /* Code */ + 10415, /* Vendor */ + "SN-Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.229 V15.2.0 (2019-09) */ + /* Cx and Dx interfaces based on the Diameter protocol; */ + /* Protocol details */ + /* */ + /* From 3GPP 29229-f20.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.229 Table 6.3.1: Diameter Multimedia Application AVPs */ + /* */ + /* Note: AVPs referenced from other sources are not added here. */ + /*==================================================================*/ + + /* Visited-Network-Identifier, OctetString, code 600, section 6.3.1 */ + { + struct dict_avp_data data = { + 600, /* Code */ + 10415, /* Vendor */ + "Visited-Network-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Public-Identity, UTF8String, code 601, section 6.3.2 */ + { + struct dict_avp_data data = { + 601, /* Code */ + 10415, /* Vendor */ + "Public-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Server-Name, UTF8String, code 602, section 6.3.3 */ + { + struct dict_avp_data data = { + 602, /* Code */ + 10415, /* Vendor */ + "Server-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Server-Capabilities, Grouped, code 603, section 6.3.4 */ + { + struct dict_avp_data data = { + 603, /* Code */ + 10415, /* Vendor */ + "Server-Capabilities", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Mandatory-Capability, Unsigned32, code 604, section 6.3.5 */ + { + struct dict_avp_data data = { + 604, /* Code */ + 10415, /* Vendor */ + "Mandatory-Capability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Optional-Capability, Unsigned32, code 605, section 6.3.6 */ + { + struct dict_avp_data data = { + 605, /* Code */ + 10415, /* Vendor */ + "Optional-Capability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.329 User-Data (702). */ + /* 3GPP TS 29.229 V6.2.0 (2004-09) allocated User-Data (606). */ + /* 3GPP TS 29.329 V6.2.0 (2004-09) allocated User-Data (702). */ + /* User-Data, OctetString, code 606, section 6.3.7 */ + { + struct dict_avp_data data = { + 606, /* Code */ + 10415, /* Vendor */ + "User-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Number-Auth-Items, Unsigned32, code 607, section 6.3.8 */ + { + struct dict_avp_data data = { + 607, /* Code */ + 10415, /* Vendor */ + "SIP-Number-Auth-Items", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Authentication-Scheme, UTF8String, code 608, section 6.3.9 */ + { + struct dict_avp_data data = { + 608, /* Code */ + 10415, /* Vendor */ + "SIP-Authentication-Scheme", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SIP-Authenticate, OctetString, code 609, section 6.3.10 */ + { + struct dict_avp_data data = { + 609, /* Code */ + 10415, /* Vendor */ + "SIP-Authenticate", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Authorization, OctetString, code 610, section 6.3.11 */ + { + struct dict_avp_data data = { + 610, /* Code */ + 10415, /* Vendor */ + "SIP-Authorization", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Authentication-Context, OctetString, code 611, section 6.3.12 */ + { + struct dict_avp_data data = { + 611, /* Code */ + 10415, /* Vendor */ + "SIP-Authentication-Context", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Auth-Data-Item, Grouped, code 612, section 6.3.13 */ + { + struct dict_avp_data data = { + 612, /* Code */ + 10415, /* Vendor */ + "SIP-Auth-Data-Item", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Item-Number, Unsigned32, code 613, section 6.3.14 */ + { + struct dict_avp_data data = { + 613, /* Code */ + 10415, /* Vendor */ + "SIP-Item-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Server-Assignment-Type, Enumerated, code 614, section 6.3.15 */ + { + struct dict_avp_data data = { + 614, /* Code */ + 10415, /* Vendor */ + "Server-Assignment-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Server-Assignment-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Deregistration-Reason, Grouped, code 615, section 6.3.16 */ + { + struct dict_avp_data data = { + 615, /* Code */ + 10415, /* Vendor */ + "Deregistration-Reason", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reason-Code, Enumerated, code 616, section 6.3.17 */ + { + struct dict_avp_data data = { + 616, /* Code */ + 10415, /* Vendor */ + "Reason-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reason-Code)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Reason-Info, UTF8String, code 617, section 6.3.18 */ + { + struct dict_avp_data data = { + 617, /* Code */ + 10415, /* Vendor */ + "Reason-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Charging-Information, Grouped, code 618, section 6.3.19 */ + { + struct dict_avp_data data = { + 618, /* Code */ + 10415, /* Vendor */ + "Charging-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Primary-Event-Charging-Function-Name, DiameterURI, code 619, section 6.3.20 */ + { + struct dict_avp_data data = { + 619, /* Code */ + 10415, /* Vendor */ + "Primary-Event-Charging-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); + }; + + /* Secondary-Event-Charging-Function-Name, DiameterURI, code 620, section 6.3.21 */ + { + struct dict_avp_data data = { + 620, /* Code */ + 10415, /* Vendor */ + "Secondary-Event-Charging-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); + }; + + /* Primary-Charging-Collection-Function-Name, DiameterURI, code 621, section 6.3.22 */ + { + struct dict_avp_data data = { + 621, /* Code */ + 10415, /* Vendor */ + "Primary-Charging-Collection-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); + }; + + /* Secondary-Charging-Collection-Function-Name, DiameterURI, code 622, section 6.3.23 */ + { + struct dict_avp_data data = { + 622, /* Code */ + 10415, /* Vendor */ + "Secondary-Charging-Collection-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); + }; + + /* User-Authorization-Type, Enumerated, code 623, section 6.3.24 */ + { + struct dict_avp_data data = { + 623, /* Code */ + 10415, /* Vendor */ + "User-Authorization-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Authorization-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* User-Data-Already-Available, Enumerated, code 624, section 6.3.26 */ + { + struct dict_avp_data data = { + 624, /* Code */ + 10415, /* Vendor */ + "User-Data-Already-Available", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Data-Already-Available)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Confidentiality-Key, OctetString, code 625, section 6.3.27 */ + { + struct dict_avp_data data = { + 625, /* Code */ + 10415, /* Vendor */ + "Confidentiality-Key", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Integrity-Key, OctetString, code 626, section 6.3.28 */ + { + struct dict_avp_data data = { + 626, /* Code */ + 10415, /* Vendor */ + "Integrity-Key", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: User-Data-Request-Type (627) removed in 3GPP TS 29.229 V6.5.0 (2005-06). */ + + /* Supported-Features, Grouped, code 628, section 6.3.29 */ + { + struct dict_avp_data data = { + 628, /* Code */ + 10415, /* Vendor */ + "Supported-Features", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Feature-List-ID, Unsigned32, code 629, section 6.3.30 */ + { + struct dict_avp_data data = { + 629, /* Code */ + 10415, /* Vendor */ + "Feature-List-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Feature-List, Unsigned32, code 630, section 6.3.31 */ + { + struct dict_avp_data data = { + 630, /* Code */ + 10415, /* Vendor */ + "Feature-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Supported-Applications, Grouped, code 631, section 6.3.32 */ + { + struct dict_avp_data data = { + 631, /* Code */ + 10415, /* Vendor */ + "Supported-Applications", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Associated-Identities, Grouped, code 632, section 6.3.33 */ + { + struct dict_avp_data data = { + 632, /* Code */ + 10415, /* Vendor */ + "Associated-Identities", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Originating-Request, Enumerated, code 633, section 6.3.34 */ + { + struct dict_avp_data data = { + 633, /* Code */ + 10415, /* Vendor */ + "Originating-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originating-Request)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Wildcarded-Public-Identity, UTF8String, code 634, section 6.3.35 */ + { + struct dict_avp_data data = { + 634, /* Code */ + 10415, /* Vendor */ + "Wildcarded-Public-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SIP-Digest-Authenticate, Grouped, code 635, section 6.3.36 */ + { + struct dict_avp_data data = { + 635, /* Code */ + 10415, /* Vendor */ + "SIP-Digest-Authenticate", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Wildcarded-IMPU, UTF8String, code 636, section 6.3.43 */ + { + struct dict_avp_data data = { + 636, /* Code */ + 10415, /* Vendor */ + "Wildcarded-IMPU", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* UAR-Flags, Unsigned32, code 637, section 6.3.44 */ + { + struct dict_avp_data data = { + 637, /* Code */ + 10415, /* Vendor */ + "UAR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Loose-Route-Indication, Enumerated, code 638, section 6.3.45 */ + { + struct dict_avp_data data = { + 638, /* Code */ + 10415, /* Vendor */ + "Loose-Route-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Loose-Route-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SCSCF-Restoration-Info, Grouped, code 639, section 6.3.46 */ + { + struct dict_avp_data data = { + 639, /* Code */ + 10415, /* Vendor */ + "SCSCF-Restoration-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Path, OctetString, code 640, section 6.3.47 */ + { + struct dict_avp_data data = { + 640, /* Code */ + 10415, /* Vendor */ + "Path", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Contact, OctetString, code 641, section 6.3.48 */ + { + struct dict_avp_data data = { + 641, /* Code */ + 10415, /* Vendor */ + "Contact", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Subscription-Info, Grouped, code 642, section 6.3.49 */ + { + struct dict_avp_data data = { + 642, /* Code */ + 10415, /* Vendor */ + "Subscription-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Call-ID-SIP-Header, OctetString, code 643, section 6.3.49.1 */ + { + struct dict_avp_data data = { + 643, /* Code */ + 10415, /* Vendor */ + "Call-ID-SIP-Header", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* From-SIP-Header, OctetString, code 644, section 6.3.49.2 */ + { + struct dict_avp_data data = { + 644, /* Code */ + 10415, /* Vendor */ + "From-SIP-Header", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* To-SIP-Header, OctetString, code 645, section 6.3.49.3 */ + { + struct dict_avp_data data = { + 645, /* Code */ + 10415, /* Vendor */ + "To-SIP-Header", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Record-Route, OctetString, code 646, section 6.3.49.4 */ + { + struct dict_avp_data data = { + 646, /* Code */ + 10415, /* Vendor */ + "Record-Route", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Associated-Registered-Identities, Grouped, code 647, section 6.3.50 */ + { + struct dict_avp_data data = { + 647, /* Code */ + 10415, /* Vendor */ + "Associated-Registered-Identities", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Multiple-Registration-Indication, Enumerated, code 648, section 6.3.51 */ + { + struct dict_avp_data data = { + 648, /* Code */ + 10415, /* Vendor */ + "Multiple-Registration-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Multiple-Registration-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Restoration-Info, Grouped, code 649, section 6.3.52 */ + { + struct dict_avp_data data = { + 649, /* Code */ + 10415, /* Vendor */ + "Restoration-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Session-Priority, Enumerated, code 650, section 6.3.56 */ + { + struct dict_avp_data data = { + 650, /* Code */ + 10415, /* Vendor */ + "Session-Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Priority)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Identity-with-Emergency-Registration, Grouped, code 651, section 6.3.57 */ + { + struct dict_avp_data data = { + 651, /* Code */ + 10415, /* Vendor */ + "Identity-with-Emergency-Registration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Priviledged-Sender-Indication, Enumerated, code 652, section 6.3.58 */ + { + struct dict_avp_data data = { + 652, /* Code */ + 10415, /* Vendor */ + "Priviledged-Sender-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priviledged-Sender-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* LIA-Flags, Unsigned32, code 653, section 6.3.59 */ + { + struct dict_avp_data data = { + 653, /* Code */ + 10415, /* Vendor */ + "LIA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Initial-CSeq-Sequence-Number, Unsigned32, code 654, section 6.3.62 */ + { + struct dict_avp_data data = { + 654, /* Code */ + 10415, /* Vendor */ + "Initial-CSeq-Sequence-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SAR-Flags, Unsigned32, code 655, section 6.3.63 */ + { + struct dict_avp_data data = { + 655, /* Code */ + 10415, /* Vendor */ + "SAR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Allowed-WAF-WWSF-Identities, Grouped, code 656, section 6.3.64 */ + { + struct dict_avp_data data = { + 656, /* Code */ + 10415, /* Vendor */ + "Allowed-WAF-WWSF-Identities", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WebRTC-Authentication-Function-Name, UTF8String, code 657, section 6.3.65 */ + { + struct dict_avp_data data = { + 657, /* Code */ + 10415, /* Vendor */ + "WebRTC-Authentication-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* WebRTC-Web-Server-Function-Name, UTF8String, code 658, section 6.3.66 */ + { + struct dict_avp_data data = { + 658, /* Code */ + 10415, /* Vendor */ + "WebRTC-Web-Server-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* RTR-Flags, Unsigned32, code 659, section 6.3.69 */ + { + struct dict_avp_data data = { + 659, /* Code */ + 10415, /* Vendor */ + "RTR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.234 V11.2.0 (2013-06) */ + /* 3GPP system to Wireless Local Area Network (WLAN) */ + /* interworking; */ + /* Stage 3 */ + /* */ + /* From 3GPP 29234-b20.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.234 Table 10.1.1: Diameter Multimedia Application AVPs */ + /*==================================================================*/ + + /* 3GPP-WLAN-APN-Id, OctetString, code 100, section 10.1.15 */ + { + struct dict_avp_data data = { + 100, /* Code */ + 10415, /* Vendor */ + "3GPP-WLAN-APN-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Authentication-Method, Enumerated, code 300, section 10.1.5 */ + { + struct dict_avp_data data = { + 300, /* Code */ + 10415, /* Vendor */ + "Authentication-Method", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Authentication-Method)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Authentication-Information-SIM, OctetString, code 301, section 10.1.6 */ + { + struct dict_avp_data data = { + 301, /* Code */ + 10415, /* Vendor */ + "Authentication-Information-SIM", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Authorization-Information-SIM, OctetString, code 302, section 10.1.7 */ + { + struct dict_avp_data data = { + 302, /* Code */ + 10415, /* Vendor */ + "Authorization-Information-SIM", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-User-Data, Grouped, code 303, section 10.1.8 */ + { + struct dict_avp_data data = { + 303, /* Code */ + 10415, /* Vendor */ + "WLAN-User-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Data, Grouped, code 304, section 10.1.10 */ + { + struct dict_avp_data data = { + 304, /* Code */ + 10415, /* Vendor */ + "Charging-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-Access, Enumerated, code 305, section 10.1.11 */ + { + struct dict_avp_data data = { + 305, /* Code */ + 10415, /* Vendor */ + "WLAN-Access", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/WLAN-Access)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* WLAN-3GPP-IP-Access, Enumerated, code 306, section 10.1.12 */ + { + struct dict_avp_data data = { + 306, /* Code */ + 10415, /* Vendor */ + "WLAN-3GPP-IP-Access", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/WLAN-3GPP-IP-Access)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* APN-Authorized, Grouped, code 307, section 10.1.14 */ + { + struct dict_avp_data data = { + 307, /* Code */ + 10415, /* Vendor */ + "APN-Authorized", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: APN-Id (308) OctetString removed in 3GPP TS 29.234 V6.5.0 (2005-12). */ + + /* APN-Barring-Type, Enumerated, code 309, section 10.1.16 */ + { + struct dict_avp_data data = { + 309, /* Code */ + 10415, /* Vendor */ + "APN-Barring-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/APN-Barring-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* WLAN-Direct-IP-Access, Enumerated, code 310, section 10.1.17 */ + { + struct dict_avp_data data = { + 310, /* Code */ + 10415, /* Vendor */ + "WLAN-Direct-IP-Access", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/WLAN-Direct-IP-Access)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Session-Request-Type, Enumerated, code 311, section 10.1.23 */ + { + struct dict_avp_data data = { + 311, /* Code */ + 10415, /* Vendor */ + "Session-Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Request-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Routing-Policy, IPFilterRule, code 312, section 10.1.24 */ + { + struct dict_avp_data data = { + 312, /* Code */ + 10415, /* Vendor */ + "Routing-Policy", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); + }; + + /* Max-Requested-Bandwidth, OctetString, code 313, section 10.1.26 */ + { + struct dict_avp_data data = { + 313, /* Code */ + 10415, /* Vendor */ + "Max-Requested-Bandwidth", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Characteristics, Integer32, code 314, section 10.1.27 */ + { + struct dict_avp_data data = { + 314, /* Code */ + 10415, /* Vendor */ + "Charging-Characteristics", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Charging-Nodes, Grouped, code 315, section 10.1.28 */ + { + struct dict_avp_data data = { + 315, /* Code */ + 10415, /* Vendor */ + "Charging-Nodes", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Primary-OCS-Charging-Function-Name, DiameterIdentity, code 316, section 10.1.29 */ + { + struct dict_avp_data data = { + 316, /* Code */ + 10415, /* Vendor */ + "Primary-OCS-Charging-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* Secondary-OCS-Charging-Function-Name, DiameterIdentity, code 317, section 10.1.30 */ + { + struct dict_avp_data data = { + 317, /* Code */ + 10415, /* Vendor */ + "Secondary-OCS-Charging-Function-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* Note: 3GPP TS 29.273 from Release 12 now defines 3GPP-AAA-Server-Name (318). */ + /* */ + /* Maximum-Number-Accesses, Unsigned32, code 319, section 10.1.38 */ + { + struct dict_avp_data data = { + 319, /* Code */ + 10415, /* Vendor */ + "Maximum-Number-Accesses", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.272 V15.10.0 (2019-12) */ + /* Mobility Management Entity (MME) */ + /* and Serving GPRS Support Node (SGSN) related interfaces */ + /* based on Diameter protocol */ + /* */ + /* From 3GPP 29272-fa0.docx */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.272 Table 7.3.1/1: S6a/S6d, S7a/S7d and S13/S13' specific DiameterAVPs */ + /*==================================================================*/ + + /* Subscription-Data, Grouped, code 1400, section 7.3.2 */ + { + struct dict_avp_data data = { + 1400, /* Code */ + 10415, /* Vendor */ + "Subscription-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Terminal-Information, Grouped, code 1401, section 7.3.3 */ + { + struct dict_avp_data data = { + 1401, /* Code */ + 10415, /* Vendor */ + "Terminal-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IMEI, UTF8String, code 1402, section 7.3.4 */ + { + struct dict_avp_data data = { + 1402, /* Code */ + 10415, /* Vendor */ + "IMEI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Software-Version, UTF8String, code 1403, section 7.3.5 */ + { + struct dict_avp_data data = { + 1403, /* Code */ + 10415, /* Vendor */ + "Software-Version", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* QoS-Subscribed, OctetString, code 1404, section 7.3.77 */ + { + struct dict_avp_data data = { + 1404, /* Code */ + 10415, /* Vendor */ + "QoS-Subscribed", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ULR-Flags, Unsigned32, code 1405, section 7.3.7 */ + { + struct dict_avp_data data = { + 1405, /* Code */ + 10415, /* Vendor */ + "ULR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ULA-Flags, Unsigned32, code 1406, section 7.3.8 */ + { + struct dict_avp_data data = { + 1406, /* Code */ + 10415, /* Vendor */ + "ULA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Visited-PLMN-Id, OctetString, code 1407, section 7.3.9 */ + { + struct dict_avp_data data = { + 1407, /* Code */ + 10415, /* Vendor */ + "Visited-PLMN-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Requested-EUTRAN-Authentication-Info, Grouped, code 1408, section 7.3.11 */ + { + struct dict_avp_data data = { + 1408, /* Code */ + 10415, /* Vendor */ + "Requested-EUTRAN-Authentication-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Requested-UTRAN-GERAN-Authentication-Info, Grouped, code 1409, section 7.3.12 */ + { + struct dict_avp_data data = { + 1409, /* Code */ + 10415, /* Vendor */ + "Requested-UTRAN-GERAN-Authentication-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Requested-Vectors, Unsigned32, code 1410, section 7.3.14 */ + { + struct dict_avp_data data = { + 1410, /* Code */ + 10415, /* Vendor */ + "Number-Of-Requested-Vectors", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Re-Synchronization-Info, OctetString, code 1411, section 7.3.15 */ + { + struct dict_avp_data data = { + 1411, /* Code */ + 10415, /* Vendor */ + "Re-Synchronization-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Immediate-Response-Preferred, Unsigned32, code 1412, section 7.3.16 */ + { + struct dict_avp_data data = { + 1412, /* Code */ + 10415, /* Vendor */ + "Immediate-Response-Preferred", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Authentication-Info, Grouped, code 1413, section 7.3.17 */ + { + struct dict_avp_data data = { + 1413, /* Code */ + 10415, /* Vendor */ + "Authentication-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* E-UTRAN-Vector, Grouped, code 1414, section 7.3.18 */ + { + struct dict_avp_data data = { + 1414, /* Code */ + 10415, /* Vendor */ + "E-UTRAN-Vector", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UTRAN-Vector, Grouped, code 1415, section 7.3.19 */ + { + struct dict_avp_data data = { + 1415, /* Code */ + 10415, /* Vendor */ + "UTRAN-Vector", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* GERAN-Vector, Grouped, code 1416, section 7.3.20 */ + { + struct dict_avp_data data = { + 1416, /* Code */ + 10415, /* Vendor */ + "GERAN-Vector", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Network-Access-Mode, Enumerated, code 1417, section 7.3.21 */ + { + struct dict_avp_data data = { + 1417, /* Code */ + 10415, /* Vendor */ + "Network-Access-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Network-Access-Mode)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* HPLMN-ODB, Unsigned32, code 1418, section 7.3.22 */ + { + struct dict_avp_data data = { + 1418, /* Code */ + 10415, /* Vendor */ + "HPLMN-ODB", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Item-Number, Unsigned32, code 1419, section 7.3.23 */ + { + struct dict_avp_data data = { + 1419, /* Code */ + 10415, /* Vendor */ + "Item-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Cancellation-Type, Enumerated, code 1420, section 7.3.24 */ + { + struct dict_avp_data data = { + 1420, /* Code */ + 10415, /* Vendor */ + "Cancellation-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Cancellation-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* DSR-Flags, Unsigned32, code 1421, section 7.3.25 */ + { + struct dict_avp_data data = { + 1421, /* Code */ + 10415, /* Vendor */ + "DSR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DSA-Flags, Unsigned32, code 1422, section 7.3.26 */ + { + struct dict_avp_data data = { + 1422, /* Code */ + 10415, /* Vendor */ + "DSA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Context-Identifier, Unsigned32, code 1423, section 7.3.27 */ + { + struct dict_avp_data data = { + 1423, /* Code */ + 10415, /* Vendor */ + "Context-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Subscriber-Status, Enumerated, code 1424, section 7.3.29 */ + { + struct dict_avp_data data = { + 1424, /* Code */ + 10415, /* Vendor */ + "Subscriber-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscriber-Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Operator-Determined-Barring, Unsigned32, code 1425, section 7.3.30 */ + { + struct dict_avp_data data = { + 1425, /* Code */ + 10415, /* Vendor */ + "Operator-Determined-Barring", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Restriction-Data, Unsigned32, code 1426, section 7.3.31 */ + { + struct dict_avp_data data = { + 1426, /* Code */ + 10415, /* Vendor */ + "Access-Restriction-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* APN-OI-Replacement, UTF8String, code 1427, section 7.3.32 */ + { + struct dict_avp_data data = { + 1427, /* Code */ + 10415, /* Vendor */ + "APN-OI-Replacement", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* All-APN-Configurations-Included-Indicator, Enumerated, code 1428, section 7.3.33 */ + { + struct dict_avp_data data = { + 1428, /* Code */ + 10415, /* Vendor */ + "All-APN-Configurations-Included-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/All-APN-Configurations-Included-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* APN-Configuration-Profile, Grouped, code 1429, section 7.3.34 */ + { + struct dict_avp_data data = { + 1429, /* Code */ + 10415, /* Vendor */ + "APN-Configuration-Profile", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* APN-Configuration, Grouped, code 1430, section 7.3.35 */ + { + struct dict_avp_data data = { + 1430, /* Code */ + 10415, /* Vendor */ + "APN-Configuration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* EPS-Subscribed-QoS-Profile, Grouped, code 1431, section 7.3.37 */ + { + struct dict_avp_data data = { + 1431, /* Code */ + 10415, /* Vendor */ + "EPS-Subscribed-QoS-Profile", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* VPLMN-Dynamic-Address-Allowed, Enumerated, code 1432, section 7.3.38 */ + { + struct dict_avp_data data = { + 1432, /* Code */ + 10415, /* Vendor */ + "VPLMN-Dynamic-Address-Allowed", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/VPLMN-Dynamic-Address-Allowed)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* STN-SR, OctetString, code 1433, section 7.3.39 */ + { + struct dict_avp_data data = { + 1433, /* Code */ + 10415, /* Vendor */ + "STN-SR", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Alert-Reason, Enumerated, code 1434, section 7.3.83 */ + { + struct dict_avp_data data = { + 1434, /* Code */ + 10415, /* Vendor */ + "Alert-Reason", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Alert-Reason)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AMBR, Grouped, code 1435, section 7.3.41 */ + { + struct dict_avp_data data = { + 1435, /* Code */ + 10415, /* Vendor */ + "AMBR", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CSG-Subscription-Data, Grouped, code 1436, section 7.3.78 */ + { + struct dict_avp_data data = { + 1436, /* Code */ + 10415, /* Vendor */ + "CSG-Subscription-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CSG-Id, Unsigned32, code 1437, section 7.3.79 */ + { + struct dict_avp_data data = { + 1437, /* Code */ + 10415, /* Vendor */ + "CSG-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PDN-GW-Allocation-Type, Enumerated, code 1438, section 7.3.44 */ + { + struct dict_avp_data data = { + 1438, /* Code */ + 10415, /* Vendor */ + "PDN-GW-Allocation-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDN-GW-Allocation-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Expiration-Date, Time, code 1439, section 7.3.80 */ + { + struct dict_avp_data data = { + 1439, /* Code */ + 10415, /* Vendor */ + "Expiration-Date", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* RAT-Frequency-Selection-Priority-ID, Unsigned32, code 1440, section 7.3.46 */ + { + struct dict_avp_data data = { + 1440, /* Code */ + 10415, /* Vendor */ + "RAT-Frequency-Selection-Priority-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IDA-Flags, Unsigned32, code 1441, section 7.3.47 */ + { + struct dict_avp_data data = { + 1441, /* Code */ + 10415, /* Vendor */ + "IDA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PUA-Flags, Unsigned32, code 1442, section 7.3.48 */ + { + struct dict_avp_data data = { + 1442, /* Code */ + 10415, /* Vendor */ + "PUA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NOR-Flags, Unsigned32, code 1443, section 7.3.49 */ + { + struct dict_avp_data data = { + 1443, /* Code */ + 10415, /* Vendor */ + "NOR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* User-Id, UTF8String, code 1444, section 7.3.50 */ + { + struct dict_avp_data data = { + 1444, /* Code */ + 10415, /* Vendor */ + "User-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Equipment-Status, Enumerated, code 1445, section 7.3.51 */ + { + struct dict_avp_data data = { + 1445, /* Code */ + 10415, /* Vendor */ + "Equipment-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Equipment-Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Regional-Subscription-Zone-Code, OctetString, code 1446, section 7.3.52 */ + { + struct dict_avp_data data = { + 1446, /* Code */ + 10415, /* Vendor */ + "Regional-Subscription-Zone-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RAND, OctetString, code 1447, section 7.3.53 */ + { + struct dict_avp_data data = { + 1447, /* Code */ + 10415, /* Vendor */ + "RAND", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* XRES, OctetString, code 1448, section 7.3.54 */ + { + struct dict_avp_data data = { + 1448, /* Code */ + 10415, /* Vendor */ + "XRES", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AUTN, OctetString, code 1449, section 7.3.55 */ + { + struct dict_avp_data data = { + 1449, /* Code */ + 10415, /* Vendor */ + "AUTN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* KASME, OctetString, code 1450, section 7.3.56 */ + { + struct dict_avp_data data = { + 1450, /* Code */ + 10415, /* Vendor */ + "KASME", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Trace-Collection-Entity, Address, code 1452, section 7.3.98 */ + { + struct dict_avp_data data = { + 1452, /* Code */ + 10415, /* Vendor */ + "Trace-Collection-Entity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Kc, OctetString, code 1453, section 7.3.59 */ + { + struct dict_avp_data data = { + 1453, /* Code */ + 10415, /* Vendor */ + "Kc", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SRES, OctetString, code 1454, section 7.3.60 */ + { + struct dict_avp_data data = { + 1454, /* Code */ + 10415, /* Vendor */ + "SRES", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PDN-Type, Enumerated, code 1456, section 7.3.62 */ + { + struct dict_avp_data data = { + 1456, /* Code */ + 10415, /* Vendor */ + "PDN-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDN-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Roaming-Restricted-Due-To-Unsupported-Feature, Enumerated, code 1457, section 7.3.81 */ + { + struct dict_avp_data data = { + 1457, /* Code */ + 10415, /* Vendor */ + "Roaming-Restricted-Due-To-Unsupported-Feature", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Roaming-Restricted-Due-To-Unsupported-Feature)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Trace-Data, Grouped, code 1458, section 7.3.63 */ + { + struct dict_avp_data data = { + 1458, /* Code */ + 10415, /* Vendor */ + "Trace-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Trace-Reference, OctetString, code 1459, section 7.3.64 */ + { + struct dict_avp_data data = { + 1459, /* Code */ + 10415, /* Vendor */ + "Trace-Reference", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Trace-Depth, Enumerated, code 1462, section 7.3.67 */ + { + struct dict_avp_data data = { + 1462, /* Code */ + 10415, /* Vendor */ + "Trace-Depth", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trace-Depth)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Trace-NE-Type-List, OctetString, code 1463, section 7.3.68 */ + { + struct dict_avp_data data = { + 1463, /* Code */ + 10415, /* Vendor */ + "Trace-NE-Type-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Trace-Interface-List, OctetString, code 1464, section 7.3.69 */ + { + struct dict_avp_data data = { + 1464, /* Code */ + 10415, /* Vendor */ + "Trace-Interface-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Trace-Event-List, OctetString, code 1465, section 7.3.70 */ + { + struct dict_avp_data data = { + 1465, /* Code */ + 10415, /* Vendor */ + "Trace-Event-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* OMC-Id, OctetString, code 1466, section 7.3.71 */ + { + struct dict_avp_data data = { + 1466, /* Code */ + 10415, /* Vendor */ + "OMC-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* GPRS-Subscription-Data, Grouped, code 1467, section 7.3.72 */ + { + struct dict_avp_data data = { + 1467, /* Code */ + 10415, /* Vendor */ + "GPRS-Subscription-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Complete-Data-List-Included-Indicator, Enumerated, code 1468, section 7.3.73 */ + { + struct dict_avp_data data = { + 1468, /* Code */ + 10415, /* Vendor */ + "Complete-Data-List-Included-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Complete-Data-List-Included-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PDP-Context, Grouped, code 1469, section 7.3.74 */ + { + struct dict_avp_data data = { + 1469, /* Code */ + 10415, /* Vendor */ + "PDP-Context", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PDP-Type, OctetString, code 1470, section 7.3.75 */ + { + struct dict_avp_data data = { + 1470, /* Code */ + 10415, /* Vendor */ + "PDP-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP2-MEID, OctetString, code 1471, section 7.3.6 */ + { + struct dict_avp_data data = { + 1471, /* Code */ + 10415, /* Vendor */ + "3GPP2-MEID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Specific-APN-Info, Grouped, code 1472, section 7.3.82 */ + { + struct dict_avp_data data = { + 1472, /* Code */ + 10415, /* Vendor */ + "Specific-APN-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Info, Grouped, code 1473, section 7.3.84 */ + { + struct dict_avp_data data = { + 1473, /* Code */ + 10415, /* Vendor */ + "LCS-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* GMLC-Number, OctetString, code 1474, section 7.3.85 */ + { + struct dict_avp_data data = { + 1474, /* Code */ + 10415, /* Vendor */ + "GMLC-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-PrivacyException, Grouped, code 1475, section 7.3.86 */ + { + struct dict_avp_data data = { + 1475, /* Code */ + 10415, /* Vendor */ + "LCS-PrivacyException", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SS-Code, OctetString, code 1476, section 7.3.87 */ + { + struct dict_avp_data data = { + 1476, /* Code */ + 10415, /* Vendor */ + "SS-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.272 V12.5.0 (2014-06) Table 7.3.1/1 */ + /* changed row SS-Status (1477) to be OctetString instead of Grouped. */ + /* Clause 7.3.88 already described SS-Status (1147) as OctetString. */ + /* */ + /* Change-1.4.0: SS-Status (1477) type changed from Grouped to OctetString. */ + /* SS-Status, OctetString, code 1477, section 7.3.88 */ + { + struct dict_avp_data data = { + 1477, /* Code */ + 10415, /* Vendor */ + "SS-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Notification-To-UE-User, Enumerated, code 1478, section 7.3.89 */ + { + struct dict_avp_data data = { + 1478, /* Code */ + 10415, /* Vendor */ + "Notification-To-UE-User", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Notification-To-UE-User)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* External-Client, Grouped, code 1479, section 7.3.90 */ + { + struct dict_avp_data data = { + 1479, /* Code */ + 10415, /* Vendor */ + "External-Client", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Client-Identity, OctetString, code 1480, section 7.3.91 */ + { + struct dict_avp_data data = { + 1480, /* Code */ + 10415, /* Vendor */ + "Client-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* GMLC-Restriction, Enumerated, code 1481, section 7.3.92 */ + { + struct dict_avp_data data = { + 1481, /* Code */ + 10415, /* Vendor */ + "GMLC-Restriction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/GMLC-Restriction)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PLMN-Client, Enumerated, code 1482, section 7.3.93 */ + { + struct dict_avp_data data = { + 1482, /* Code */ + 10415, /* Vendor */ + "PLMN-Client", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PLMN-Client)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Service-Type, Grouped, code 1483, section 7.3.94 */ + { + struct dict_avp_data data = { + 1483, /* Code */ + 10415, /* Vendor */ + "Service-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ServiceTypeIdentity, Unsigned32, code 1484, section 7.3.95 */ + { + struct dict_avp_data data = { + 1484, /* Code */ + 10415, /* Vendor */ + "ServiceTypeIdentity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MO-LR, Grouped, code 1485, section 7.3.96 */ + { + struct dict_avp_data data = { + 1485, /* Code */ + 10415, /* Vendor */ + "MO-LR", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Teleservice-List, Grouped, code 1486, section 7.3.99 */ + { + struct dict_avp_data data = { + 1486, /* Code */ + 10415, /* Vendor */ + "Teleservice-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TS-Code, OctetString, code 1487, section 7.3.100 */ + { + struct dict_avp_data data = { + 1487, /* Code */ + 10415, /* Vendor */ + "TS-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.272 V12.4.0 (2014-03) renamed */ + /* Call-Barring-Infor-List (1488) to Call-Barring-Info (1488). */ + /* */ + /* Change-1.4.0: Call-Barring-Infor-List (1488) renamed to Call-Barring-Info (1488). */ + /* Call-Barring-Info, Grouped, code 1488, section 7.3.101 */ + { + struct dict_avp_data data = { + 1488, /* Code */ + 10415, /* Vendor */ + "Call-Barring-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SGSN-Number, OctetString, code 1489, section 7.3.102 */ + { + struct dict_avp_data data = { + 1489, /* Code */ + 10415, /* Vendor */ + "SGSN-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IDR-Flags, Unsigned32, code 1490, section 7.3.103 */ + { + struct dict_avp_data data = { + 1490, /* Code */ + 10415, /* Vendor */ + "IDR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ICS-Indicator, Enumerated, code 1491, section 7.3.104 */ + { + struct dict_avp_data data = { + 1491, /* Code */ + 10415, /* Vendor */ + "ICS-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ICS-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* IMS-Voice-Over-PS-Sessions-Supported, Enumerated, code 1492, section 7.3.106 */ + { + struct dict_avp_data data = { + 1492, /* Code */ + 10415, /* Vendor */ + "IMS-Voice-Over-PS-Sessions-Supported", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMS-Voice-Over-PS-Sessions-Supported)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions, Enumerated, code 1493, section 7.3.107 */ + { + struct dict_avp_data data = { + 1493, /* Code */ + 10415, /* Vendor */ + "Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Last-UE-Activity-Time, Time, code 1494, section 7.3.108 */ + { + struct dict_avp_data data = { + 1494, /* Code */ + 10415, /* Vendor */ + "Last-UE-Activity-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* EPS-User-State, Grouped, code 1495, section 7.3.110 */ + { + struct dict_avp_data data = { + 1495, /* Code */ + 10415, /* Vendor */ + "EPS-User-State", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* EPS-Location-Information, Grouped, code 1496, section 7.3.111 */ + { + struct dict_avp_data data = { + 1496, /* Code */ + 10415, /* Vendor */ + "EPS-Location-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MME-User-State, Grouped, code 1497, section 7.3.112 */ + { + struct dict_avp_data data = { + 1497, /* Code */ + 10415, /* Vendor */ + "MME-User-State", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SGSN-User-State, Grouped, code 1498, section 7.3.113 */ + { + struct dict_avp_data data = { + 1498, /* Code */ + 10415, /* Vendor */ + "SGSN-User-State", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* User-State, Enumerated, code 1499, section 7.3.114 */ + { + struct dict_avp_data data = { + 1499, /* Code */ + 10415, /* Vendor */ + "User-State", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-State)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Note: 3GPP TS 29.272 Table 7.3.1/1 row MME-Location-Information (1600) */ + /* incorrectly has a space instead of hyphen in the name. */ + /* */ + /* Change-1.4.0: MME-LocationInformation (1600) renamed to MME-Location-Information(1600). */ + /* MME-Location-Information, Grouped, code 1600, section 7.3.115 */ + { + struct dict_avp_data data = { + 1600, /* Code */ + 10415, /* Vendor */ + "MME-Location-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SGSN-Location-Information, Grouped, code 1601, section 7.3.116 */ + { + struct dict_avp_data data = { + 1601, /* Code */ + 10415, /* Vendor */ + "SGSN-Location-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* E-UTRAN-Cell-Global-Identity, OctetString, code 1602, section 7.3.117 */ + { + struct dict_avp_data data = { + 1602, /* Code */ + 10415, /* Vendor */ + "E-UTRAN-Cell-Global-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Tracking-Area-Identity, OctetString, code 1603, section 7.3.118 */ + { + struct dict_avp_data data = { + 1603, /* Code */ + 10415, /* Vendor */ + "Tracking-Area-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Cell-Global-Identity, OctetString, code 1604, section 7.3.119 */ + { + struct dict_avp_data data = { + 1604, /* Code */ + 10415, /* Vendor */ + "Cell-Global-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Routing-Area-Identity, OctetString, code 1605, section 7.3.120 */ + { + struct dict_avp_data data = { + 1605, /* Code */ + 10415, /* Vendor */ + "Routing-Area-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Area-Identity, OctetString, code 1606, section 7.3.121 */ + { + struct dict_avp_data data = { + 1606, /* Code */ + 10415, /* Vendor */ + "Location-Area-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Area-Identity, OctetString, code 1607, section 7.3.122 */ + { + struct dict_avp_data data = { + 1607, /* Code */ + 10415, /* Vendor */ + "Service-Area-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Geographical-Information, OctetString, code 1608, section 7.3.123 */ + { + struct dict_avp_data data = { + 1608, /* Code */ + 10415, /* Vendor */ + "Geographical-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Geodetic-Information, OctetString, code 1609, section 7.3.124 */ + { + struct dict_avp_data data = { + 1609, /* Code */ + 10415, /* Vendor */ + "Geodetic-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Current-Location-Retrieved, Enumerated, code 1610, section 7.3.125 */ + { + struct dict_avp_data data = { + 1610, /* Code */ + 10415, /* Vendor */ + "Current-Location-Retrieved", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Current-Location-Retrieved)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Age-Of-Location-Information, Unsigned32, code 1611, section 7.3.126 */ + { + struct dict_avp_data data = { + 1611, /* Code */ + 10415, /* Vendor */ + "Age-Of-Location-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Active-APN, Grouped, code 1612, section 7.3.127 */ + { + struct dict_avp_data data = { + 1612, /* Code */ + 10415, /* Vendor */ + "Active-APN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Error-Diagnostic, Enumerated, code 1614, section 7.3.128 */ + { + struct dict_avp_data data = { + 1614, /* Code */ + 10415, /* Vendor */ + "Error-Diagnostic", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Error-Diagnostic)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Ext-PDP-Address, Address, code 1621, section 7.3.129 */ + { + struct dict_avp_data data = { + 1621, /* Code */ + 10415, /* Vendor */ + "Ext-PDP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* UE-SRVCC-Capability, Enumerated, code 1615, section 7.3.130 */ + { + struct dict_avp_data data = { + 1615, /* Code */ + 10415, /* Vendor */ + "UE-SRVCC-Capability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/UE-SRVCC-Capability)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MPS-Priority, Unsigned32, code 1616, section 7.3.131 */ + { + struct dict_avp_data data = { + 1616, /* Code */ + 10415, /* Vendor */ + "MPS-Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* VPLMN-LIPA-Allowed, Enumerated, code 1617, section 7.3.132 */ + { + struct dict_avp_data data = { + 1617, /* Code */ + 10415, /* Vendor */ + "VPLMN-LIPA-Allowed", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/VPLMN-LIPA-Allowed)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* LIPA-Permission, Enumerated, code 1618, section 7.3.133 */ + { + struct dict_avp_data data = { + 1618, /* Code */ + 10415, /* Vendor */ + "LIPA-Permission", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LIPA-Permission)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Subscribed-Periodic-RAU-TAU-Timer, Unsigned32, code 1619, section 7.3.134 */ + { + struct dict_avp_data data = { + 1619, /* Code */ + 10415, /* Vendor */ + "Subscribed-Periodic-RAU-TAU-Timer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Ext-PDP-Type, OctetString, code 1620, section 7.3.75A */ + { + struct dict_avp_data data = { + 1620, /* Code */ + 10415, /* Vendor */ + "Ext-PDP-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIPTO-Permission, Enumerated, code 1613, section 7.3.135 */ + { + struct dict_avp_data data = { + 1613, /* Code */ + 10415, /* Vendor */ + "SIPTO-Permission", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SIPTO-Permission)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MDT-Configuration, Grouped, code 1622, section 7.3.136 */ + { + struct dict_avp_data data = { + 1622, /* Code */ + 10415, /* Vendor */ + "MDT-Configuration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Job-Type, Enumerated, code 1623, section 7.3.137 */ + { + struct dict_avp_data data = { + 1623, /* Code */ + 10415, /* Vendor */ + "Job-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Job-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Area-Scope, Grouped, code 1624, section 7.3.138 */ + { + struct dict_avp_data data = { + 1624, /* Code */ + 10415, /* Vendor */ + "Area-Scope", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* List-Of-Measurements, Unsigned32, code 1625, section 7.3.139 */ + { + struct dict_avp_data data = { + 1625, /* Code */ + 10415, /* Vendor */ + "List-Of-Measurements", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reporting-Trigger, Unsigned32, code 1626, section 7.3.140 */ + { + struct dict_avp_data data = { + 1626, /* Code */ + 10415, /* Vendor */ + "Reporting-Trigger", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Report-Interval, Enumerated, code 1627, section 7.3.141 */ + { + struct dict_avp_data data = { + 1627, /* Code */ + 10415, /* Vendor */ + "Report-Interval", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Report-Interval)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Report-Amount, Enumerated, code 1628, section 7.3.142 */ + { + struct dict_avp_data data = { + 1628, /* Code */ + 10415, /* Vendor */ + "Report-Amount", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Report-Amount)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Event-Threshold-RSRP, Unsigned32, code 1629, section 7.3.143 */ + { + struct dict_avp_data data = { + 1629, /* Code */ + 10415, /* Vendor */ + "Event-Threshold-RSRP", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Threshold-RSRQ, Unsigned32, code 1630, section 7.3.144 */ + { + struct dict_avp_data data = { + 1630, /* Code */ + 10415, /* Vendor */ + "Event-Threshold-RSRQ", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Logging-Interval, Enumerated, code 1631, section 7.3.145 */ + { + struct dict_avp_data data = { + 1631, /* Code */ + 10415, /* Vendor */ + "Logging-Interval", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Logging-Interval)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Logging-Duration, Enumerated, code 1632, section 7.3.146 */ + { + struct dict_avp_data data = { + 1632, /* Code */ + 10415, /* Vendor */ + "Logging-Duration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Logging-Duration)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Relay-Node-Indicator, Enumerated, code 1633, section 7.3.147 */ + { + struct dict_avp_data data = { + 1633, /* Code */ + 10415, /* Vendor */ + "Relay-Node-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Relay-Node-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MDT-User-Consent, Enumerated, code 1634, section 7.3.148 */ + { + struct dict_avp_data data = { + 1634, /* Code */ + 10415, /* Vendor */ + "MDT-User-Consent", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MDT-User-Consent)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PUR-Flags, Unsigned32, code 1635, section 7.3.149 */ + { + struct dict_avp_data data = { + 1635, /* Code */ + 10415, /* Vendor */ + "PUR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Subscribed-VSRVCC, Enumerated, code 1636, section 7.3.150 */ + { + struct dict_avp_data data = { + 1636, /* Code */ + 10415, /* Vendor */ + "Subscribed-VSRVCC", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscribed-VSRVCC)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Equivalent-PLMN-List, Grouped, code 1637, section 7.3.151 */ + { + struct dict_avp_data data = { + 1637, /* Code */ + 10415, /* Vendor */ + "Equivalent-PLMN-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CLR-Flags, Unsigned32, code 1638, section 7.3.152 */ + { + struct dict_avp_data data = { + 1638, /* Code */ + 10415, /* Vendor */ + "CLR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UVR-Flags, Unsigned32, code 1639, section 7.3.153 */ + { + struct dict_avp_data data = { + 1639, /* Code */ + 10415, /* Vendor */ + "UVR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UVA-Flags, Unsigned32, code 1640, section 7.3.154 */ + { + struct dict_avp_data data = { + 1640, /* Code */ + 10415, /* Vendor */ + "UVA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* VPLMN-CSG-Subscription-Data, Grouped, code 1641, section 7.3.155 */ + { + struct dict_avp_data data = { + 1641, /* Code */ + 10415, /* Vendor */ + "VPLMN-CSG-Subscription-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Time-Zone, UTF8String, code 1642, section 7.3.163 */ + { + struct dict_avp_data data = { + 1642, /* Code */ + 10415, /* Vendor */ + "Time-Zone", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* A-MSISDN, OctetString, code 1643, section 7.3.157 */ + { + struct dict_avp_data data = { + 1643, /* Code */ + 10415, /* Vendor */ + "A-MSISDN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MME-Number-for-MT-SMS, OctetString, code 1645, section 7.3.159 */ + { + struct dict_avp_data data = { + 1645, /* Code */ + 10415, /* Vendor */ + "MME-Number-for-MT-SMS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SMS-Register-Request, Enumerated, code 1648, section 7.3.162 */ + { + struct dict_avp_data data = { + 1648, /* Code */ + 10415, /* Vendor */ + "SMS-Register-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SMS-Register-Request)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Local-Time-Zone, Grouped, code 1649, section 7.3.156 */ + { + struct dict_avp_data data = { + 1649, /* Code */ + 10415, /* Vendor */ + "Local-Time-Zone", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Daylight-Saving-Time, Enumerated, code 1650, section 7.3.164 */ + { + struct dict_avp_data data = { + 1650, /* Code */ + 10415, /* Vendor */ + "Daylight-Saving-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Daylight-Saving-Time)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Subscription-Data-Flags, Unsigned32, code 1654, section 7.3.165 */ + { + struct dict_avp_data data = { + 1654, /* Code */ + 10415, /* Vendor */ + "Subscription-Data-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.272 V12.9.0 (2015-12) changed AVP code of */ + /* Measurement-Period-LTE (1655) from 1656. */ + /* */ + /* Change-1.4.0: Measurement-Period-LTE (1656) code changed to Measurement-Period-LTE (1655). */ + /* Measurement-Period-LTE, Enumerated, code 1655, section 7.3.166 */ + { + struct dict_avp_data data = { + 1655, /* Code */ + 10415, /* Vendor */ + "Measurement-Period-LTE", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Measurement-Period-LTE)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Note: 3GPP TS 29.272 V12.9.0 (2015-12) changed AVP code of */ + /* Measurement-Period-UMTS (1656) from 1655. */ + /* */ + /* Change-1.4.0: Measurement-Period-UMTS (1655) code changed to Measurement-Period-UMTS (1656). */ + /* Measurement-Period-UMTS, Enumerated, code 1656, section 7.3.167 */ + { + struct dict_avp_data data = { + 1656, /* Code */ + 10415, /* Vendor */ + "Measurement-Period-UMTS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Measurement-Period-UMTS)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Collection-Period-RRM-LTE, Enumerated, code 1657, section 7.3.168 */ + { + struct dict_avp_data data = { + 1657, /* Code */ + 10415, /* Vendor */ + "Collection-Period-RRM-LTE", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Collection-Period-RRM-LTE)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Collection-Period-RRM-UMTS, Enumerated, code 1658, section 7.3.169 */ + { + struct dict_avp_data data = { + 1658, /* Code */ + 10415, /* Vendor */ + "Collection-Period-RRM-UMTS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Collection-Period-RRM-UMTS)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Positioning-Method, OctetString, code 1659, section 7.3.170 */ + { + struct dict_avp_data data = { + 1659, /* Code */ + 10415, /* Vendor */ + "Positioning-Method", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Measurement-Quantity, OctetString, code 1660, section 7.3.171 */ + { + struct dict_avp_data data = { + 1660, /* Code */ + 10415, /* Vendor */ + "Measurement-Quantity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Threshold-Event-1F, Integer32, code 1661, section 7.3.172 */ + { + struct dict_avp_data data = { + 1661, /* Code */ + 10415, /* Vendor */ + "Event-Threshold-Event-1F", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Event-Threshold-Event-1I, Integer32, code 1662, section 7.3.173 */ + { + struct dict_avp_data data = { + 1662, /* Code */ + 10415, /* Vendor */ + "Event-Threshold-Event-1I", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Restoration-Priority, Unsigned32, code 1663, section 7.3.174 */ + { + struct dict_avp_data data = { + 1663, /* Code */ + 10415, /* Vendor */ + "Restoration-Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SGs-MME-Identity, UTF8String, code 1664, section 7.3.175 */ + { + struct dict_avp_data data = { + 1664, /* Code */ + 10415, /* Vendor */ + "SGs-MME-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SIPTO-Local-Network-Permission, Unsigned32, code 1665, section 7.3.176 */ + { + struct dict_avp_data data = { + 1665, /* Code */ + 10415, /* Vendor */ + "SIPTO-Local-Network-Permission", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Coupled-Node-Diameter-ID, DiameterIdentity, code 1666, section 7.3.177 */ + { + struct dict_avp_data data = { + 1666, /* Code */ + 10415, /* Vendor */ + "Coupled-Node-Diameter-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* WLAN-offloadability, Grouped, code 1667, section 7.3.181 */ + { + struct dict_avp_data data = { + 1667, /* Code */ + 10415, /* Vendor */ + "WLAN-offloadability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-offloadability-EUTRAN, Unsigned32, code 1668, section 7.3.182 */ + { + struct dict_avp_data data = { + 1668, /* Code */ + 10415, /* Vendor */ + "WLAN-offloadability-EUTRAN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-offloadability-UTRAN, Unsigned32, code 1669, section 7.3.183 */ + { + struct dict_avp_data data = { + 1669, /* Code */ + 10415, /* Vendor */ + "WLAN-offloadability-UTRAN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reset-ID, OctetString, code 1670, section 7.3.184 */ + { + struct dict_avp_data data = { + 1670, /* Code */ + 10415, /* Vendor */ + "Reset-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MDT-Allowed-PLMN-Id, OctetString, code 1671, section 7.3.185 */ + { + struct dict_avp_data data = { + 1671, /* Code */ + 10415, /* Vendor */ + "MDT-Allowed-PLMN-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Adjacent-PLMNs, Grouped, code 1672, section 7.3.186 */ + { + struct dict_avp_data data = { + 1672, /* Code */ + 10415, /* Vendor */ + "Adjacent-PLMNs", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Adjacent-Access-Restriction-Data, Grouped, code 1673, section 7.3.187 */ + { + struct dict_avp_data data = { + 1673, /* Code */ + 10415, /* Vendor */ + "Adjacent-Access-Restriction-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DL-Buffering-Suggested-Packet-Count, Integer32, code 1674, section 7.3.188 */ + { + struct dict_avp_data data = { + 1674, /* Code */ + 10415, /* Vendor */ + "DL-Buffering-Suggested-Packet-Count", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IMSI-Group-Id, Grouped, code 1675, section 7.3.189 */ + { + struct dict_avp_data data = { + 1675, /* Code */ + 10415, /* Vendor */ + "IMSI-Group-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Group-Service-Id, Unsigned32, code 1676, section 7.3.190 */ + { + struct dict_avp_data data = { + 1676, /* Code */ + 10415, /* Vendor */ + "Group-Service-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Group-PLMN-Id, OctetString, code 1677, section 7.3.191 */ + { + struct dict_avp_data data = { + 1677, /* Code */ + 10415, /* Vendor */ + "Group-PLMN-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Local-Group-Id, OctetString, code 1678, section 7.3.192 */ + { + struct dict_avp_data data = { + 1678, /* Code */ + 10415, /* Vendor */ + "Local-Group-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AIR-Flags, Unsigned32, code 1679, section 7.3.201 */ + { + struct dict_avp_data data = { + 1679, /* Code */ + 10415, /* Vendor */ + "AIR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UE-Usage-Type, Unsigned32, code 1680, section 7.3.202 */ + { + struct dict_avp_data data = { + 1680, /* Code */ + 10415, /* Vendor */ + "UE-Usage-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Non-IP-PDN-Type-Indicator, Enumerated, code 1681, section 7.3.204 */ + { + struct dict_avp_data data = { + 1681, /* Code */ + 10415, /* Vendor */ + "Non-IP-PDN-Type-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Non-IP-PDN-Type-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Non-IP-Data-Delivery-Mechanism, Unsigned32, code 1682, section 7.3.205 */ + { + struct dict_avp_data data = { + 1682, /* Code */ + 10415, /* Vendor */ + "Non-IP-Data-Delivery-Mechanism", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.272 Table 7.3.1/1 row Additional-Context-ID (1683) has */ + /* incorrect name and should be "Additional-Context-Identifier" per clause 7.3.206. */ + /* */ + /* Fix: Additional-Context-ID (1683) renamed to Additional-Context-Identifier (1683). */ + /* Additional-Context-Identifier, Unsigned32, code 1683, section 7.3.206 */ + { + struct dict_avp_data data = { + 1683, /* Code */ + 10415, /* Vendor */ + "Additional-Context-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SCEF-Realm, DiameterIdentity, code 1684, section 7.3.207 */ + { + struct dict_avp_data data = { + 1684, /* Code */ + 10415, /* Vendor */ + "SCEF-Realm", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* Subscription-Data-Deletion, Grouped, code 1685, section 7.3.208 */ + { + struct dict_avp_data data = { + 1685, /* Code */ + 10415, /* Vendor */ + "Subscription-Data-Deletion", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.272 Table 7.3.1/1 row Preferred-Data-Mode (1686) */ + /* incorrectly has value type Grouped instead of Unsigned32, */ + /* conflicting with clause 7.3.209. */ + /* */ + /* Fix: Preferred-Data-Mode (1686) type changed from Grouped to Unsigned32. */ + /* Preferred-Data-Mode, Unsigned32, code 1686, section 7.3.209 */ + { + struct dict_avp_data data = { + 1686, /* Code */ + 10415, /* Vendor */ + "Preferred-Data-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Emergency-Info, Grouped, code 1687, section 7.3.210 */ + { + struct dict_avp_data data = { + 1687, /* Code */ + 10415, /* Vendor */ + "Emergency-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* V2X-Subscription-Data, Grouped, code 1688, section 7.3.212 */ + { + struct dict_avp_data data = { + 1688, /* Code */ + 10415, /* Vendor */ + "V2X-Subscription-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* V2X-Permission, Unsigned32, code 1689, section 7.3.213 */ + { + struct dict_avp_data data = { + 1689, /* Code */ + 10415, /* Vendor */ + "V2X-Permission", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PDN-Connection-Continuity, Unsigned32, code 1690, section 7.3.214 */ + { + struct dict_avp_data data = { + 1690, /* Code */ + 10415, /* Vendor */ + "PDN-Connection-Continuity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* eDRX-Cycle-Length, Grouped, code 1691, section 7.3.215 */ + { + struct dict_avp_data data = { + 1691, /* Code */ + 10415, /* Vendor */ + "eDRX-Cycle-Length", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* eDRX-Cycle-Length-Value, OctetString, code 1692, section 7.3.216 */ + { + struct dict_avp_data data = { + 1692, /* Code */ + 10415, /* Vendor */ + "eDRX-Cycle-Length-Value", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UE-PC5-AMBR, Unsigned32, code 1693, section 7.3.217 */ + { + struct dict_avp_data data = { + 1693, /* Code */ + 10415, /* Vendor */ + "UE-PC5-AMBR", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBSFN-Area, Grouped, code 1694, section 7.3.219 */ + { + struct dict_avp_data data = { + 1694, /* Code */ + 10415, /* Vendor */ + "MBSFN-Area", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBSFN-Area-ID, Unsigned32, code 1695, section 7.3.220 */ + { + struct dict_avp_data data = { + 1695, /* Code */ + 10415, /* Vendor */ + "MBSFN-Area-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Carrier-Frequency, Unsigned32, code 1696, section 7.3.221 */ + { + struct dict_avp_data data = { + 1696, /* Code */ + 10415, /* Vendor */ + "Carrier-Frequency", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RDS-Indicator, Enumerated, code 1697, section 7.3.222 */ + { + struct dict_avp_data data = { + 1697, /* Code */ + 10415, /* Vendor */ + "RDS-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/RDS-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Service-Gap-Time, Unsigned32, code 1698, section 7.3.223 */ + { + struct dict_avp_data data = { + 1698, /* Code */ + 10415, /* Vendor */ + "Service-Gap-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Aerial-UE-Subscription-Information, Unsigned32, code 1699, section 7.3.224 */ + { + struct dict_avp_data data = { + 1699, /* Code */ + 10415, /* Vendor */ + "Aerial-UE-Subscription-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Broadcast-Location-Assistance-Data-Types, Unsigned64, code 1700, section 7.3.225 */ + { + struct dict_avp_data data = { + 1700, /* Code */ + 10415, /* Vendor */ + "Broadcast-Location-Assistance-Data-Types", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Paging-Time-Window, Grouped, code 1701, section 7.3.226 */ + { + struct dict_avp_data data = { + 1701, /* Code */ + 10415, /* Vendor */ + "Paging-Time-Window", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Operation-Mode, Unsigned32, code 1702, section 7.3.227 */ + { + struct dict_avp_data data = { + 1702, /* Code */ + 10415, /* Vendor */ + "Operation-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Paging-Time-Window-Length, OctetString, code 1703, section 7.3.228 */ + { + struct dict_avp_data data = { + 1703, /* Code */ + 10415, /* Vendor */ + "Paging-Time-Window-Length", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Core-Network-Restrictions, Unsigned32, code 1704, section 7.3.230 */ + { + struct dict_avp_data data = { + 1704, /* Code */ + 10415, /* Vendor */ + "Core-Network-Restrictions", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* eDRX-Related-RAT, Grouped, code 1705, section 7.3.229 */ + { + struct dict_avp_data data = { + 1705, /* Code */ + 10415, /* Vendor */ + "eDRX-Related-RAT", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Interworking-5GS-Indicator, Enumerated, code 1706, section 7.3.231 */ + { + struct dict_avp_data data = { + 1706, /* Code */ + 10415, /* Vendor */ + "Interworking-5GS-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Interworking-5GS-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.273 V15.4.0 (2019-09) */ + /* Evolved Packet System (EPS); */ + /* 3GPP EPS AAA interfaces */ + /* */ + /* From 3GPP 29273-f40.docx */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.273 Table 5.2.3.1/1: Diameter STa AVPs */ + /* */ + /* Note: AVPs referenced from other sources are not added here. */ + /*==================================================================*/ + + /* ANID, UTF8String, code 1504, section 5.2.3.7 */ + { + struct dict_avp_data data = { + 1504, /* Code */ + 10415, /* Vendor */ + "ANID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* AN-Trusted, Enumerated, code 1503, section 5.2.3.9 */ + { + struct dict_avp_data data = { + 1503, /* Code */ + 10415, /* Vendor */ + "AN-Trusted", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AN-Trusted)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MIP-FA-RK, OctetString, code 1506, section 5.2.3.12 */ + { + struct dict_avp_data data = { + 1506, /* Code */ + 10415, /* Vendor */ + "MIP-FA-RK", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MIP-FA-RK-SPI, Unsigned32, code 1507, section 5.2.3.13 */ + { + struct dict_avp_data data = { + 1507, /* Code */ + 10415, /* Vendor */ + "MIP-FA-RK-SPI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Full-Network-Name, OctetString, code 1516, section 5.2.3.14 */ + { + struct dict_avp_data data = { + 1516, /* Code */ + 10415, /* Vendor */ + "Full-Network-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Short-Network-Name, OctetString, code 1517, section 5.2.3.15 */ + { + struct dict_avp_data data = { + 1517, /* Code */ + 10415, /* Vendor */ + "Short-Network-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-Identifier, Grouped, code 1509, section 5.2.3.18 */ + { + struct dict_avp_data data = { + 1509, /* Code */ + 10415, /* Vendor */ + "WLAN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AAA-Failure-Indication, Unsigned32, code 1518, section 8.2.3.21 */ + { + struct dict_avp_data data = { + 1518, /* Code */ + 10415, /* Vendor */ + "AAA-Failure-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Transport-Access-Type, Enumerated, code 1519, section 5.2.3.19 */ + { + struct dict_avp_data data = { + 1519, /* Code */ + 10415, /* Vendor */ + "Transport-Access-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Transport-Access-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* DER-Flags, Unsigned32, code 1520, section 5.2.3.20 */ + { + struct dict_avp_data data = { + 1520, /* Code */ + 10415, /* Vendor */ + "DER-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DEA-Flags, Unsigned32, code 1521, section 5.2.3.21 */ + { + struct dict_avp_data data = { + 1521, /* Code */ + 10415, /* Vendor */ + "DEA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SSID, UTF8String, code 1524, section 5.2.3.22 */ + { + struct dict_avp_data data = { + 1524, /* Code */ + 10415, /* Vendor */ + "SSID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* HESSID, UTF8String, code 1525, section 5.2.3.23 */ + { + struct dict_avp_data data = { + 1525, /* Code */ + 10415, /* Vendor */ + "HESSID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Access-Network-Info, Grouped, code 1526, section 5.2.3.24 */ + { + struct dict_avp_data data = { + 1526, /* Code */ + 10415, /* Vendor */ + "Access-Network-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TWAN-Connection-Mode, Unsigned32, code 1527, section 5.2.3.25 */ + { + struct dict_avp_data data = { + 1527, /* Code */ + 10415, /* Vendor */ + "TWAN-Connection-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TWAN-Connectivity-Parameters, Grouped, code 1528, section 5.2.3.26 */ + { + struct dict_avp_data data = { + 1528, /* Code */ + 10415, /* Vendor */ + "TWAN-Connectivity-Parameters", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Connectivity-Flags, Unsigned32, code 1529, section 5.2.3.27 */ + { + struct dict_avp_data data = { + 1529, /* Code */ + 10415, /* Vendor */ + "Connectivity-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TWAN-PCO, OctetString, code 1530, section 5.2.3.28 */ + { + struct dict_avp_data data = { + 1530, /* Code */ + 10415, /* Vendor */ + "TWAN-PCO", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TWAG-CP-Address, Address, code 1531, section 5.2.3.29 */ + { + struct dict_avp_data data = { + 1531, /* Code */ + 10415, /* Vendor */ + "TWAG-CP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* TWAG-UP-Address, UTF8String, code 1532, section 5.2.3.30 */ + { + struct dict_avp_data data = { + 1532, /* Code */ + 10415, /* Vendor */ + "TWAG-UP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* TWAN-S2a-Failure-Cause, Unsigned32, code 1533, section 5.2.3.31 */ + { + struct dict_avp_data data = { + 1533, /* Code */ + 10415, /* Vendor */ + "TWAN-S2a-Failure-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Back-Off-Timer, Unsigned32, code 1534, section 5.2.3.32 */ + { + struct dict_avp_data data = { + 1534, /* Code */ + 10415, /* Vendor */ + "SM-Back-Off-Timer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLCP-Key, OctetString, code 1535, section 5.2.3.33 */ + { + struct dict_avp_data data = { + 1535, /* Code */ + 10415, /* Vendor */ + "WLCP-Key", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Emergency-Services, Unsigned32, code 1538, section 7.2.3.4 */ + { + struct dict_avp_data data = { + 1538, /* Code */ + 10415, /* Vendor */ + "Emergency-Services", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IMEI-Check-In-VPLMN-Result, Unsigned32, code 1540, section 5.2.3.35 */ + { + struct dict_avp_data data = { + 1540, /* Code */ + 10415, /* Vendor */ + "IMEI-Check-In-VPLMN-Result", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + + /*==================================================================*/ + /* 3GPP TS 29.273 Table 6.2.3.1/1: Diameter SWd AVPs */ + /* */ + /* Note: No AVPs are first defined in this table. */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.273 Table 7.2.3.1/1: Diameter SWm AVPs */ + /* */ + /* Note: AVPs referenced from other sources are not added here. */ + /*==================================================================*/ + + /* Trace-Info, Grouped, code 1505, section 8.2.3.1.3 */ + { + struct dict_avp_data data = { + 1505, /* Code */ + 10415, /* Vendor */ + "Trace-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AAR-Flags, Unsigned32, code 1539, section 7.2.3.5 */ + { + struct dict_avp_data data = { + 1539, /* Code */ + 10415, /* Vendor */ + "AAR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + + /*==================================================================*/ + /* 3GPP TS 29.273 Table 8.2.3.0/1: Diameter SWx AVPs */ + /* */ + /* Note: AVPs referenced from other sources are not added here. */ + /*==================================================================*/ + + /* Non-3GPP-User-Data, Grouped, code 1500, section 8.2.3.1 */ + { + struct dict_avp_data data = { + 1500, /* Code */ + 10415, /* Vendor */ + "Non-3GPP-User-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Non-3GPP-IP-Access, Enumerated, code 1501, section 8.2.3.3 */ + { + struct dict_avp_data data = { + 1501, /* Code */ + 10415, /* Vendor */ + "Non-3GPP-IP-Access", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Non-3GPP-IP-Access)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Non-3GPP-IP-Access-APN, Enumerated, code 1502, section 8.2.3.4 */ + { + struct dict_avp_data data = { + 1502, /* Code */ + 10415, /* Vendor */ + "Non-3GPP-IP-Access-APN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Non-3GPP-IP-Access-APN)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PPR-Flags, Unsigned32, code 1508, section 8.2.3.17 */ + { + struct dict_avp_data data = { + 1508, /* Code */ + 10415, /* Vendor */ + "PPR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TWAN-Default-APN-Context-Id, Unsigned32, code 1512, section 8.2.3.18 */ + { + struct dict_avp_data data = { + 1512, /* Code */ + 10415, /* Vendor */ + "TWAN-Default-APN-Context-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TWAN-Access-Info, Grouped, code 1510, section 8.2.3.19 */ + { + struct dict_avp_data data = { + 1510, /* Code */ + 10415, /* Vendor */ + "TWAN-Access-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Authorization-Flags, Unsigned32, code 1511, section 8.2.3.20 */ + { + struct dict_avp_data data = { + 1511, /* Code */ + 10415, /* Vendor */ + "Access-Authorization-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-AAA-Server-Name, DiameterIdentity, code 318, section 8.2.3.24 */ + { + struct dict_avp_data data = { + 318, /* Code */ + 10415, /* Vendor */ + "3GPP-AAA-Server-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* ERP-Authorization, Unsigned32, code 1541, section 8.2.3.27 */ + { + struct dict_avp_data data = { + 1541, /* Code */ + 10415, /* Vendor */ + "ERP-Authorization", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + + /*==================================================================*/ + /* 3GPP TS 29.273 Table 9.2.3.1.1/1: Diameter S6b AVPs for DSMIPv6 */ + /* */ + /* Note: AVPs referenced from other sources are not added here. */ + /*==================================================================*/ + + /* RAR-Flags, Unsigned32, code 1522, section 9.2.3.1.5 */ + { + struct dict_avp_data data = { + 1522, /* Code */ + 10415, /* Vendor */ + "RAR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: Trust-Relationship-Update (1515) Enumerated removed in 3GPP TS 29.273 V11.4.0 (2012-12). */ + + /* DER-S6b-Flags, Unsigned32, code 1523, section 9.2.3.7 */ + { + struct dict_avp_data data = { + 1523, /* Code */ + 10415, /* Vendor */ + "DER-S6b-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + + /*==================================================================*/ + /* 3GPP TS 29.273 Table 9.2.3.2.1/1: Diameter S6b AVPs for PMIPv6 or GTPv2 */ + /* */ + /* Note: AVPs referenced from other sources are not added here. */ + /*==================================================================*/ + + /* Origination-Time-Stamp, Unsigned64, code 1536, section 9.2.3.2.6 */ + { + struct dict_avp_data data = { + 1536, /* Code */ + 10415, /* Vendor */ + "Origination-Time-Stamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Maximum-Wait-Time, Unsigned32, code 1537, section 9.2.3.2.7 */ + { + struct dict_avp_data data = { + 1537, /* Code */ + 10415, /* Vendor */ + "Maximum-Wait-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + + /*==================================================================*/ + /* 3GPP TS 29.273 Table 9.2.3.6.1/1: Diameter S6b AVPs for MIPv4 FACoA */ + /* */ + /* Note: No AVPs are first defined in this table. */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.283 V15.1.0 (2019-09) */ + /* Diameter Data Management Applications */ + /* */ + /* From 3GPP 29283-f10.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.283 Table 7.3.1-1: MCPTT-2, MCVideo-2, MCData-2 and CSC-13 specific Diameter AVPs */ + /*==================================================================*/ + + /* MCPTT-ID, UTF8String, code 4500, section 7.3.2 */ + { + struct dict_avp_data data = { + 4500, /* Code */ + 10415, /* Vendor */ + "MCPTT-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Data-Identification, Grouped, code 4501, section 7.3.3 */ + { + struct dict_avp_data data = { + 4501, /* Code */ + 10415, /* Vendor */ + "Data-Identification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Data-Identification-Prefix, Unsigned32, code 4502, section 7.3.11 */ + { + struct dict_avp_data data = { + 4502, /* Code */ + 10415, /* Vendor */ + "Data-Identification-Prefix", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Data-Identification-Flags, Unsigned64, code 4503, section 7.3.12 */ + { + struct dict_avp_data data = { + 4503, /* Code */ + 10415, /* Vendor */ + "Data-Identification-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DPR-Flags, Unsigned32, code 4504, section 7.3.13 */ + { + struct dict_avp_data data = { + 4504, /* Code */ + 10415, /* Vendor */ + "DPR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DPA-Flags, Unsigned32, code 4505, section 7.3.14 */ + { + struct dict_avp_data data = { + 4505, /* Code */ + 10415, /* Vendor */ + "DPA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DUR-Flags, Unsigned32, code 4506, section 7.3.15 */ + { + struct dict_avp_data data = { + 4506, /* Code */ + 10415, /* Vendor */ + "DUR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DUA-Flags, Unsigned32, code 4507, section 7.3.16 */ + { + struct dict_avp_data data = { + 4507, /* Code */ + 10415, /* Vendor */ + "DUA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NDR-Flags, Unsigned32, code 4508, section 7.3.17 */ + { + struct dict_avp_data data = { + 4508, /* Code */ + 10415, /* Vendor */ + "NDR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NDA-Flags, Unsigned32, code 4509, section 7.3.18 */ + { + struct dict_avp_data data = { + 4509, /* Code */ + 10415, /* Vendor */ + "NDA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* User-Data-Id, Unsigned32, code 4510, section 7.3.19 */ + { + struct dict_avp_data data = { + 4510, /* Code */ + 10415, /* Vendor */ + "User-Data-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MC-Service-User-Profile-Data, Grouped, code 4511, section 7.3.20 */ + { + struct dict_avp_data data = { + 4511, /* Code */ + 10415, /* Vendor */ + "MC-Service-User-Profile-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.140 Sequence-Number (1107). */ + /* and 3GPP TS 29.329 Sequence-Number (716). */ + /* 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107). */ + /* 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716). */ + /* 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512). */ + /* */ + /* Fix: Sequence-Number (4512) renamed to Sequence-Number-29.283 (4512). */ + /* Sequence-Number-29.283, Unsigned32, code 4512, section 7.3.21 */ + { + struct dict_avp_data data = { + 4512, /* Code */ + 10415, /* Vendor */ + "Sequence-Number-29.283", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Data, Grouped, code 4513, section 7.3.22 */ + { + struct dict_avp_data data = { + 4513, /* Code */ + 10415, /* Vendor */ + "Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MCVideo-ID, UTF8String, code 4514, section 7.3.24 */ + { + struct dict_avp_data data = { + 4514, /* Code */ + 10415, /* Vendor */ + "MCVideo-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* MCData-ID, UTF8String, code 4515, section 7.3.25 */ + { + struct dict_avp_data data = { + 4515, /* Code */ + 10415, /* Vendor */ + "MCData-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.329 V15.2.0 (2019-09) */ + /* Sh Interface based on the Diameter protocol; */ + /* Protocol details */ + /* */ + /* From 3GPP 29329-f20.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.329 Table 6.3.1: Table 6.3.1: Diameter Multimedia Application AVPs */ + /* */ + /* Note: AVPs referenced from other sources are not added here. */ + /*==================================================================*/ + + /* User-Identity, Grouped, code 700, section 6.3.1 */ + { + struct dict_avp_data data = { + 700, /* Code */ + 10415, /* Vendor */ + "User-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MSISDN, OctetString, code 701, section 6.3.2 */ + { + struct dict_avp_data data = { + 701, /* Code */ + 10415, /* Vendor */ + "MSISDN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.229 User-Data (606). */ + /* 3GPP TS 29.229 V6.2.0 (2004-09) allocated User-Data (606). */ + /* 3GPP TS 29.329 V6.2.0 (2004-09) allocated User-Data (702). */ + /* */ + /* Fix: User-Data (702) renamed to User-Data-29.329 (702). */ + /* User-Data-29.329, OctetString, code 702, section 6.3.3 */ + { + struct dict_avp_data data = { + 702, /* Code */ + 10415, /* Vendor */ + "User-Data-29.329", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Data-Reference, Enumerated, code 703, section 6.3.4 */ + { + struct dict_avp_data data = { + 703, /* Code */ + 10415, /* Vendor */ + "Data-Reference", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Data-Reference)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Service-Indication, OctetString, code 704, section 6.3.5 */ + { + struct dict_avp_data data = { + 704, /* Code */ + 10415, /* Vendor */ + "Service-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Subs-Req-Type, Enumerated, code 705, section 6.3.6 */ + { + struct dict_avp_data data = { + 705, /* Code */ + 10415, /* Vendor */ + "Subs-Req-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subs-Req-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Requested-Domain, Enumerated, code 706, section 6.3.7 */ + { + struct dict_avp_data data = { + 706, /* Code */ + 10415, /* Vendor */ + "Requested-Domain", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Requested-Domain)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Current-Location, Enumerated, code 707, section 6.3.8 */ + { + struct dict_avp_data data = { + 707, /* Code */ + 10415, /* Vendor */ + "Current-Location", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Current-Location)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Identity-Set, Enumerated, code 708, section 6.3.10 */ + { + struct dict_avp_data data = { + 708, /* Code */ + 10415, /* Vendor */ + "Identity-Set", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Identity-Set)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Expiry-Time, Time, code 709, section 6.3.16 */ + { + struct dict_avp_data data = { + 709, /* Code */ + 10415, /* Vendor */ + "Expiry-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Send-Data-Indication, Enumerated, code 710, section 6.3.17 */ + { + struct dict_avp_data data = { + 710, /* Code */ + 10415, /* Vendor */ + "Send-Data-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Send-Data-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* DSAI-Tag, OctetString, code 711, section 6.3.18 */ + { + struct dict_avp_data data = { + 711, /* Code */ + 10415, /* Vendor */ + "DSAI-Tag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* One-Time-Notification, Enumerated, code 712, section 6.3.22 */ + { + struct dict_avp_data data = { + 712, /* Code */ + 10415, /* Vendor */ + "One-Time-Notification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/One-Time-Notification)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Requested-Nodes, Unsigned32, code 713, section 6.3.7A */ + { + struct dict_avp_data data = { + 713, /* Code */ + 10415, /* Vendor */ + "Requested-Nodes", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Serving-Node-Indication, Enumerated, code 714, section 6.3.23 */ + { + struct dict_avp_data data = { + 714, /* Code */ + 10415, /* Vendor */ + "Serving-Node-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Serving-Node-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Repository-Data-ID, Grouped, code 715, section 6.3.24 */ + { + struct dict_avp_data data = { + 715, /* Code */ + 10415, /* Vendor */ + "Repository-Data-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.140 Sequence-Number (1107) */ + /* and 3GPP TS 29.283 Sequence-Number (4512). */ + /* 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107). */ + /* 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716). */ + /* 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512). */ + /* Sequence-Number, Unsigned32, code 716, section 6.3.25 */ + { + struct dict_avp_data data = { + 716, /* Code */ + 10415, /* Vendor */ + "Sequence-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Pre-paging-Supported, Enumerated, code 717, section 6.3.26 */ + { + struct dict_avp_data data = { + 717, /* Code */ + 10415, /* Vendor */ + "Pre-paging-Supported", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pre-paging-Supported)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Local-Time-Zone-Indication, Enumerated, code 718, section 6.3.27 */ + { + struct dict_avp_data data = { + 718, /* Code */ + 10415, /* Vendor */ + "Local-Time-Zone-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Local-Time-Zone-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* UDR-Flags, Unsigned32, code 719, section 6.3.28 */ + { + struct dict_avp_data data = { + 719, /* Code */ + 10415, /* Vendor */ + "UDR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Call-Reference-Info, Grouped, code 720, section 6.3.29 */ + { + struct dict_avp_data data = { + 720, /* Code */ + 10415, /* Vendor */ + "Call-Reference-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Call-Reference-Number, OctetString, code 721, section 6.3.30 */ + { + struct dict_avp_data data = { + 721, /* Code */ + 10415, /* Vendor */ + "Call-Reference-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AS-Number, OctetString, code 722, section 6.3.31 */ + { + struct dict_avp_data data = { + 722, /* Code */ + 10415, /* Vendor */ + "AS-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.336 V15.7.0 (2019-09) */ + /* Home Subscriber Server (HSS) diameter interfaces for */ + /* interworking with packet data networks and applications */ + /* */ + /* From 3GPP 29336-f70.docx */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.336 Table 6.4.1/1: S6m/S6n specific Diameter AVPs */ + /*==================================================================*/ + + /* IP-SM-GW-Number, OctetString, code 3100, section 6.4.14 */ + { + struct dict_avp_data data = { + 3100, /* Code */ + 10415, /* Vendor */ + "IP-SM-GW-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IP-SM-GW-Name, DiameterIdentity, code 3101, section 6.4.15 */ + { + struct dict_avp_data data = { + 3101, /* Code */ + 10415, /* Vendor */ + "IP-SM-GW-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* User-Identifier, Grouped, code 3102, section 6.4.2 */ + { + struct dict_avp_data data = { + 3102, /* Code */ + 10415, /* Vendor */ + "User-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-ID, Enumerated, code 3103, section 6.4.3 */ + { + struct dict_avp_data data = { + 3103, /* Code */ + 10415, /* Vendor */ + "Service-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Service-ID)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SCS-Identity, OctetString, code 3104, section 6.4.4 */ + { + struct dict_avp_data data = { + 3104, /* Code */ + 10415, /* Vendor */ + "SCS-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Parameters, Grouped, code 3105, section 6.4.5 */ + { + struct dict_avp_data data = { + 3105, /* Code */ + 10415, /* Vendor */ + "Service-Parameters", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* T4-Parameters, Grouped, code 3106, section 6.4.6 */ + { + struct dict_avp_data data = { + 3106, /* Code */ + 10415, /* Vendor */ + "T4-Parameters", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Data, Grouped, code 3107, section 6.4.7 */ + { + struct dict_avp_data data = { + 3107, /* Code */ + 10415, /* Vendor */ + "Service-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* T4-Data, Grouped, code 3108, section 6.4.8 */ + { + struct dict_avp_data data = { + 3108, /* Code */ + 10415, /* Vendor */ + "T4-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* HSS-Cause, Unsigned32, code 3109, section 6.4.9 */ + { + struct dict_avp_data data = { + 3109, /* Code */ + 10415, /* Vendor */ + "HSS-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIR-Flags, Unsigned32, code 3110, section 6.4.10 */ + { + struct dict_avp_data data = { + 3110, /* Code */ + 10415, /* Vendor */ + "SIR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.061 External-Identifier (28) OctetString replaced by */ + /* 3GPP TS 29.336 External-Identifier (3111) UTF8String. */ + /* */ + /* Change-1.4.0: External-Identifier (28) OctetString replaced by External-Identifier (3111) UTF8String. */ + /* External-Identifier, UTF8String, code 3111, section 6.4.11 */ + { + struct dict_avp_data data = { + 3111, /* Code */ + 10415, /* Vendor */ + "External-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* IP-SM-GW-Realm, DiameterIdentity, code 3112, section 6.4.18 */ + { + struct dict_avp_data data = { + 3112, /* Code */ + 10415, /* Vendor */ + "IP-SM-GW-Realm", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.336 Table 8.4.1-1: S6t specific Diameter AVPs */ + /*==================================================================*/ + + /* AESE-Communication-Pattern, Grouped, code 3113, section 8.4.25 */ + { + struct dict_avp_data data = { + 3113, /* Code */ + 10415, /* Vendor */ + "AESE-Communication-Pattern", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Communication-Pattern-Set, Grouped, code 3114, section 8.4.26 */ + { + struct dict_avp_data data = { + 3114, /* Code */ + 10415, /* Vendor */ + "Communication-Pattern-Set", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Periodic-Communication-Indicator, Unsigned32, code 3115, section 8.4.27 */ + { + struct dict_avp_data data = { + 3115, /* Code */ + 10415, /* Vendor */ + "Periodic-Communication-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Communication-Duration-Time, Unsigned32, code 3116, section 8.4.28 */ + { + struct dict_avp_data data = { + 3116, /* Code */ + 10415, /* Vendor */ + "Communication-Duration-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.336 Table 8.4.1-1 row Periodic-time (3117) has */ + /* incorrect name and should be "Periodic-Time" per majority use. */ + /* */ + /* Fix: Periodic-time (3117) renamed to Periodic-Time (931). */ + /* Periodic-Time, Unsigned32, code 3117, section 8.4.29 */ + { + struct dict_avp_data data = { + 3117, /* Code */ + 10415, /* Vendor */ + "Periodic-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Scheduled-Communication-Time, Grouped, code 3118, section 8.4.30 */ + { + struct dict_avp_data data = { + 3118, /* Code */ + 10415, /* Vendor */ + "Scheduled-Communication-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Stationary-Indication, Unsigned32, code 3119, section 8.4.31 */ + { + struct dict_avp_data data = { + 3119, /* Code */ + 10415, /* Vendor */ + "Stationary-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AESE-Communication-Pattern-Config-Status, Grouped, code 3120, section 8.4.32 */ + { + struct dict_avp_data data = { + 3120, /* Code */ + 10415, /* Vendor */ + "AESE-Communication-Pattern-Config-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AESE-Error-Report, Grouped, code 3121, section 8.4.33 */ + { + struct dict_avp_data data = { + 3121, /* Code */ + 10415, /* Vendor */ + "AESE-Error-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Event-Configuration, Grouped, code 3122, section 8.4.2 */ + { + struct dict_avp_data data = { + 3122, /* Code */ + 10415, /* Vendor */ + "Monitoring-Event-Configuration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Event-Report, Grouped, code 3123, section 8.4.3 */ + { + struct dict_avp_data data = { + 3123, /* Code */ + 10415, /* Vendor */ + "Monitoring-Event-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SCEF-Reference-ID, Unsigned32, code 3124, section 8.4.4 */ + { + struct dict_avp_data data = { + 3124, /* Code */ + 10415, /* Vendor */ + "SCEF-Reference-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SCEF-ID, DiameterIdentity, code 3125, section 8.4.5 */ + { + struct dict_avp_data data = { + 3125, /* Code */ + 10415, /* Vendor */ + "SCEF-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* SCEF-Reference-ID-for-Deletion, Unsigned32, code 3126, section 8.4.6 */ + { + struct dict_avp_data data = { + 3126, /* Code */ + 10415, /* Vendor */ + "SCEF-Reference-ID-for-Deletion", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Type, Unsigned32, code 3127, section 8.4.7 */ + { + struct dict_avp_data data = { + 3127, /* Code */ + 10415, /* Vendor */ + "Monitoring-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Maximum-Number-of-Reports, Unsigned32, code 3128, section 8.4.8 */ + { + struct dict_avp_data data = { + 3128, /* Code */ + 10415, /* Vendor */ + "Maximum-Number-of-Reports", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UE-Reachability-Configuration, Grouped, code 3129, section 8.4.9 */ + { + struct dict_avp_data data = { + 3129, /* Code */ + 10415, /* Vendor */ + "UE-Reachability-Configuration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Duration, Time, code 3130, section 8.4.10 */ + { + struct dict_avp_data data = { + 3130, /* Code */ + 10415, /* Vendor */ + "Monitoring-Duration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Maximum-Detection-Time, Unsigned32, code 3131, section 8.4.11 */ + { + struct dict_avp_data data = { + 3131, /* Code */ + 10415, /* Vendor */ + "Maximum-Detection-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reachability-Type, Unsigned32, code 3132, section 8.4.12 */ + { + struct dict_avp_data data = { + 3132, /* Code */ + 10415, /* Vendor */ + "Reachability-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Maximum-Latency, Unsigned32, code 3133, section 8.4.13 */ + { + struct dict_avp_data data = { + 3133, /* Code */ + 10415, /* Vendor */ + "Maximum-Latency", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Maximum-Response-Time, Unsigned32, code 3134, section 8.4.14 */ + { + struct dict_avp_data data = { + 3134, /* Code */ + 10415, /* Vendor */ + "Maximum-Response-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Information-Configuration, Grouped, code 3135, section 8.4.15 */ + { + struct dict_avp_data data = { + 3135, /* Code */ + 10415, /* Vendor */ + "Location-Information-Configuration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MONTE-Location-Type, Unsigned32, code 3136, section 8.4.16 */ + { + struct dict_avp_data data = { + 3136, /* Code */ + 10415, /* Vendor */ + "MONTE-Location-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Accuracy, Unsigned32, code 3137, section 8.4.17 */ + { + struct dict_avp_data data = { + 3137, /* Code */ + 10415, /* Vendor */ + "Accuracy", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Association-Type, Unsigned32, code 3138, section 8.4.18 */ + { + struct dict_avp_data data = { + 3138, /* Code */ + 10415, /* Vendor */ + "Association-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Roaming-Information, Unsigned32, code 3139, section 8.4.19 */ + { + struct dict_avp_data data = { + 3139, /* Code */ + 10415, /* Vendor */ + "Roaming-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reachability-Information, Unsigned32, code 3140, section 8.4.20 */ + { + struct dict_avp_data data = { + 3140, /* Code */ + 10415, /* Vendor */ + "Reachability-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IMEI-Change, Unsigned32, code 3141, section 8.4.22 */ + { + struct dict_avp_data data = { + 3141, /* Code */ + 10415, /* Vendor */ + "IMEI-Change", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Event-Config-Status, Grouped, code 3142, section 8.4.24 */ + { + struct dict_avp_data data = { + 3142, /* Code */ + 10415, /* Vendor */ + "Monitoring-Event-Config-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Supported-Services, Grouped, code 3143, section 8.4.40 */ + { + struct dict_avp_data data = { + 3143, /* Code */ + 10415, /* Vendor */ + "Supported-Services", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Supported-Monitoring-Events, Unsigned64, code 3144, section 8.4.41 */ + { + struct dict_avp_data data = { + 3144, /* Code */ + 10415, /* Vendor */ + "Supported-Monitoring-Events", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CIR-Flags, Unsigned32, code 3145, section 8.4.39 */ + { + struct dict_avp_data data = { + 3145, /* Code */ + 10415, /* Vendor */ + "CIR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Result, Grouped, code 3146, section 8.4.37 */ + { + struct dict_avp_data data = { + 3146, /* Code */ + 10415, /* Vendor */ + "Service-Result", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Result-Code, Unsigned32, code 3147, section 8.4.38 */ + { + struct dict_avp_data data = { + 3147, /* Code */ + 10415, /* Vendor */ + "Service-Result-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reference-ID-Validity-Time, Time, code 3148, section 8.4.42 */ + { + struct dict_avp_data data = { + 3148, /* Code */ + 10415, /* Vendor */ + "Reference-ID-Validity-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Event-Handling, Unsigned32, code 3149, section 8.4.43 */ + { + struct dict_avp_data data = { + 3149, /* Code */ + 10415, /* Vendor */ + "Event-Handling", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NIDD-Authorization-Request, Grouped, code 3150, section 8.4.44 */ + { + struct dict_avp_data data = { + 3150, /* Code */ + 10415, /* Vendor */ + "NIDD-Authorization-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NIDD-Authorization-Response, Grouped, code 3151, section 8.4.45 */ + { + struct dict_avp_data data = { + 3151, /* Code */ + 10415, /* Vendor */ + "NIDD-Authorization-Response", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Report, Grouped, code 3152, section 8.4.47 */ + { + struct dict_avp_data data = { + 3152, /* Code */ + 10415, /* Vendor */ + "Service-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Node-Type, Unsigned32, code 3153, section 8.4.48 */ + { + struct dict_avp_data data = { + 3153, /* Code */ + 10415, /* Vendor */ + "Node-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* S6t-HSS-Cause, Unsigned32, code 3154, section 8.4.50 */ + { + struct dict_avp_data data = { + 3154, /* Code */ + 10415, /* Vendor */ + "S6t-HSS-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Enhanced-Coverage-Restriction, Grouped, code 3155, section 8.4.51 */ + { + struct dict_avp_data data = { + 3155, /* Code */ + 10415, /* Vendor */ + "Enhanced-Coverage-Restriction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Enhanced-Coverage-Restriction-Data, Grouped, code 3156, section 8.4.52 */ + { + struct dict_avp_data data = { + 3156, /* Code */ + 10415, /* Vendor */ + "Enhanced-Coverage-Restriction-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Restricted-PLMN-List, Grouped, code 3157, section 8.4.53 */ + { + struct dict_avp_data data = { + 3157, /* Code */ + 10415, /* Vendor */ + "Restricted-PLMN-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Allowed-PLMN-List, Grouped, code 3158, section 8.4.54 */ + { + struct dict_avp_data data = { + 3158, /* Code */ + 10415, /* Vendor */ + "Allowed-PLMN-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Requested-Validity-Time, Time, code 3159, section 8.4.55 */ + { + struct dict_avp_data data = { + 3159, /* Code */ + 10415, /* Vendor */ + "Requested-Validity-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Granted-Validity-Time, Time, code 3160, section 8.4.56 */ + { + struct dict_avp_data data = { + 3160, /* Code */ + 10415, /* Vendor */ + "Granted-Validity-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* NIDD-Authorization-Update, Grouped, code 3161, section 8.4.57 */ + { + struct dict_avp_data data = { + 3161, /* Code */ + 10415, /* Vendor */ + "NIDD-Authorization-Update", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Loss-Of-Connectivity-Reason, Unsigned32, code 3162, section 8.4.58 */ + { + struct dict_avp_data data = { + 3162, /* Code */ + 10415, /* Vendor */ + "Loss-Of-Connectivity-Reason", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Group-Reporting-Guard-Timer, Unsigned32, code 3163, section 8.4.59 */ + { + struct dict_avp_data data = { + 3163, /* Code */ + 10415, /* Vendor */ + "Group-Reporting-Guard-Timer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CIA-Flags, Unsigned32, code 3164, section 8.4.60 */ + { + struct dict_avp_data data = { + 3164, /* Code */ + 10415, /* Vendor */ + "CIA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Group-Monitoring-Event-Report, Grouped, code 3165, section 8.4.61 */ + { + struct dict_avp_data data = { + 3165, /* Code */ + 10415, /* Vendor */ + "Group-Monitoring-Event-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Group-Monitoring-Event-Report-Item, Grouped, code 3166, section 8.4.62 */ + { + struct dict_avp_data data = { + 3166, /* Code */ + 10415, /* Vendor */ + "Group-Monitoring-Event-Report-Item", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RIR-Flags, Unsigned32, code 3167, section 8.4.63 */ + { + struct dict_avp_data data = { + 3167, /* Code */ + 10415, /* Vendor */ + "RIR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Type-Of-External-Identifier, Unsigned32, code 3168, section 8.4.64 */ + { + struct dict_avp_data data = { + 3168, /* Code */ + 10415, /* Vendor */ + "Type-Of-External-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* APN-Validity-Time, Grouped, code 3169, section 8.4.65 */ + { + struct dict_avp_data data = { + 3169, /* Code */ + 10415, /* Vendor */ + "APN-Validity-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Suggested-Network-Configuration, Grouped, code 3170, section 8.4.66 */ + { + struct dict_avp_data data = { + 3170, /* Code */ + 10415, /* Vendor */ + "Suggested-Network-Configuration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Event-Report-Status, Grouped, code 3171, section 8.4.67 */ + { + struct dict_avp_data data = { + 3171, /* Code */ + 10415, /* Vendor */ + "Monitoring-Event-Report-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PLMN-ID-Requested, Enumerated, code 3172, section 8.4.68 */ + { + struct dict_avp_data data = { + 3172, /* Code */ + 10415, /* Vendor */ + "PLMN-ID-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PLMN-ID-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AdditionalIdentifiers, Grouped, code 3173, section 8.4.69 */ + { + struct dict_avp_data data = { + 3173, /* Code */ + 10415, /* Vendor */ + "AdditionalIdentifiers", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NIR-Flags, Unsigned32, code 3174, section 8.4.70 */ + { + struct dict_avp_data data = { + 3174, /* Code */ + 10415, /* Vendor */ + "NIR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reporting-Time-Stamp, Time, code 3175, section 8.4.71 */ + { + struct dict_avp_data data = { + 3175, /* Code */ + 10415, /* Vendor */ + "Reporting-Time-Stamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* NIA-Flags, Unsigned32, code 3176, section 8.4.72 */ + { + struct dict_avp_data data = { + 3176, /* Code */ + 10415, /* Vendor */ + "NIA-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Group-User-Identifier, Grouped, code 3177, section 8.4.73 */ + { + struct dict_avp_data data = { + 3177, /* Code */ + 10415, /* Vendor */ + "Group-User-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MTC-Provider-Info, Grouped, code 3178, section 8.4.74 */ + { + struct dict_avp_data data = { + 3178, /* Code */ + 10415, /* Vendor */ + "MTC-Provider-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MTC-Provider-ID, UTF8String, code 3179, section 8.4.75 */ + { + struct dict_avp_data data = { + 3179, /* Code */ + 10415, /* Vendor */ + "MTC-Provider-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.337 V15.0.0 (2018-06) */ + /* Diameter-based T4 interface for communications with packet */ + /* data networks and applications */ + /* */ + /* From 3GPP 29337-f00.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.337 Table 6.3.1/1: T4 specific Diameter AVPs */ + /*==================================================================*/ + + /* SM-Delivery-Outcome-T4, Enumerated, code 3200, section 6.3.1 */ + { + struct dict_avp_data data = { + 3200, /* Code */ + 10415, /* Vendor */ + "SM-Delivery-Outcome-T4", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Delivery-Outcome-T4)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Absent-Subscriber-Diagnostic-T4, Enumerated, code 3201, section 6.3.2 */ + { + struct dict_avp_data data = { + 3201, /* Code */ + 10415, /* Vendor */ + "Absent-Subscriber-Diagnostic-T4", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Absent-Subscriber-Diagnostic-T4)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Trigger-Action, Unsigned32, code 3202, section 6.3.6 */ + { + struct dict_avp_data data = { + 3202, /* Code */ + 10415, /* Vendor */ + "Trigger-Action", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MTC-Error-Diagnostic, Unsigned32, code 3203, section 6.3.7 */ + { + struct dict_avp_data data = { + 3203, /* Code */ + 10415, /* Vendor */ + "MTC-Error-Diagnostic", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.338 V15.1.0 (2018-12) */ + /* Diameter based protocols to support */ + /* Short Message Service (SMS) capable */ + /* Mobile Management Entities (MMEs) */ + /* */ + /* From 3GPP 29338-f10.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.338 Table 5.3.3.1/1: S6c specific Diameter AVPs */ + /*==================================================================*/ + + /* SM-RP-MTI, Enumerated, code 3308, section 5.3.3.2 */ + { + struct dict_avp_data data = { + 3308, /* Code */ + 10415, /* Vendor */ + "SM-RP-MTI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-RP-MTI)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SM-RP-SMEA, OctetString, code 3309, section 5.3.3.3 */ + { + struct dict_avp_data data = { + 3309, /* Code */ + 10415, /* Vendor */ + "SM-RP-SMEA", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SRR-Flags, Unsigned32, code 3310, section 5.3.3.4 */ + { + struct dict_avp_data data = { + 3310, /* Code */ + 10415, /* Vendor */ + "SRR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Delivery-Not-Intended, Enumerated, code 3311, section 5.3.3.5 */ + { + struct dict_avp_data data = { + 3311, /* Code */ + 10415, /* Vendor */ + "SM-Delivery-Not-Intended", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Delivery-Not-Intended)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MWD-Status, Unsigned32, code 3312, section 5.3.3.8 */ + { + struct dict_avp_data data = { + 3312, /* Code */ + 10415, /* Vendor */ + "MWD-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MME-Absent-User-Diagnostic-SM, Unsigned32, code 3313, section 5.3.3.9 */ + { + struct dict_avp_data data = { + 3313, /* Code */ + 10415, /* Vendor */ + "MME-Absent-User-Diagnostic-SM", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MSC-Absent-User-Diagnostic-SM, Unsigned32, code 3314, section 5.3.3.10 */ + { + struct dict_avp_data data = { + 3314, /* Code */ + 10415, /* Vendor */ + "MSC-Absent-User-Diagnostic-SM", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SGSN-Absent-User-Diagnostic-SM, Unsigned32, code 3315, section 5.3.3.11 */ + { + struct dict_avp_data data = { + 3315, /* Code */ + 10415, /* Vendor */ + "SGSN-Absent-User-Diagnostic-SM", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Delivery-Outcome, Grouped, code 3316, section 5.3.3.14 */ + { + struct dict_avp_data data = { + 3316, /* Code */ + 10415, /* Vendor */ + "SM-Delivery-Outcome", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MME-SM-Delivery-Outcome, Grouped, code 3317, section 5.3.3.15 */ + { + struct dict_avp_data data = { + 3317, /* Code */ + 10415, /* Vendor */ + "MME-SM-Delivery-Outcome", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MSC-SM-Delivery-Outcome, Grouped, code 3318, section 5.3.3.16 */ + { + struct dict_avp_data data = { + 3318, /* Code */ + 10415, /* Vendor */ + "MSC-SM-Delivery-Outcome", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SGSN-SM-Delivery-Outcome, Grouped, code 3319, section 5.3.3.17 */ + { + struct dict_avp_data data = { + 3319, /* Code */ + 10415, /* Vendor */ + "SGSN-SM-Delivery-Outcome", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IP-SM-GW-SM-Delivery-Outcome, Grouped, code 3320, section 5.3.3.18 */ + { + struct dict_avp_data data = { + 3320, /* Code */ + 10415, /* Vendor */ + "IP-SM-GW-SM-Delivery-Outcome", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Delivery-Cause, Enumerated, code 3321, section 5.3.3.19 */ + { + struct dict_avp_data data = { + 3321, /* Code */ + 10415, /* Vendor */ + "SM-Delivery-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Delivery-Cause)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Absent-User-Diagnostic-SM, Unsigned32, code 3322, section 5.3.3.20 */ + { + struct dict_avp_data data = { + 3322, /* Code */ + 10415, /* Vendor */ + "Absent-User-Diagnostic-SM", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RDR-Flags, Unsigned32, code 3323, section 5.3.3.21 */ + { + struct dict_avp_data data = { + 3323, /* Code */ + 10415, /* Vendor */ + "RDR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Maximum-UE-Availability-Time, Time, code 3329, section 5.3.3.22 */ + { + struct dict_avp_data data = { + 3329, /* Code */ + 10415, /* Vendor */ + "Maximum-UE-Availability-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SMS-GMSC-Alert-Event, Unsigned32, code 3333, section 5.3.3.23 */ + { + struct dict_avp_data data = { + 3333, /* Code */ + 10415, /* Vendor */ + "SMS-GMSC-Alert-Event", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.338 Table 6.3.3.1/1: SGd/Gdd specific Diameter AVPs */ + /*==================================================================*/ + + /* SC-Address, OctetString, code 3300, section 6.3.3.2 */ + { + struct dict_avp_data data = { + 3300, /* Code */ + 10415, /* Vendor */ + "SC-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-RP-UI, OctetString, code 3301, section 6.3.3.3 */ + { + struct dict_avp_data data = { + 3301, /* Code */ + 10415, /* Vendor */ + "SM-RP-UI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TFR-Flags, Unsigned32, code 3302, section 6.3.3.4 */ + { + struct dict_avp_data data = { + 3302, /* Code */ + 10415, /* Vendor */ + "TFR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Delivery-Failure-Cause, Grouped, code 3303, section 6.3.3.5 */ + { + struct dict_avp_data data = { + 3303, /* Code */ + 10415, /* Vendor */ + "SM-Delivery-Failure-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Enumerated-Delivery-Failure-Cause, Enumerated, code 3304, section 6.3.3.6 */ + { + struct dict_avp_data data = { + 3304, /* Code */ + 10415, /* Vendor */ + "SM-Enumerated-Delivery-Failure-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Enumerated-Delivery-Failure-Cause)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SM-Diagnostic-Info, OctetString, code 3305, section 6.3.3.7 */ + { + struct dict_avp_data data = { + 3305, /* Code */ + 10415, /* Vendor */ + "SM-Diagnostic-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Delivery-Timer, Unsigned32, code 3306, section 6.3.3.10 */ + { + struct dict_avp_data data = { + 3306, /* Code */ + 10415, /* Vendor */ + "SM-Delivery-Timer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Delivery-Start-Time, Time, code 3307, section 6.3.3.11 */ + { + struct dict_avp_data data = { + 3307, /* Code */ + 10415, /* Vendor */ + "SM-Delivery-Start-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SMSMI-Correlation-ID, Grouped, code 3324, section 6.3.3.13 */ + { + struct dict_avp_data data = { + 3324, /* Code */ + 10415, /* Vendor */ + "SMSMI-Correlation-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.338 Table 6.3.3.1/1 row HSS-ID (3325) */ + /* incorrectly lists type as OctetString instead of UTF8String. */ + /* 3GPP TS 29.338 clause 6.3.3.14 uses UTF8String. */ + /* */ + /* Fix: HSS-ID (3325) type changed from OctetString to UTF8String. */ + /* HSS-ID, UTF8String, code 3325, section 6.3.3.14 */ + { + struct dict_avp_data data = { + 3325, /* Code */ + 10415, /* Vendor */ + "HSS-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Originating-SIP-URI, UTF8String, code 3326, section 6.3.3.15 */ + { + struct dict_avp_data data = { + 3326, /* Code */ + 10415, /* Vendor */ + "Originating-SIP-URI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Destination-SIP-URI, UTF8String, code 3327, section 6.3.3.16 */ + { + struct dict_avp_data data = { + 3327, /* Code */ + 10415, /* Vendor */ + "Destination-SIP-URI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* OFR-Flags, Unsigned32, code 3328, section 6.3.3.12 */ + { + struct dict_avp_data data = { + 3328, /* Code */ + 10415, /* Vendor */ + "OFR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Maximum-Retransmission-Time, Time, code 3330, section 6.3.3.17 */ + { + struct dict_avp_data data = { + 3330, /* Code */ + 10415, /* Vendor */ + "Maximum-Retransmission-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Requested-Retransmission-Time, Time, code 3331, section 6.3.3.18 */ + { + struct dict_avp_data data = { + 3331, /* Code */ + 10415, /* Vendor */ + "Requested-Retransmission-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SMS-GMSC-Address, OctetString, code 3332, section 6.3.3.19 */ + { + struct dict_avp_data data = { + 3332, /* Code */ + 10415, /* Vendor */ + "SMS-GMSC-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.343 V15.1.0 (2019-09) */ + /* Proximity-services (ProSe) function to */ + /* ProSe application server aspects (PC2); */ + /* Stage 3 */ + /* */ + /* From 3GPP 29343-f10.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.343 Table 6.4.1-1: PC2 specific Diameter AVPs */ + /*==================================================================*/ + + /* Origin-App-Layer-User-Id, UTF8String, code 3600, section 6.4.2 */ + { + struct dict_avp_data data = { + 3600, /* Code */ + 10415, /* Vendor */ + "Origin-App-Layer-User-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Target-App-Layer-User-Id, UTF8String, code 3601, section 6.4.3 */ + { + struct dict_avp_data data = { + 3601, /* Code */ + 10415, /* Vendor */ + "Target-App-Layer-User-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* ProSe-Function-ID, OctetString, code 3602, section 6.4.4 */ + { + struct dict_avp_data data = { + 3602, /* Code */ + 10415, /* Vendor */ + "ProSe-Function-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Request-Type, Unsigned32, code 3603, section 6.4.5 */ + { + struct dict_avp_data data = { + 3603, /* Code */ + 10415, /* Vendor */ + "ProSe-Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PDUID, OctetString, code 3604, section 6.4.6 */ + { + struct dict_avp_data data = { + 3604, /* Code */ + 10415, /* Vendor */ + "PDUID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Application-Data, UTF8String, code 3605, section 6.4.7 */ + { + struct dict_avp_data data = { + 3605, /* Code */ + 10415, /* Vendor */ + "Application-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Allowed-Suffixes-Number, Unsigned32, code 3606, section 6.4.8 */ + { + struct dict_avp_data data = { + 3606, /* Code */ + 10415, /* Vendor */ + "Allowed-Suffixes-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitor-Target, Grouped, code 3607, section 6.4.9 */ + { + struct dict_avp_data data = { + 3607, /* Code */ + 10415, /* Vendor */ + "Monitor-Target", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Code-Suffix-Mask, Grouped, code 3608, section 6.4.10 */ + { + struct dict_avp_data data = { + 3608, /* Code */ + 10415, /* Vendor */ + "ProSe-Code-Suffix-Mask", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Suffix-Code, OctetString, code 3609, section 6.4.11 */ + { + struct dict_avp_data data = { + 3609, /* Code */ + 10415, /* Vendor */ + "Suffix-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Suffix-Mask, OctetString, code 3610, section 6.4.12 */ + { + struct dict_avp_data data = { + 3610, /* Code */ + 10415, /* Vendor */ + "Suffix-Mask", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Banned-User-Target, Grouped, code 3611, section 6.4.17 */ + { + struct dict_avp_data data = { + 3611, /* Code */ + 10415, /* Vendor */ + "Banned-User-Target", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Metadata-Indicator, Unsigned32, code 3612, section 6.4.18 */ + { + struct dict_avp_data data = { + 3612, /* Code */ + 10415, /* Vendor */ + "Metadata-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.344 V15.1.0 (2019-09) */ + /* Proximity-services (ProSe) Function to Home Subscriber */ + /* Server (HSS) aspects; */ + /* Stage 3 */ + /* */ + /* From 3GPP 29344-f10.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.344 Table 6.3.1-1: PC4a specific Diameter AVPs */ + /*==================================================================*/ + + /* ProSe-Subscription-Data, Grouped, code 3701, section 6.3.2 */ + { + struct dict_avp_data data = { + 3701, /* Code */ + 10415, /* Vendor */ + "ProSe-Subscription-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Permission, Unsigned32, code 3702, section 6.3.3 */ + { + struct dict_avp_data data = { + 3702, /* Code */ + 10415, /* Vendor */ + "ProSe-Permission", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Allowed-PLMN, Grouped, code 3703, section 6.3.4 */ + { + struct dict_avp_data data = { + 3703, /* Code */ + 10415, /* Vendor */ + "ProSe-Allowed-PLMN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Direct-Allowed, Unsigned32, code 3704, section 6.3.5 */ + { + struct dict_avp_data data = { + 3704, /* Code */ + 10415, /* Vendor */ + "ProSe-Direct-Allowed", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UPR-Flags, Unsigned32, code 3705, section 6.3.6 */ + { + struct dict_avp_data data = { + 3705, /* Code */ + 10415, /* Vendor */ + "UPR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PNR-Flags, Unsigned32, code 3706, section 6.3.7 */ + { + struct dict_avp_data data = { + 3706, /* Code */ + 10415, /* Vendor */ + "PNR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Initial-Location-Information, Grouped, code 3707, section 6.3.9 */ + { + struct dict_avp_data data = { + 3707, /* Code */ + 10415, /* Vendor */ + "ProSe-Initial-Location-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.344 Table 6.3.1-1 missing Authorized-Discovery-Range. */ + /* Present in 3GPP TS 29.344 clause 6.3.13 and 3GPP TS 29.230 Table 7.1. */ + /* */ + /* Fix: Add Authorized-Discovery-Range (3708) Unsigned32. */ + /* Authorized-Discovery-Range, Unsigned32, code 3708, section 6.3.13 */ + { + struct dict_avp_data data = { + 3708, /* Code */ + 10415, /* Vendor */ + "Authorized-Discovery-Range", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.345 V15.1.0 (2019-09) */ + /* Inter-Proximity-services (ProSe) Function signalling aspects; */ + /* Stage 3 */ + /* */ + /* From 3GPP 29345-f10.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.345 Table 6.3.1-1: PC6/PC7 specific Diameter AVPs */ + /*==================================================================*/ + + /* App-Layer-User-Id, UTF8String, code 3801, section 6.3.2 */ + { + struct dict_avp_data data = { + 3801, /* Code */ + 10415, /* Vendor */ + "App-Layer-User-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Note: 3GPP TS 29.345 Table 6.3.1-1 row Assistance-info (3802) has */ + /* incorrect name and should be "Assistance-Info" per clause 6.3.3. */ + /* */ + /* Fix: Assistance-info (3802) renamed to Assistance-Info (3802). */ + /* Assistance-Info, Grouped, code 3802, section 6.3.3 */ + { + struct dict_avp_data data = { + 3802, /* Code */ + 10415, /* Vendor */ + "Assistance-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Assistance-Info-Validity-Timer, Unsigned32, code 3803, section 6.3.4 */ + { + struct dict_avp_data data = { + 3803, /* Code */ + 10415, /* Vendor */ + "Assistance-Info-Validity-Timer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Discovery-Type, Unsigned32, code 3804, section 6.3.5 */ + { + struct dict_avp_data data = { + 3804, /* Code */ + 10415, /* Vendor */ + "Discovery-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Filter-Id, OctetString, code 3805, section 6.3.9 */ + { + struct dict_avp_data data = { + 3805, /* Code */ + 10415, /* Vendor */ + "Filter-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MAC-Address, UTF8String, code 3806, section 6.3.11 */ + { + struct dict_avp_data data = { + 3806, /* Code */ + 10415, /* Vendor */ + "MAC-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Match-Report, Grouped, code 3807, section 6.3.12 */ + { + struct dict_avp_data data = { + 3807, /* Code */ + 10415, /* Vendor */ + "Match-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Operating-Channel, Unsigned32, code 3808, section 6.3.14 */ + { + struct dict_avp_data data = { + 3808, /* Code */ + 10415, /* Vendor */ + "Operating-Channel", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* P2P-Features, Unsigned32, code 3809, section 6.3.15 */ + { + struct dict_avp_data data = { + 3809, /* Code */ + 10415, /* Vendor */ + "P2P-Features", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-App-Code, OctetString, code 3810, section 6.3.16 */ + { + struct dict_avp_data data = { + 3810, /* Code */ + 10415, /* Vendor */ + "ProSe-App-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-App-Id, UTF8String, code 3811, section 6.3.17 */ + { + struct dict_avp_data data = { + 3811, /* Code */ + 10415, /* Vendor */ + "ProSe-App-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* ProSe-App-Mask, OctetString, code 3812, section 6.3.18 */ + { + struct dict_avp_data data = { + 3812, /* Code */ + 10415, /* Vendor */ + "ProSe-App-Mask", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Discovery-Filter, Grouped, code 3813, section 6.3.20 */ + { + struct dict_avp_data data = { + 3813, /* Code */ + 10415, /* Vendor */ + "ProSe-Discovery-Filter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PRR-Flags, Unsigned32, code 3814, section 6.3.21 */ + { + struct dict_avp_data data = { + 3814, /* Code */ + 10415, /* Vendor */ + "PRR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Validity-Timer, Unsigned32, code 3815, section 6.3.22 */ + { + struct dict_avp_data data = { + 3815, /* Code */ + 10415, /* Vendor */ + "ProSe-Validity-Timer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Requesting-EPUID, UTF8String, code 3816, section 6.3.23 */ + { + struct dict_avp_data data = { + 3816, /* Code */ + 10415, /* Vendor */ + "Requesting-EPUID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Targeted-EPUID, UTF8String, code 3817, section 6.3.26 */ + { + struct dict_avp_data data = { + 3817, /* Code */ + 10415, /* Vendor */ + "Targeted-EPUID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.154 Time-Window (4204). */ + /* Time-Window (3818) in 3GPP TS 29.345 V12.1.0 (2014-12) predates */ + /* Time-Window (4204) in 3GPP TS 29.154 V13.1.0 (2016-03). */ + /* Time-Window, Unsigned32, code 3818, section 6.3.27 */ + { + struct dict_avp_data data = { + 3818, /* Code */ + 10415, /* Vendor */ + "Time-Window", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WiFi-P2P-Assistance-Info, Grouped, code 3819, section 6.3.30 */ + { + struct dict_avp_data data = { + 3819, /* Code */ + 10415, /* Vendor */ + "WiFi-P2P-Assistance-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-Assistance-Info, Grouped, code 3820, section 6.3.31 */ + { + struct dict_avp_data data = { + 3820, /* Code */ + 10415, /* Vendor */ + "WLAN-Assistance-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-Link-Layer-Id, OctetString, code 3821, section 6.3.32 */ + { + struct dict_avp_data data = { + 3821, /* Code */ + 10415, /* Vendor */ + "WLAN-Link-Layer-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-Link-Layer-Id-List, Grouped, code 3822, section 6.3.33 */ + { + struct dict_avp_data data = { + 3822, /* Code */ + 10415, /* Vendor */ + "WLAN-Link-Layer-Id-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Update-Trigger, Grouped, code 3823, section 6.3.42 */ + { + struct dict_avp_data data = { + 3823, /* Code */ + 10415, /* Vendor */ + "Location-Update-Trigger", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Update-Event-Type, Unsigned32, code 3824, section 6.3.43 */ + { + struct dict_avp_data data = { + 3824, /* Code */ + 10415, /* Vendor */ + "Location-Update-Event-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Change-Of-Area-Type, Grouped, code 3825, section 6.3.44 */ + { + struct dict_avp_data data = { + 3825, /* Code */ + 10415, /* Vendor */ + "Change-Of-Area-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Update-Event-Trigger, Unsigned32, code 3826, section 6.3.45 */ + { + struct dict_avp_data data = { + 3826, /* Code */ + 10415, /* Vendor */ + "Location-Update-Event-Trigger", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Report-Cardinality, Enumerated, code 3827, section 6.3.46 */ + { + struct dict_avp_data data = { + 3827, /* Code */ + 10415, /* Vendor */ + "Report-Cardinality", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Report-Cardinality)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Minimum-Interval-Time, Unsigned32, code 3828, section 6.3.47 */ + { + struct dict_avp_data data = { + 3828, /* Code */ + 10415, /* Vendor */ + "Minimum-Interval-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Periodic-Location-Type, Grouped, code 3829, section 6.3.48 */ + { + struct dict_avp_data data = { + 3829, /* Code */ + 10415, /* Vendor */ + "Periodic-Location-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Report-Interval-Time, Unsigned32, code 3830, section 6.3.49 */ + { + struct dict_avp_data data = { + 3830, /* Code */ + 10415, /* Vendor */ + "Location-Report-Interval-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Total-Number-Of-Reports, Unsigned32, code 3831, section 6.3.50 */ + { + struct dict_avp_data data = { + 3831, /* Code */ + 10415, /* Vendor */ + "Total-Number-Of-Reports", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Validity-Time-Announce, Unsigned32, code 3832, section 6.3.36 */ + { + struct dict_avp_data data = { + 3832, /* Code */ + 10415, /* Vendor */ + "Validity-Time-Announce", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Validity-Time-Monitor, Unsigned32, code 3833, section 6.3.37 */ + { + struct dict_avp_data data = { + 3833, /* Code */ + 10415, /* Vendor */ + "Validity-Time-Monitor", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Validity-Time-Communication, Unsigned32, code 3834, section 6.3.38 */ + { + struct dict_avp_data data = { + 3834, /* Code */ + 10415, /* Vendor */ + "Validity-Time-Communication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-App-Code-Info, Grouped, code 3835, section 6.3.39 */ + { + struct dict_avp_data data = { + 3835, /* Code */ + 10415, /* Vendor */ + "ProSe-App-Code-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MIC, OctetString, code 3836, section 6.3.40 */ + { + struct dict_avp_data data = { + 3836, /* Code */ + 10415, /* Vendor */ + "MIC", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* UTC-based-Counter, Unsigned32, code 3837, section 6.3.41 */ + { + struct dict_avp_data data = { + 3837, /* Code */ + 10415, /* Vendor */ + "UTC-based-Counter", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Match-Refresh-Timer, Unsigned32, code 3838, section 6.3.52 */ + { + struct dict_avp_data data = { + 3838, /* Code */ + 10415, /* Vendor */ + "ProSe-Match-Refresh-Timer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Metadata-Index-Mask, OctetString, code 3839, section 6.3.60 */ + { + struct dict_avp_data data = { + 3839, /* Code */ + 10415, /* Vendor */ + "ProSe-Metadata-Index-Mask", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* App-Identifier, Grouped, code 3840, section 6.3.61 */ + { + struct dict_avp_data data = { + 3840, /* Code */ + 10415, /* Vendor */ + "App-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* OS-ID, OctetString, code 3841, section 6.3.62 */ + { + struct dict_avp_data data = { + 3841, /* Code */ + 10415, /* Vendor */ + "OS-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* OS-App-ID, UTF8String, code 3842, section 6.3.63 */ + { + struct dict_avp_data data = { + 3842, /* Code */ + 10415, /* Vendor */ + "OS-App-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Requesting-RPAUID, UTF8String, code 3843, section 6.3.64 */ + { + struct dict_avp_data data = { + 3843, /* Code */ + 10415, /* Vendor */ + "Requesting-RPAUID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Target-RPAUID, UTF8String, code 3844, section 6.3.65 */ + { + struct dict_avp_data data = { + 3844, /* Code */ + 10415, /* Vendor */ + "Target-RPAUID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Target-PDUID, OctetString, code 3845, section 6.3.66 */ + { + struct dict_avp_data data = { + 3845, /* Code */ + 10415, /* Vendor */ + "Target-PDUID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Restricted-Code, OctetString, code 3846, section 6.3.67 */ + { + struct dict_avp_data data = { + 3846, /* Code */ + 10415, /* Vendor */ + "ProSe-Restricted-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Restricted-Code-Suffix-Range, OctetString, code 3847, section 6.3.68 */ + { + struct dict_avp_data data = { + 3847, /* Code */ + 10415, /* Vendor */ + "ProSe-Restricted-Code-Suffix-Range", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Beginning-Suffix, OctetString, code 3848, section 6.3.69 */ + { + struct dict_avp_data data = { + 3848, /* Code */ + 10415, /* Vendor */ + "Beginning-Suffix", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Ending-Suffix, OctetString, code 3849, section 6.3.70 */ + { + struct dict_avp_data data = { + 3849, /* Code */ + 10415, /* Vendor */ + "Ending-Suffix", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Discovery-Entry-ID, Unsigned32, code 3850, section 6.3.59 */ + { + struct dict_avp_data data = { + 3850, /* Code */ + 10415, /* Vendor */ + "Discovery-Entry-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Match-Timestamp, Time, code 3851, section 6.3.71 */ + { + struct dict_avp_data data = { + 3851, /* Code */ + 10415, /* Vendor */ + "Match-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* PMR-Flags, Unsigned32, code 3852, section 6.3.57 */ + { + struct dict_avp_data data = { + 3852, /* Code */ + 10415, /* Vendor */ + "PMR-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Application-Metadata, UTF8String, code 3853, section 6.3.58 */ + { + struct dict_avp_data data = { + 3853, /* Code */ + 10415, /* Vendor */ + "ProSe-Application-Metadata", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Discovery-Auth-Request, Grouped, code 3854, section 6.3.53 */ + { + struct dict_avp_data data = { + 3854, /* Code */ + 10415, /* Vendor */ + "Discovery-Auth-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Discovery-Auth-Response, Grouped, code 3855, section 6.3.54 */ + { + struct dict_avp_data data = { + 3855, /* Code */ + 10415, /* Vendor */ + "Discovery-Auth-Response", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Match-Request, Grouped, code 3856, section 6.3.55 */ + { + struct dict_avp_data data = { + 3856, /* Code */ + 10415, /* Vendor */ + "Match-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Match-Report-Info, Grouped, code 3857, section 6.3.56 */ + { + struct dict_avp_data data = { + 3857, /* Code */ + 10415, /* Vendor */ + "Match-Report-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Banned-RPAUID, UTF8String, code 3858, section 6.3.73 */ + { + struct dict_avp_data data = { + 3858, /* Code */ + 10415, /* Vendor */ + "Banned-RPAUID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Banned-PDUID, OctetString, code 3859, section 6.3.74 */ + { + struct dict_avp_data data = { + 3859, /* Code */ + 10415, /* Vendor */ + "Banned-PDUID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Code-Receiving-Security-Material, Grouped, code 3860, section 6.3.75 */ + { + struct dict_avp_data data = { + 3860, /* Code */ + 10415, /* Vendor */ + "Code-Receiving-Security-Material", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Code-Sending-Security-Material, Grouped, code 3861, section 6.3.76 */ + { + struct dict_avp_data data = { + 3861, /* Code */ + 10415, /* Vendor */ + "Code-Sending-Security-Material", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DUSK, OctetString, code 3862, section 6.3.77 */ + { + struct dict_avp_data data = { + 3862, /* Code */ + 10415, /* Vendor */ + "DUSK", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DUIK, OctetString, code 3863, section 6.3.78 */ + { + struct dict_avp_data data = { + 3863, /* Code */ + 10415, /* Vendor */ + "DUIK", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* DUCK, OctetString, code 3864, section 6.3.79 */ + { + struct dict_avp_data data = { + 3864, /* Code */ + 10415, /* Vendor */ + "DUCK", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 29.345 Table 6.3.1-1 row MIC-Check-indicator (3865) has */ + /* incorrect name and should be "MIC-Check-Indicator" per clause 6.3.80. */ + /* */ + /* Fix: MIC-Check-indicator (3865) renamed to MIC-Check-Indicator (3865). */ + /* MIC-Check-Indicator, Unsigned32, code 3865, section 6.3.80 */ + { + struct dict_avp_data data = { + 3865, /* Code */ + 10415, /* Vendor */ + "MIC-Check-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Encrypted-Bitmask, OctetString, code 3866, section 6.3.81 */ + { + struct dict_avp_data data = { + 3866, /* Code */ + 10415, /* Vendor */ + "Encrypted-Bitmask", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-App-Code-Suffix-Range, OctetString, code 3867, section 6.3.82 */ + { + struct dict_avp_data data = { + 3867, /* Code */ + 10415, /* Vendor */ + "ProSe-App-Code-Suffix-Range", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PC5-tech, OctetString, code 3868, section 6.3.84 */ + { + struct dict_avp_data data = { + 3868, /* Code */ + 10415, /* Vendor */ + "PC5-tech", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.368 V15.1.0 (2019-09) */ + /* Tsp interface protocol between the MTC Interworking Function */ + /* (MTC-IWF) and Service Capability Server (SCS) */ + /* */ + /* From 3GPP 29368-f10.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.368 Table 6.4.1.1: Tsp specific Diameter AVPs */ + /*==================================================================*/ + + /* Device-Action, Grouped, code 3001, section 6. 4.2 */ + { + struct dict_avp_data data = { + 3001, /* Code */ + 10415, /* Vendor */ + "Device-Action", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Device-Notification, Grouped, code 3002, section 6.4.3 */ + { + struct dict_avp_data data = { + 3002, /* Code */ + 10415, /* Vendor */ + "Device-Notification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Trigger-Data, Grouped, code 3003, section 6.4.4 */ + { + struct dict_avp_data data = { + 3003, /* Code */ + 10415, /* Vendor */ + "Trigger-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Payload, OctetString, code 3004, section 6.4.5 */ + { + struct dict_avp_data data = { + 3004, /* Code */ + 10415, /* Vendor */ + "Payload", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Action-Type, Enumerated, code 3005, section 6.4.6 */ + { + struct dict_avp_data data = { + 3005, /* Code */ + 10415, /* Vendor */ + "Action-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Action-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Priority-Indication, Enumerated, code 3006, section 6.4.7 */ + { + struct dict_avp_data data = { + 3006, /* Code */ + 10415, /* Vendor */ + "Priority-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priority-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Reference-Number, Unsigned32, code 3007, section 6.4.8 */ + { + struct dict_avp_data data = { + 3007, /* Code */ + 10415, /* Vendor */ + "Reference-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Request-Status, Enumerated, code 3008, section 6.4.9 */ + { + struct dict_avp_data data = { + 3008, /* Code */ + 10415, /* Vendor */ + "Request-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Request-Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Delivery-Outcome, Enumerated, code 3009, section 6.4.10 */ + { + struct dict_avp_data data = { + 3009, /* Code */ + 10415, /* Vendor */ + "Delivery-Outcome", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Delivery-Outcome)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Application-Port-Identifier, Unsigned32, code 3010, section 6.4.11 */ + { + struct dict_avp_data data = { + 3010, /* Code */ + 10415, /* Vendor */ + "Application-Port-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Old-Reference-Number, Unsigned32, code 3011, section 6.4.12 */ + { + struct dict_avp_data data = { + 3011, /* Code */ + 10415, /* Vendor */ + "Old-Reference-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Feature-Supported-In-Final-Target, Unsigned32, code 3012, section 6.4.13 */ + { + struct dict_avp_data data = { + 3012, /* Code */ + 10415, /* Vendor */ + "Feature-Supported-In-Final-Target", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.388 V15.1.0 (2019-09) */ + /* V2X Control Function to Home Subscriber Server (HSS) */ + /* aspects (V4); */ + /* Stage 3 */ + /* */ + /* From 3GPP 29388-f10.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.388 Table 6.3.1-1: V4 specific Diameter AVPs */ + /*==================================================================*/ + + /* V2X-PC5-Allowed-PLMN, Grouped, code 4600, section 6.3.3 */ + { + struct dict_avp_data data = { + 4600, /* Code */ + 10415, /* Vendor */ + "V2X-PC5-Allowed-PLMN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* V2X-Update-Flags, Unsigned32, code 4601, section 6.3.4 */ + { + struct dict_avp_data data = { + 4601, /* Code */ + 10415, /* Vendor */ + "V2X-Update-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* V2X-Notify-Flags, Unsigned32, code 4602, section 6.3.5 */ + { + struct dict_avp_data data = { + 4602, /* Code */ + 10415, /* Vendor */ + "V2X-Notify-Flags", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.389 V15.1.0 (2019-09) */ + /* Inter-V2X Control Function Signalling aspects (V6); */ + /* Stage 3 */ + /* */ + /* From 3GPP 29389-f10.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.389 Table 6.3.1-1: V6 specific Diameter AVPs */ + /* */ + /* Fix: All AVPs were missing M and V; assume MUST for both. */ + /*==================================================================*/ + + /* V2X-Authorization-Data, Grouped, code 4700, section 6.3.2 */ + { + struct dict_avp_data data = { + 4700, /* Code */ + 10415, /* Vendor */ + "V2X-Authorization-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* V2X-Permission-in-VPLMN, Unsigned32, code 4701, section 6.3.3 */ + { + struct dict_avp_data data = { + 4701, /* Code */ + 10415, /* Vendor */ + "V2X-Permission-in-VPLMN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* V2X-Application-Server, Grouped, code 4702, section 6.3.4 */ + { + struct dict_avp_data data = { + 4702, /* Code */ + 10415, /* Vendor */ + "V2X-Application-Server", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.468 V15.8.0 (2019-12) */ + /* Group Communication System Enablers for LTE (GCSE_LTE); */ + /* MB2 Reference Point; */ + /* Stage 3 */ + /* */ + /* From 3GPP 29468-f80.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 29.468 Table 6.4.1 1: MB2 C specific Diameter AVPs */ + /*==================================================================*/ + + /* BMSC-Address, Address, code 3500, section 6.4.2 */ + { + struct dict_avp_data data = { + 3500, /* Code */ + 10415, /* Vendor */ + "BMSC-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* BMSC-Port, Unsigned32, code 3501, section 6.4.3 */ + { + struct dict_avp_data data = { + 3501, /* Code */ + 10415, /* Vendor */ + "BMSC-Port", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Common-Tunnel-Endpoint-Identifier, OctetString, code 3524, section 6.4.26 */ + { + struct dict_avp_data data = { + 3524, /* Code */ + 10415, /* Vendor */ + "Common-Tunnel-Endpoint-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* FEC-Request, OctetString, code 3525, section 6.4.27 */ + { + struct dict_avp_data data = { + 3525, /* Code */ + 10415, /* Vendor */ + "FEC-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* FEC-Result, Unsigned32, code 3531, section 6.4.33 */ + { + struct dict_avp_data data = { + 3531, /* Code */ + 10415, /* Vendor */ + "FEC-Result", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Local-M1-Information, Grouped, code 3518, section 6.4.20 */ + { + struct dict_avp_data data = { + 3518, /* Code */ + 10415, /* Vendor */ + "Local-M1-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Local-MB2-U-Information, Grouped, code 3519, section 6.4.21 */ + { + struct dict_avp_data data = { + 3519, /* Code */ + 10415, /* Vendor */ + "Local-MB2-U-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MB2U-Security, Unsigned32, code 3517, section 6.4.19 */ + { + struct dict_avp_data data = { + 3517, /* Code */ + 10415, /* Vendor */ + "MB2U-Security", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Bearer-Event, Unsigned32, code 3502, section 6.4.4 */ + { + struct dict_avp_data data = { + 3502, /* Code */ + 10415, /* Vendor */ + "MBMS-Bearer-Event", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Bearer-Event-Notification, Grouped, code 3503, section 6.4.5 */ + { + struct dict_avp_data data = { + 3503, /* Code */ + 10415, /* Vendor */ + "MBMS-Bearer-Event-Notification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Bearer-Request, Grouped, code 3504, section 6.4.6 */ + { + struct dict_avp_data data = { + 3504, /* Code */ + 10415, /* Vendor */ + "MBMS-Bearer-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Bearer-Response, Grouped, code 3505, section 6.4.7 */ + { + struct dict_avp_data data = { + 3505, /* Code */ + 10415, /* Vendor */ + "MBMS-Bearer-Response", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-Bearer-Result, Unsigned32, code 3506, section 6.4.8 */ + { + struct dict_avp_data data = { + 3506, /* Code */ + 10415, /* Vendor */ + "MBMS-Bearer-Result", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-eNB-IP-Multicast-Address, Address, code 3520, section 6.4.22 */ + { + struct dict_avp_data data = { + 3520, /* Code */ + 10415, /* Vendor */ + "MBMS-eNB-IP-Multicast-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* MBMS-eNB-IPv6-Multicast-Address, Address, code 3521, section 6.4.23 */ + { + struct dict_avp_data data = { + 3521, /* Code */ + 10415, /* Vendor */ + "MBMS-eNB-IPv6-Multicast-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IP-Address (924). */ + /* 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IP-Address (924). */ + /* 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IP-Address (3522). */ + /* */ + /* Fix: MBMS-GW-SSM-IP-Address (3522) renamed to MBMS-GW-SSM-IP-Address-29.468 (3522). */ + /* MBMS-GW-SSM-IP-Address-29.468, Address, code 3522, section 6.4.24 */ + { + struct dict_avp_data data = { + 3522, /* Code */ + 10415, /* Vendor */ + "MBMS-GW-SSM-IP-Address-29.468", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IPv6-Address (925). */ + /* 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IPv6-Address (925). */ + /* 3GPP TS 29.061 V12.6.0 (2014-06) renamed */ + /* MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address. */ + /* 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IPv6-Address (3523). */ + /* */ + /* Fix: MBMS-GW-SSM-IPv6-Address (3523) renamed to MBMS-GW-SSM-IPv6-Address-29.468 (3523). */ + /* MBMS-GW-SSM-IPv6-Address-29.468, Address, code 3523, section 6.4.25 */ + { + struct dict_avp_data data = { + 3523, /* Code */ + 10415, /* Vendor */ + "MBMS-GW-SSM-IPv6-Address-29.468", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* MBMS-Start-Time, Time, code 3507, section 6.4.9 */ + { + struct dict_avp_data data = { + 3507, /* Code */ + 10415, /* Vendor */ + "MBMS-Start-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Note: Name conflict with 3GPP TS 32.299 Radio-Frequency (3462). */ + /* 3GPP TS 29.468 V12.0.0 (2014-09) added Radio-Frequency (3508). */ + /* 3GPP TS 32.299 V13.1.0 (2015-06) CR 0638 added Radio-Frequency (3462). */ + /* */ + /* Fix: Radio-Frequency (3508) renamed to Radio-Frequency-29.468 (3508). */ + /* Radio-Frequency-29.468, Unsigned32, code 3508, section 6.4.10 */ + { + struct dict_avp_data data = { + 3508, /* Code */ + 10415, /* Vendor */ + "Radio-Frequency-29.468", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ROHC-Full-Header-Periodicity, Float32, code 3527, section 6.4.29 */ + { + struct dict_avp_data data = { + 3527, /* Code */ + 10415, /* Vendor */ + "ROHC-Full-Header-Periodicity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_FLOAT32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ROHC-Max-CID, Unsigned32, code 3532, section 6.4.34 */ + { + struct dict_avp_data data = { + 3532, /* Code */ + 10415, /* Vendor */ + "ROHC-Max-CID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ROHC-Profile, Unsigned32, code 3528, section 6.4.30 */ + { + struct dict_avp_data data = { + 3528, /* Code */ + 10415, /* Vendor */ + "ROHC-Profile", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ROHC-Request, Grouped, code 3526, section 6.4.28 */ + { + struct dict_avp_data data = { + 3526, /* Code */ + 10415, /* Vendor */ + "ROHC-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ROHC-Result, Unsigned32, code 3530, section 6.4.32 */ + { + struct dict_avp_data data = { + 3530, /* Code */ + 10415, /* Vendor */ + "ROHC-Result", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TMGI-Allocation-Request, Grouped, code 3509, section 6.4.11 */ + { + struct dict_avp_data data = { + 3509, /* Code */ + 10415, /* Vendor */ + "TMGI-Allocation-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TMGI-Allocation-Response, Grouped, code 3510, section 6.4.12 */ + { + struct dict_avp_data data = { + 3510, /* Code */ + 10415, /* Vendor */ + "TMGI-Allocation-Response", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TMGI-Allocation-Result, Unsigned32, code 3511, section 6.4.13 */ + { + struct dict_avp_data data = { + 3511, /* Code */ + 10415, /* Vendor */ + "TMGI-Allocation-Result", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TMGI-Deallocation-Request, Grouped, code 3512, section 6.4.14 */ + { + struct dict_avp_data data = { + 3512, /* Code */ + 10415, /* Vendor */ + "TMGI-Deallocation-Request", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TMGI-Deallocation-Response, Grouped, code 3513, section 6.4.15 */ + { + struct dict_avp_data data = { + 3513, /* Code */ + 10415, /* Vendor */ + "TMGI-Deallocation-Response", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TMGI-Deallocation-Result, Unsigned32, code 3514, section 6.4.16 */ + { + struct dict_avp_data data = { + 3514, /* Code */ + 10415, /* Vendor */ + "TMGI-Deallocation-Result", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TMGI-Expiry, Grouped, code 3515, section 6.4.17 */ + { + struct dict_avp_data data = { + 3515, /* Code */ + 10415, /* Vendor */ + "TMGI-Expiry", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TMGI-Number, Unsigned32, code 3516, section 6.4.18 */ + { + struct dict_avp_data data = { + 3516, /* Code */ + 10415, /* Vendor */ + "TMGI-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Userplane-Protocol-Result, Grouped, code 3529, section 6.4.31 */ + { + struct dict_avp_data data = { + 3529, /* Code */ + 10415, /* Vendor */ + "Userplane-Protocol-Result", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 29.561 V16.3.0 (2020-03) */ + /* 5G System; Interworking between 5G Network and external */ + /* Data Networks; */ + /* Stage 3 */ + /* */ + /* From 3GPP 29561-g30.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* Table 12.4-1: N6 re-used Diameter AVPs */ + + /* Note: Only AVPs defined in 3GPP TS 29.561. */ + /*==================================================================*/ + + /* 3GPP-Notification, OctetString, code 110, section 11.3.1 */ + { + struct dict_avp_data data = { + 110, /* Code */ + 10415, /* Vendor */ + "3GPP-Notification", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-UE-MAC-Address, OctetString, code 111, section 11.3.1 */ + { + struct dict_avp_data data = { + 111, /* Code */ + 10415, /* Vendor */ + "3GPP-UE-MAC-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Authorization-Reference, OctetString, code 112, section 11.3.1 */ + { + struct dict_avp_data data = { + 112, /* Code */ + 10415, /* Vendor */ + "3GPP-Authorization-Reference", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Policy-Reference, OctetString, code 113, section 11.3.1 */ + { + struct dict_avp_data data = { + 113, /* Code */ + 10415, /* Vendor */ + "3GPP-Policy-Reference", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Session-AMBR, OctetString, code 114, section 11.3.1 */ + { + struct dict_avp_data data = { + 114, /* Code */ + 10415, /* Vendor */ + "3GPP-Session-AMBR", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-NAI, OctetString, code 115, section 11.3.1 */ + { + struct dict_avp_data data = { + 115, /* Code */ + 10415, /* Vendor */ + "3GPP-NAI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-Session-AMBR-v2, OctetString, code 116, section 11.3.1 */ + { + struct dict_avp_data data = { + 116, /* Code */ + 10415, /* Vendor */ + "3GPP-Session-AMBR-v2", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-IP-Address-Pool-Id, OctetString, code 118, section 11.3.1 */ + { + struct dict_avp_data data = { + 118, /* Code */ + 10415, /* Vendor */ + "3GPP-IP-Address-Pool-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* Table 17.4-1: Additional information needed for network slice specific authentication */ + /*==================================================================*/ + + /* 3GPP-S-NSSAI, UTF8String, code 200, section 16.3.1 */ + { + struct dict_avp_data data = { + 200, /* Code */ + 10415, /* Vendor */ + "3GPP-S-NSSAI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /*==================================================================*/ + /* 3GPP TS 32.299 V15.7.0 (2019-06) */ + /* Charging management; */ + /* Diameter charging applications */ + /* */ + /* From 3GPP 32299-f70.doc */ + /*==================================================================*/ + + /*==================================================================*/ + /* 3GPP TS 32.299 Table 7.2.0.1: 3GPP specific AVPs */ + /*==================================================================*/ + + /* 3GPP-OC-Specific-Reduction, Grouped, code 1320 */ + { + struct dict_avp_data data = { + 1320, /* Code */ + 10415, /* Vendor */ + "3GPP-OC-Specific-Reduction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-OC-Rating-Group, Unsigned32, code 1321 */ + { + struct dict_avp_data data = { + 1321, /* Code */ + 10415, /* Vendor */ + "3GPP-OC-Rating-Group", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* 3GPP-OC-Request-Type, Enumerated, code 1322 */ + { + struct dict_avp_data data = { + 1322, /* Code */ + 10415, /* Vendor */ + "3GPP-OC-Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/3GPP-OC-Request-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Note: Name conflict with 3GPP TS 29.212 3GPP-PS-Data-Off-Status (2847). */ + /* 3GPP TS 29.212 V14.3.0 (2017-03) CR 1559 added 3GPP-PS-Data-Off-Status (2847). */ + /* 3GPP TS 32.299 V14.3.0 (2017-03) CR 0760 added 3GPP-PS-Data-Off-Status (4406). */ + /* */ + /* Fix: 3GPP-PS-Data-Off-Status (4406) renamed to 3GPP-PS-Data-Off-Status-32.299 (4406). */ + /* 3GPP-PS-Data-Off-Status-32.299, Enumerated, code 4406 */ + { + struct dict_avp_data data = { + 4406, /* Code */ + 10415, /* Vendor */ + "3GPP-PS-Data-Off-Status-32.299", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/3GPP-PS-Data-Off-Status-32.299)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Access-Network-Info-Change, Grouped, code 4401 */ + { + struct dict_avp_data data = { + 4401, /* Code */ + 10415, /* Vendor */ + "Access-Network-Info-Change", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Network-Information, OctetString, code 1263 */ + { + struct dict_avp_data data = { + 1263, /* Code */ + 10415, /* Vendor */ + "Access-Network-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Transfer-Information, Grouped, code 2709 */ + { + struct dict_avp_data data = { + 2709, /* Code */ + 10415, /* Vendor */ + "Access-Transfer-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Access-Transfer-Type, Enumerated, code 2710 */ + { + struct dict_avp_data data = { + 2710, /* Code */ + 10415, /* Vendor */ + "Access-Transfer-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Access-Transfer-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Account-Expiration, Time, code 2309 */ + { + struct dict_avp_data data = { + 2309, /* Code */ + 10415, /* Vendor */ + "Account-Expiration", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Accumulated-Cost, Grouped, code 2052 */ + { + struct dict_avp_data data = { + 2052, /* Code */ + 10415, /* Vendor */ + "Accumulated-Cost", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Adaptations, Enumerated, code 1217 */ + { + struct dict_avp_data data = { + 1217, /* Code */ + 10415, /* Vendor */ + "Adaptations", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Adaptations)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Additional-Content-Information, Grouped, code 1207 */ + { + struct dict_avp_data data = { + 1207, /* Code */ + 10415, /* Vendor */ + "Additional-Content-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Additional-Exception-Reports, Enumerated, code 3936 */ + { + struct dict_avp_data data = { + 3936, /* Code */ + 10415, /* Vendor */ + "Additional-Exception-Reports", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Additional-Exception-Reports)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Additional-Type-Information, UTF8String, code 1205 */ + { + struct dict_avp_data data = { + 1205, /* Code */ + 10415, /* Vendor */ + "Additional-Type-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Address-Data, UTF8String, code 897 */ + { + struct dict_avp_data data = { + 897, /* Code */ + 10415, /* Vendor */ + "Address-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Address-Domain, Grouped, code 898 */ + { + struct dict_avp_data data = { + 898, /* Code */ + 10415, /* Vendor */ + "Address-Domain", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Addressee-Type, Enumerated, code 1208 */ + { + struct dict_avp_data data = { + 1208, /* Code */ + 10415, /* Vendor */ + "Addressee-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Addressee-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Address-Type, Enumerated, code 899 */ + { + struct dict_avp_data data = { + 899, /* Code */ + 10415, /* Vendor */ + "Address-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Address-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AF-Correlation-Information, Grouped, code 1276 */ + { + struct dict_avp_data data = { + 1276, /* Code */ + 10415, /* Vendor */ + "AF-Correlation-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Alternate-Charged-Party-Address, UTF8String, code 1280 */ + { + struct dict_avp_data data = { + 1280, /* Code */ + 10415, /* Vendor */ + "Alternate-Charged-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Announcement-Identifier, Unsigned32, code 3905 */ + { + struct dict_avp_data data = { + 3905, /* Code */ + 10415, /* Vendor */ + "Announcement-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Announcement-Information, Grouped, code 3904 */ + { + struct dict_avp_data data = { + 3904, /* Code */ + 10415, /* Vendor */ + "Announcement-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Announcement-Order, Unsigned32, code 3906 */ + { + struct dict_avp_data data = { + 3906, /* Code */ + 10415, /* Vendor */ + "Announcement-Order", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Announcing-PLMN-ID, UTF8String, code 4408 */ + { + struct dict_avp_data data = { + 4408, /* Code */ + 10415, /* Vendor */ + "Announcing-PLMN-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Announcing-UE-HPLMN-Identifier, UTF8String, code 3426 */ + { + struct dict_avp_data data = { + 3426, /* Code */ + 10415, /* Vendor */ + "Announcing-UE-HPLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Announcing-UE-VPLMN-Identifier, UTF8String, code 3427 */ + { + struct dict_avp_data data = { + 3427, /* Code */ + 10415, /* Vendor */ + "Announcing-UE-VPLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* AoC-Cost-Information, Grouped, code 2053 */ + { + struct dict_avp_data data = { + 2053, /* Code */ + 10415, /* Vendor */ + "AoC-Cost-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AoC-Format, Enumerated, code 2310 */ + { + struct dict_avp_data data = { + 2310, /* Code */ + 10415, /* Vendor */ + "AoC-Format", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Format)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AoC-Information, Grouped, code 2054 */ + { + struct dict_avp_data data = { + 2054, /* Code */ + 10415, /* Vendor */ + "AoC-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AoC-Request-Type, Enumerated, code 2055 */ + { + struct dict_avp_data data = { + 2055, /* Code */ + 10415, /* Vendor */ + "AoC-Request-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Request-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AoC-Service, Grouped, code 2311 */ + { + struct dict_avp_data data = { + 2311, /* Code */ + 10415, /* Vendor */ + "AoC-Service", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* AoC-Service-Obligatory-Type, Enumerated, code 2312 */ + { + struct dict_avp_data data = { + 2312, /* Code */ + 10415, /* Vendor */ + "AoC-Service-Obligatory-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Service-Obligatory-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AoC-Service-Type, Enumerated, code 2313 */ + { + struct dict_avp_data data = { + 2313, /* Code */ + 10415, /* Vendor */ + "AoC-Service-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Service-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* AoC-Subscription-Information, Grouped, code 2314 */ + { + struct dict_avp_data data = { + 2314, /* Code */ + 10415, /* Vendor */ + "AoC-Subscription-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* API-Content, UTF8String, code 1309 */ + { + struct dict_avp_data data = { + 1309, /* Code */ + 10415, /* Vendor */ + "API-Content", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* API-Direction, Enumerated, code 1310 */ + { + struct dict_avp_data data = { + 1310, /* Code */ + 10415, /* Vendor */ + "API-Direction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/API-Direction)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* API-Identifier, OctetString, code 1311 */ + { + struct dict_avp_data data = { + 1311, /* Code */ + 10415, /* Vendor */ + "API-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* API-Invocation-Timestamp, Time, code 1312 */ + { + struct dict_avp_data data = { + 1312, /* Code */ + 10415, /* Vendor */ + "API-Invocation-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* API-Network-Service-Node, Enumerated, code 1315 */ + { + struct dict_avp_data data = { + 1315, /* Code */ + 10415, /* Vendor */ + "API-Network-Service-Node", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/API-Network-Service-Node)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* API-Result-Code, Unsigned32, code 1313 */ + { + struct dict_avp_data data = { + 1313, /* Code */ + 10415, /* Vendor */ + "API-Result-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* API-Size, Unsigned64, code 1314 */ + { + struct dict_avp_data data = { + 1314, /* Code */ + 10415, /* Vendor */ + "API-Size", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* APN-Rate-Control, Grouped, code 3933 */ + { + struct dict_avp_data data = { + 3933, /* Code */ + 10415, /* Vendor */ + "APN-Rate-Control", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* APN-Rate-Control-Downlink, Grouped, code 3934 */ + { + struct dict_avp_data data = { + 3934, /* Code */ + 10415, /* Vendor */ + "APN-Rate-Control-Downlink", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* APN-Rate-Control-Uplink, Grouped, code 3935 */ + { + struct dict_avp_data data = { + 3935, /* Code */ + 10415, /* Vendor */ + "APN-Rate-Control-Uplink", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Applic-ID, UTF8String, code 1218 */ + { + struct dict_avp_data data = { + 1218, /* Code */ + 10415, /* Vendor */ + "Applic-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Application-Provided-Called-Party-Address, UTF8String, code 837 */ + { + struct dict_avp_data data = { + 837, /* Code */ + 10415, /* Vendor */ + "Application-Provided-Called-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Application-Server, UTF8String, code 836 */ + { + struct dict_avp_data data = { + 836, /* Code */ + 10415, /* Vendor */ + "Application-Server", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Application-Server-Information, Grouped, code 850 */ + { + struct dict_avp_data data = { + 850, /* Code */ + 10415, /* Vendor */ + "Application-Server-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Application-Specific-Data, OctetString, code 3458 */ + { + struct dict_avp_data data = { + 3458, /* Code */ + 10415, /* Vendor */ + "Application-Specific-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Associated-Party-Address, UTF8String, code 2035 */ + { + struct dict_avp_data data = { + 2035, /* Code */ + 10415, /* Vendor */ + "Associated-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Associated-URI, UTF8String, code 856 */ + { + struct dict_avp_data data = { + 856, /* Code */ + 10415, /* Vendor */ + "Associated-URI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Authorised-QoS, UTF8String, code 849 */ + { + struct dict_avp_data data = { + 849, /* Code */ + 10415, /* Vendor */ + "Authorised-QoS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Aux-Applic-Info, UTF8String, code 1219 */ + { + struct dict_avp_data data = { + 1219, /* Code */ + 10415, /* Vendor */ + "Aux-Applic-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Base-Time-Interval, Unsigned32, code 1265 */ + { + struct dict_avp_data data = { + 1265, /* Code */ + 10415, /* Vendor */ + "Base-Time-Interval", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Basic-Service-Code, Grouped, code 3411 */ + { + struct dict_avp_data data = { + 3411, /* Code */ + 10415, /* Vendor */ + "Basic-Service-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Bearer-Capability, OctetString, code 3412 */ + { + struct dict_avp_data data = { + 3412, /* Code */ + 10415, /* Vendor */ + "Bearer-Capability", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Bearer-Service, OctetString, code 854 */ + { + struct dict_avp_data data = { + 854, /* Code */ + 10415, /* Vendor */ + "Bearer-Service", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* BSSID, UTF8String, code 2716 */ + { + struct dict_avp_data data = { + 2716, /* Code */ + 10415, /* Vendor */ + "BSSID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Called-Asserted-Identity, UTF8String, code 1250 */ + { + struct dict_avp_data data = { + 1250, /* Code */ + 10415, /* Vendor */ + "Called-Asserted-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Called-Identity, UTF8String, code 3916 */ + { + struct dict_avp_data data = { + 3916, /* Code */ + 10415, /* Vendor */ + "Called-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Called-Identity-Change, Grouped, code 3917 */ + { + struct dict_avp_data data = { + 3917, /* Code */ + 10415, /* Vendor */ + "Called-Identity-Change", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Called-Party-Address, UTF8String, code 832 */ + { + struct dict_avp_data data = { + 832, /* Code */ + 10415, /* Vendor */ + "Called-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Calling-Party-Address, UTF8String, code 831 */ + { + struct dict_avp_data data = { + 831, /* Code */ + 10415, /* Vendor */ + "Calling-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Carrier-Select-Routing-Information, UTF8String, code 2023 */ + { + struct dict_avp_data data = { + 2023, /* Code */ + 10415, /* Vendor */ + "Carrier-Select-Routing-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Cause-Code, Integer32, code 861 */ + { + struct dict_avp_data data = { + 861, /* Code */ + 10415, /* Vendor */ + "Cause-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Cellular-Network-Information, OctetString, code 3924 */ + { + struct dict_avp_data data = { + 3924, /* Code */ + 10415, /* Vendor */ + "Cellular-Network-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CG-Address, Address, code 846 */ + { + struct dict_avp_data data = { + 846, /* Code */ + 10415, /* Vendor */ + "CG-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Change-Condition, Integer32, code 2037 */ + { + struct dict_avp_data data = { + 2037, /* Code */ + 10415, /* Vendor */ + "Change-Condition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Change-Time, Time, code 2038 */ + { + struct dict_avp_data data = { + 2038, /* Code */ + 10415, /* Vendor */ + "Change-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Charge-Reason-Code, Enumerated, code 2118 */ + { + struct dict_avp_data data = { + 2118, /* Code */ + 10415, /* Vendor */ + "Charge-Reason-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charge-Reason-Code)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Charged-Party, UTF8String, code 857 */ + { + struct dict_avp_data data = { + 857, /* Code */ + 10415, /* Vendor */ + "Charged-Party", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Charging-Characteristics-Selection-Mode, Enumerated, code 2066 */ + { + struct dict_avp_data data = { + 2066, /* Code */ + 10415, /* Vendor */ + "Charging-Characteristics-Selection-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charging-Characteristics-Selection-Mode)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Charging-Per-IP-CAN-Session-Indicator, Enumerated, code 4400 */ + { + struct dict_avp_data data = { + 4400, /* Code */ + 10415, /* Vendor */ + "Charging-Per-IP-CAN-Session-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charging-Per-IP-CAN-Session-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Civic-Address-Information, UTF8String, code 1305 */ + { + struct dict_avp_data data = { + 1305, /* Code */ + 10415, /* Vendor */ + "Civic-Address-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Class-Identifier, Enumerated, code 1214 */ + { + struct dict_avp_data data = { + 1214, /* Code */ + 10415, /* Vendor */ + "Class-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Class-Identifier)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Client-Address, Address, code 2018 */ + { + struct dict_avp_data data = { + 2018, /* Code */ + 10415, /* Vendor */ + "Client-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* CN-Operator-Selection-Entity, Enumerated, code 3421 */ + { + struct dict_avp_data data = { + 3421, /* Code */ + 10415, /* Vendor */ + "CN-Operator-Selection-Entity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CN-Operator-Selection-Entity)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Content-Class, Enumerated, code 1220 */ + { + struct dict_avp_data data = { + 1220, /* Code */ + 10415, /* Vendor */ + "Content-Class", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Content-Class)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Content-Disposition, UTF8String, code 828 */ + { + struct dict_avp_data data = { + 828, /* Code */ + 10415, /* Vendor */ + "Content-Disposition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Content-Length, Unsigned32, code 827 */ + { + struct dict_avp_data data = { + 827, /* Code */ + 10415, /* Vendor */ + "Content-Length", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Content-Size, Unsigned32, code 1206 */ + { + struct dict_avp_data data = { + 1206, /* Code */ + 10415, /* Vendor */ + "Content-Size", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Content-Type, UTF8String, code 826 */ + { + struct dict_avp_data data = { + 826, /* Code */ + 10415, /* Vendor */ + "Content-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Coverage-Info, Grouped, code 3459 */ + { + struct dict_avp_data data = { + 3459, /* Code */ + 10415, /* Vendor */ + "Coverage-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Coverage-Status, Enumerated, code 3428 */ + { + struct dict_avp_data data = { + 3428, /* Code */ + 10415, /* Vendor */ + "Coverage-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Coverage-Status)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* CP-CIoT-EPS-Optimisation-Indicator, Enumerated, code 3930 */ + { + struct dict_avp_data data = { + 3930, /* Code */ + 10415, /* Vendor */ + "CP-CIoT-EPS-Optimisation-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CP-CIoT-EPS-Optimisation-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* CPDT-Information, Grouped, code 3927 */ + { + struct dict_avp_data data = { + 3927, /* Code */ + 10415, /* Vendor */ + "CPDT-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* CSG-Access-Mode, Enumerated, code 2317 */ + { + struct dict_avp_data data = { + 2317, /* Code */ + 10415, /* Vendor */ + "CSG-Access-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Access-Mode)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* CSG-Membership-Indication, Enumerated, code 2318 */ + { + struct dict_avp_data data = { + 2318, /* Code */ + 10415, /* Vendor */ + "CSG-Membership-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Membership-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* CUG-Information, OctetString, code 2304 */ + { + struct dict_avp_data data = { + 2304, /* Code */ + 10415, /* Vendor */ + "CUG-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Current-Tariff, Grouped, code 2056 */ + { + struct dict_avp_data data = { + 2056, /* Code */ + 10415, /* Vendor */ + "Current-Tariff", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Data-Coding-Scheme, Integer32, code 2001 */ + { + struct dict_avp_data data = { + 2001, /* Code */ + 10415, /* Vendor */ + "Data-Coding-Scheme", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Deferred-Location-Event-Type, UTF8String, code 1230 */ + { + struct dict_avp_data data = { + 1230, /* Code */ + 10415, /* Vendor */ + "Deferred-Location-Event-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Delivery-Report-Requested, Enumerated, code 1216 */ + { + struct dict_avp_data data = { + 1216, /* Code */ + 10415, /* Vendor */ + "Delivery-Report-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Delivery-Report-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Destination-Interface, Grouped, code 2002 */ + { + struct dict_avp_data data = { + 2002, /* Code */ + 10415, /* Vendor */ + "Destination-Interface", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Diagnostics, Integer32, code 2039 */ + { + struct dict_avp_data data = { + 2039, /* Code */ + 10415, /* Vendor */ + "Diagnostics", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Discoveree-UE-HPLMN-Identifier, UTF8String, code 4402 */ + { + struct dict_avp_data data = { + 4402, /* Code */ + 10415, /* Vendor */ + "Discoveree-UE-HPLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Discoveree-UE-VPLMN-Identifier, UTF8String, code 4403 */ + { + struct dict_avp_data data = { + 4403, /* Code */ + 10415, /* Vendor */ + "Discoveree-UE-VPLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Discoverer-UE-HPLMN-Identifier, UTF8String, code 4404 */ + { + struct dict_avp_data data = { + 4404, /* Code */ + 10415, /* Vendor */ + "Discoverer-UE-HPLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Discoverer-UE-VPLMN-Identifier, UTF8String, code 4405 */ + { + struct dict_avp_data data = { + 4405, /* Code */ + 10415, /* Vendor */ + "Discoverer-UE-VPLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Domain-Name, UTF8String, code 1200 */ + { + struct dict_avp_data data = { + 1200, /* Code */ + 10415, /* Vendor */ + "Domain-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* DRM-Content, Enumerated, code 1221 */ + { + struct dict_avp_data data = { + 1221, /* Code */ + 10415, /* Vendor */ + "DRM-Content", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/DRM-Content)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Dynamic-Address-Flag, Enumerated, code 2051 */ + { + struct dict_avp_data data = { + 2051, /* Code */ + 10415, /* Vendor */ + "Dynamic-Address-Flag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Dynamic-Address-Flag)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Dynamic-Address-Flag-Extension, Enumerated, code 2068 */ + { + struct dict_avp_data data = { + 2068, /* Code */ + 10415, /* Vendor */ + "Dynamic-Address-Flag-Extension", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Dynamic-Address-Flag-Extension)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Early-Media-Description, Grouped, code 1272 */ + { + struct dict_avp_data data = { + 1272, /* Code */ + 10415, /* Vendor */ + "Early-Media-Description", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Enhanced-Diagnostics, Grouped, code 3901 */ + { + struct dict_avp_data data = { + 3901, /* Code */ + 10415, /* Vendor */ + "Enhanced-Diagnostics", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Envelope, Grouped, code 1266 */ + { + struct dict_avp_data data = { + 1266, /* Code */ + 10415, /* Vendor */ + "Envelope", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Envelope-End-Time, Time, code 1267 */ + { + struct dict_avp_data data = { + 1267, /* Code */ + 10415, /* Vendor */ + "Envelope-End-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Envelope-Reporting, Enumerated, code 1268 */ + { + struct dict_avp_data data = { + 1268, /* Code */ + 10415, /* Vendor */ + "Envelope-Reporting", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Envelope-Reporting)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Envelope-Start-Time, Time, code 1269 */ + { + struct dict_avp_data data = { + 1269, /* Code */ + 10415, /* Vendor */ + "Envelope-Start-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* EPDG-Address, Address, code 3425 */ + { + struct dict_avp_data data = { + 3425, /* Code */ + 10415, /* Vendor */ + "EPDG-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Event, UTF8String, code 825 */ + { + struct dict_avp_data data = { + 825, /* Code */ + 10415, /* Vendor */ + "Event", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Event-Charging-TimeStamp, Time, code 1258 */ + { + struct dict_avp_data data = { + 1258, /* Code */ + 10415, /* Vendor */ + "Event-Charging-TimeStamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Event-Type, Grouped, code 823 */ + { + struct dict_avp_data data = { + 823, /* Code */ + 10415, /* Vendor */ + "Event-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Expires, Unsigned32, code 888 */ + { + struct dict_avp_data data = { + 888, /* Code */ + 10415, /* Vendor */ + "Expires", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Exposure-Function-API-Information, Grouped, code 1316 */ + { + struct dict_avp_data data = { + 1316, /* Code */ + 10415, /* Vendor */ + "Exposure-Function-API-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* FE-Identifier-List, UTF8String, code 4413 */ + { + struct dict_avp_data data = { + 4413, /* Code */ + 10415, /* Vendor */ + "FE-Identifier-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* File-Repair-Supported, Enumerated, code 1224 */ + { + struct dict_avp_data data = { + 1224, /* Code */ + 10415, /* Vendor */ + "File-Repair-Supported", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/File-Repair-Supported)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Forwarding-Pending, Enumerated, code 3415 */ + { + struct dict_avp_data data = { + 3415, /* Code */ + 10415, /* Vendor */ + "Forwarding-Pending", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Forwarding-Pending)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* From-Address, UTF8String, code 2708 */ + { + struct dict_avp_data data = { + 2708, /* Code */ + 10415, /* Vendor */ + "From-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* GGSN-Address, Address, code 847 */ + { + struct dict_avp_data data = { + 847, /* Code */ + 10415, /* Vendor */ + "GGSN-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* IMS-Application-Reference-Identifier, UTF8String, code 2601 */ + { + struct dict_avp_data data = { + 2601, /* Code */ + 10415, /* Vendor */ + "IMS-Application-Reference-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* IMS-Charging-Identifier, UTF8String, code 841 */ + { + struct dict_avp_data data = { + 841, /* Code */ + 10415, /* Vendor */ + "IMS-Charging-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* IMS-Communication-Service-Identifier, UTF8String, code 1281 */ + { + struct dict_avp_data data = { + 1281, /* Code */ + 10415, /* Vendor */ + "IMS-Communication-Service-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* IMS-Emergency-Indicator, Enumerated, code 2322 */ + { + struct dict_avp_data data = { + 2322, /* Code */ + 10415, /* Vendor */ + "IMS-Emergency-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMS-Emergency-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* IMS-Information, Grouped, code 876 */ + { + struct dict_avp_data data = { + 876, /* Code */ + 10415, /* Vendor */ + "IMS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* IMS-Visited-Network-Identifier, UTF8String, code 2713 */ + { + struct dict_avp_data data = { + 2713, /* Code */ + 10415, /* Vendor */ + "IMS-Visited-Network-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* IMSI-Unauthenticated-Flag, Enumerated, code 2308 */ + { + struct dict_avp_data data = { + 2308, /* Code */ + 10415, /* Vendor */ + "IMSI-Unauthenticated-Flag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMSI-Unauthenticated-Flag)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Incoming-Trunk-Group-Id, UTF8String, code 852 */ + { + struct dict_avp_data data = { + 852, /* Code */ + 10415, /* Vendor */ + "Incoming-Trunk-Group-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Incremental-Cost, Grouped, code 2062 */ + { + struct dict_avp_data data = { + 2062, /* Code */ + 10415, /* Vendor */ + "Incremental-Cost", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Initial-IMS-Charging-Identifier, UTF8String, code 2321 */ + { + struct dict_avp_data data = { + 2321, /* Code */ + 10415, /* Vendor */ + "Initial-IMS-Charging-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Instance-Id, UTF8String, code 3402 */ + { + struct dict_avp_data data = { + 3402, /* Code */ + 10415, /* Vendor */ + "Instance-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Interface-Id, UTF8String, code 2003 */ + { + struct dict_avp_data data = { + 2003, /* Code */ + 10415, /* Vendor */ + "Interface-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Interface-Port, UTF8String, code 2004 */ + { + struct dict_avp_data data = { + 2004, /* Code */ + 10415, /* Vendor */ + "Interface-Port", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Interface-Text, UTF8String, code 2005 */ + { + struct dict_avp_data data = { + 2005, /* Code */ + 10415, /* Vendor */ + "Interface-Text", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Interface-Type, Enumerated, code 2006 */ + { + struct dict_avp_data data = { + 2006, /* Code */ + 10415, /* Vendor */ + "Interface-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Interface-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Inter-Operator-Identifier, Grouped, code 838 */ + { + struct dict_avp_data data = { + 838, /* Code */ + 10415, /* Vendor */ + "Inter-Operator-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Inter-UE-Transfer, Enumerated, code 3902 */ + { + struct dict_avp_data data = { + 3902, /* Code */ + 10415, /* Vendor */ + "Inter-UE-Transfer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Inter-UE-Transfer)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* IP-Realm-Default-Indication, Enumerated, code 2603 */ + { + struct dict_avp_data data = { + 2603, /* Code */ + 10415, /* Vendor */ + "IP-Realm-Default-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IP-Realm-Default-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* ISUP-Cause, Grouped, code 3416 */ + { + struct dict_avp_data data = { + 3416, /* Code */ + 10415, /* Vendor */ + "ISUP-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ISUP-Cause-Diagnostics, OctetString, code 3422 */ + { + struct dict_avp_data data = { + 3422, /* Code */ + 10415, /* Vendor */ + "ISUP-Cause-Diagnostics", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ISUP-Cause-Location, Unsigned32, code 3423 */ + { + struct dict_avp_data data = { + 3423, /* Code */ + 10415, /* Vendor */ + "ISUP-Cause-Location", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ISUP-Cause-Value, Unsigned32, code 3424 */ + { + struct dict_avp_data data = { + 3424, /* Code */ + 10415, /* Vendor */ + "ISUP-Cause-Value", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ISUP-Location-Number, OctetString, code 3414 */ + { + struct dict_avp_data data = { + 3414, /* Code */ + 10415, /* Vendor */ + "ISUP-Location-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Language, UTF8String, code 3914 */ + { + struct dict_avp_data data = { + 3914, /* Code */ + 10415, /* Vendor */ + "Language", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Layer-2-Group-ID, OctetString, code 3429 */ + { + struct dict_avp_data data = { + 3429, /* Code */ + 10415, /* Vendor */ + "Layer-2-Group-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-APN, UTF8String, code 1231 */ + { + struct dict_avp_data data = { + 1231, /* Code */ + 10415, /* Vendor */ + "LCS-APN", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* LCS-Client-Dialed-By-MS, UTF8String, code 1233 */ + { + struct dict_avp_data data = { + 1233, /* Code */ + 10415, /* Vendor */ + "LCS-Client-Dialed-By-MS", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* LCS-Client-External-ID, UTF8String, code 1234 */ + { + struct dict_avp_data data = { + 1234, /* Code */ + 10415, /* Vendor */ + "LCS-Client-External-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* LCS-Client-Id, Grouped, code 1232 */ + { + struct dict_avp_data data = { + 1232, /* Code */ + 10415, /* Vendor */ + "LCS-Client-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Client-Name, Grouped, code 1235 */ + { + struct dict_avp_data data = { + 1235, /* Code */ + 10415, /* Vendor */ + "LCS-Client-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Client-Type, Enumerated, code 1241 */ + { + struct dict_avp_data data = { + 1241, /* Code */ + 10415, /* Vendor */ + "LCS-Client-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-Client-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* LCS-Data-Coding-Scheme, UTF8String, code 1236 */ + { + struct dict_avp_data data = { + 1236, /* Code */ + 10415, /* Vendor */ + "LCS-Data-Coding-Scheme", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* LCS-Format-Indicator, Enumerated, code 1237 */ + { + struct dict_avp_data data = { + 1237, /* Code */ + 10415, /* Vendor */ + "LCS-Format-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-Format-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* LCS-Information, Grouped, code 878 */ + { + struct dict_avp_data data = { + 878, /* Code */ + 10415, /* Vendor */ + "LCS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* LCS-Name-String, UTF8String, code 1238 */ + { + struct dict_avp_data data = { + 1238, /* Code */ + 10415, /* Vendor */ + "LCS-Name-String", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Note: 3GPP TS 32.299 V11.8.0 (2013-07) renamed */ + /* LCS-Requestor-Id (1239) to LCS-Requestor-ID (1239). */ + /* */ + /* Change-1.4.0: LCS-Requestor-Id (1239) renamed to LCS-Requestor-ID (1239). */ + /* LCS-Requestor-ID, Grouped, code 1239 */ + { + struct dict_avp_data data = { + 1239, /* Code */ + 10415, /* Vendor */ + "LCS-Requestor-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: 3GPP TS 32.299 V11.8.0 (2013-07) renamed */ + /* LCS-Requestor-Id-String (1240) to LCS-Requestor-ID-String (1240). */ + /* */ + /* Change-1.4.0: LCS-Requestor-Id-String (1240) renamed to LCS-Requestor-ID-String (1240). */ + /* LCS-Requestor-ID-String, UTF8String, code 1240 */ + { + struct dict_avp_data data = { + 1240, /* Code */ + 10415, /* Vendor */ + "LCS-Requestor-ID-String", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Local-GW-Inserted-Indication, Enumerated, code 2604 */ + { + struct dict_avp_data data = { + 2604, /* Code */ + 10415, /* Vendor */ + "Local-GW-Inserted-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Local-GW-Inserted-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Local-Sequence-Number, Unsigned32, code 2063 */ + { + struct dict_avp_data data = { + 2063, /* Code */ + 10415, /* Vendor */ + "Local-Sequence-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Estimate, OctetString, code 1242 */ + { + struct dict_avp_data data = { + 1242, /* Code */ + 10415, /* Vendor */ + "Location-Estimate", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Estimate-Type, Enumerated, code 1243 */ + { + struct dict_avp_data data = { + 1243, /* Code */ + 10415, /* Vendor */ + "Location-Estimate-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Location-Estimate-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Location-Info, Grouped, code 3460 */ + { + struct dict_avp_data data = { + 3460, /* Code */ + 10415, /* Vendor */ + "Location-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Location-Type, Grouped, code 1244 */ + { + struct dict_avp_data data = { + 1244, /* Code */ + 10415, /* Vendor */ + "Location-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Low-Balance-Indication, Enumerated, code 2020 */ + { + struct dict_avp_data data = { + 2020, /* Code */ + 10415, /* Vendor */ + "Low-Balance-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Low-Balance-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Low-Priority-Indicator, Enumerated, code 2602 */ + { + struct dict_avp_data data = { + 2602, /* Code */ + 10415, /* Vendor */ + "Low-Priority-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Low-Priority-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MBMS-Charged-Party, Enumerated, code 2323 */ + { + struct dict_avp_data data = { + 2323, /* Code */ + 10415, /* Vendor */ + "MBMS-Charged-Party", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Charged-Party)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Note: 3GPP TS 32.299 V11.8.0 (2013-07) Table 7.2 changed */ + /* row MBMS-GW-Address (2307) to have a hyphen instead of space. */ + /* */ + /* Change-1.4.0: MBMSGW-Address (2307) renamed to MBMS-GW-Address (2307). */ + /* MBMS-GW-Address, Address, code 2307 */ + { + struct dict_avp_data data = { + 2307, /* Code */ + 10415, /* Vendor */ + "MBMS-GW-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* MBMS-Information, Grouped, code 880 */ + { + struct dict_avp_data data = { + 880, /* Code */ + 10415, /* Vendor */ + "MBMS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MBMS-User-Service-Type, Enumerated, code 1225 */ + { + struct dict_avp_data data = { + 1225, /* Code */ + 10415, /* Vendor */ + "MBMS-User-Service-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-User-Service-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Media-Initiator-Flag, Enumerated, code 882 */ + { + struct dict_avp_data data = { + 882, /* Code */ + 10415, /* Vendor */ + "Media-Initiator-Flag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Media-Initiator-Flag)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Media-Initiator-Party, UTF8String, code 1288 */ + { + struct dict_avp_data data = { + 1288, /* Code */ + 10415, /* Vendor */ + "Media-Initiator-Party", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Message-Body, Grouped, code 889 */ + { + struct dict_avp_data data = { + 889, /* Code */ + 10415, /* Vendor */ + "Message-Body", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Message-Class, Grouped, code 1213 */ + { + struct dict_avp_data data = { + 1213, /* Code */ + 10415, /* Vendor */ + "Message-Class", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Message-ID, UTF8String, code 1210 */ + { + struct dict_avp_data data = { + 1210, /* Code */ + 10415, /* Vendor */ + "Message-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Message-Size, Unsigned32, code 1212 */ + { + struct dict_avp_data data = { + 1212, /* Code */ + 10415, /* Vendor */ + "Message-Size", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Message-Type, Enumerated, code 1211 */ + { + struct dict_avp_data data = { + 1211, /* Code */ + 10415, /* Vendor */ + "Message-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Message-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MMBox-Storage-Requested, Enumerated, code 1248 */ + { + struct dict_avp_data data = { + 1248, /* Code */ + 10415, /* Vendor */ + "MMBox-Storage-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MMBox-Storage-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* MM-Content-Type, Grouped, code 1203 */ + { + struct dict_avp_data data = { + 1203, /* Code */ + 10415, /* Vendor */ + "MM-Content-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MMS-Information, Grouped, code 877 */ + { + struct dict_avp_data data = { + 877, /* Code */ + 10415, /* Vendor */ + "MMS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MMTel-Information, Grouped, code 2030 */ + { + struct dict_avp_data data = { + 2030, /* Code */ + 10415, /* Vendor */ + "MMTel-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MMTel-SService-Type, Unsigned32, code 2031 */ + { + struct dict_avp_data data = { + 2031, /* Code */ + 10415, /* Vendor */ + "MMTel-SService-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitored-PLMN-Identifier, UTF8String, code 3430 */ + { + struct dict_avp_data data = { + 3430, /* Code */ + 10415, /* Vendor */ + "Monitored-PLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Monitoring-Event-Configuration-Activity, Integer32, code 3919 */ + { + struct dict_avp_data data = { + 3919, /* Code */ + 10415, /* Vendor */ + "Monitoring-Event-Configuration-Activity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Event-Functionality, Integer32, code 3922 */ + { + struct dict_avp_data data = { + 3922, /* Code */ + 10415, /* Vendor */ + "Monitoring-Event-Functionality", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Event-Information, Grouped, code 3921 */ + { + struct dict_avp_data data = { + 3921, /* Code */ + 10415, /* Vendor */ + "Monitoring-Event-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Event-Report-Data, Grouped, code 3920 */ + { + struct dict_avp_data data = { + 3920, /* Code */ + 10415, /* Vendor */ + "Monitoring-Event-Report-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-Event-Report-Number, Unsigned32, code 3923 */ + { + struct dict_avp_data data = { + 3923, /* Code */ + 10415, /* Vendor */ + "Monitoring-Event-Report-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Monitoring-UE-HPLMN-Identifier, UTF8String, code 3431 */ + { + struct dict_avp_data data = { + 3431, /* Code */ + 10415, /* Vendor */ + "Monitoring-UE-HPLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Monitoring-UE-Identifier, UTF8String, code 3432 */ + { + struct dict_avp_data data = { + 3432, /* Code */ + 10415, /* Vendor */ + "Monitoring-UE-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Monitoring-UE-VPLMN-Identifier, UTF8String, code 3433 */ + { + struct dict_avp_data data = { + 3433, /* Code */ + 10415, /* Vendor */ + "Monitoring-UE-VPLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* MSC-Address, OctetString, code 3417 */ + { + struct dict_avp_data data = { + 3417, /* Code */ + 10415, /* Vendor */ + "MSC-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* MTC-IWF-Address, Address, code 3406 */ + { + struct dict_avp_data data = { + 3406, /* Code */ + 10415, /* Vendor */ + "MTC-IWF-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Neighbour-Node-Address, Address, code 2705 */ + { + struct dict_avp_data data = { + 2705, /* Code */ + 10415, /* Vendor */ + "Neighbour-Node-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Network-Call-Reference-Number, OctetString, code 3418 */ + { + struct dict_avp_data data = { + 3418, /* Code */ + 10415, /* Vendor */ + "Network-Call-Reference-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Next-Tariff, Grouped, code 2057 */ + { + struct dict_avp_data data = { + 2057, /* Code */ + 10415, /* Vendor */ + "Next-Tariff", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NIDD-Submission, Grouped, code 3928 */ + { + struct dict_avp_data data = { + 3928, /* Code */ + 10415, /* Vendor */ + "NIDD-Submission", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NNI-Information, Grouped, code 2703 */ + { + struct dict_avp_data data = { + 2703, /* Code */ + 10415, /* Vendor */ + "NNI-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* NNI-Type, Enumerated, code 2704 */ + { + struct dict_avp_data data = { + 2704, /* Code */ + 10415, /* Vendor */ + "NNI-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/NNI-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Node-Functionality, Enumerated, code 862 */ + { + struct dict_avp_data data = { + 862, /* Code */ + 10415, /* Vendor */ + "Node-Functionality", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Node-Functionality)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Node-Id, UTF8String, code 2064 */ + { + struct dict_avp_data data = { + 2064, /* Code */ + 10415, /* Vendor */ + "Node-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Number-Of-Diversions, Unsigned32, code 2034 */ + { + struct dict_avp_data data = { + 2034, /* Code */ + 10415, /* Vendor */ + "Number-Of-Diversions", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Messages-Sent, Unsigned32, code 2019 */ + { + struct dict_avp_data data = { + 2019, /* Code */ + 10415, /* Vendor */ + "Number-Of-Messages-Sent", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Participants, Unsigned32, code 885 */ + { + struct dict_avp_data data = { + 885, /* Code */ + 10415, /* Vendor */ + "Number-Of-Participants", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Received-Talk-Bursts, Unsigned32, code 1282 */ + { + struct dict_avp_data data = { + 1282, /* Code */ + 10415, /* Vendor */ + "Number-Of-Received-Talk-Bursts", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Talk-Bursts, Unsigned32, code 1283 */ + { + struct dict_avp_data data = { + 1283, /* Code */ + 10415, /* Vendor */ + "Number-Of-Talk-Bursts", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Portability-Routing-Information, UTF8String, code 2024 */ + { + struct dict_avp_data data = { + 2024, /* Code */ + 10415, /* Vendor */ + "Number-Portability-Routing-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Offline-Charging, Grouped, code 1278 */ + { + struct dict_avp_data data = { + 1278, /* Code */ + 10415, /* Vendor */ + "Offline-Charging", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Online-Charging-Flag, Enumerated, code 2303 */ + { + struct dict_avp_data data = { + 2303, /* Code */ + 10415, /* Vendor */ + "Online-Charging-Flag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Online-Charging-Flag)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Originating-IOI, UTF8String, code 839 */ + { + struct dict_avp_data data = { + 839, /* Code */ + 10415, /* Vendor */ + "Originating-IOI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Originator, Enumerated, code 864 */ + { + struct dict_avp_data data = { + 864, /* Code */ + 10415, /* Vendor */ + "Originator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Originator-Address, Grouped, code 886 */ + { + struct dict_avp_data data = { + 886, /* Code */ + 10415, /* Vendor */ + "Originator-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Originator-Interface, Grouped, code 2009 */ + { + struct dict_avp_data data = { + 2009, /* Code */ + 10415, /* Vendor */ + "Originator-Interface", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Originator-Received-Address, Grouped, code 2027 */ + { + struct dict_avp_data data = { + 2027, /* Code */ + 10415, /* Vendor */ + "Originator-Received-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Originator-SCCP-Address, Address, code 2008 */ + { + struct dict_avp_data data = { + 2008, /* Code */ + 10415, /* Vendor */ + "Originator-SCCP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Outgoing-Session-Id, UTF8String, code 2320 */ + { + struct dict_avp_data data = { + 2320, /* Code */ + 10415, /* Vendor */ + "Outgoing-Session-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Outgoing-Trunk-Group-Id, UTF8String, code 853 */ + { + struct dict_avp_data data = { + 853, /* Code */ + 10415, /* Vendor */ + "Outgoing-Trunk-Group-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Participant-Access-Priority, Enumerated, code 1259 */ + { + struct dict_avp_data data = { + 1259, /* Code */ + 10415, /* Vendor */ + "Participant-Access-Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Participant-Access-Priority)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Participant-Action-Type, Enumerated, code 2049 */ + { + struct dict_avp_data data = { + 2049, /* Code */ + 10415, /* Vendor */ + "Participant-Action-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Participant-Action-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Participant-Group, Grouped, code 1260 */ + { + struct dict_avp_data data = { + 1260, /* Code */ + 10415, /* Vendor */ + "Participant-Group", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Participants-Involved, UTF8String, code 887 */ + { + struct dict_avp_data data = { + 887, /* Code */ + 10415, /* Vendor */ + "Participants-Involved", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* PC3-Control-Protocol-Cause, Integer32, code 3434 */ + { + struct dict_avp_data data = { + 3434, /* Code */ + 10415, /* Vendor */ + "PC3-Control-Protocol-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PC3-EPC-Control-Protocol-Cause, Integer32, code 3435 */ + { + struct dict_avp_data data = { + 3435, /* Code */ + 10415, /* Vendor */ + "PC3-EPC-Control-Protocol-Cause", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PC5-Radio-Technology, Enumerated, code 1300 */ + { + struct dict_avp_data data = { + 1300, /* Code */ + 10415, /* Vendor */ + "PC5-Radio-Technology", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PC5-Radio-Technology)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PDN-Connection-Charging-ID, Unsigned32, code 2050 */ + { + struct dict_avp_data data = { + 2050, /* Code */ + 10415, /* Vendor */ + "PDN-Connection-Charging-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PDP-Address, Address, code 1227 */ + { + struct dict_avp_data data = { + 1227, /* Code */ + 10415, /* Vendor */ + "PDP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* PDP-Address-Prefix-Length, Unsigned32, code 2606 */ + { + struct dict_avp_data data = { + 2606, /* Code */ + 10415, /* Vendor */ + "PDP-Address-Prefix-Length", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PDP-Context-Type, Enumerated, code 1247 */ + { + struct dict_avp_data data = { + 1247, /* Code */ + 10415, /* Vendor */ + "PDP-Context-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDP-Context-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Change-1.4.0: PDG-Address (895) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09). */ + + /* Change-1.4.0: PDG-Charging-Id (896) Unsigned32 removed in 3GPP TS 32.299 V12.6.0 (2014-09). */ + + /* Play-Alternative, Enumerated, code 3913 */ + { + struct dict_avp_data data = { + 3913, /* Code */ + 10415, /* Vendor */ + "Play-Alternative", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Play-Alternative)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-Change-Condition, Enumerated, code 1261 */ + { + struct dict_avp_data data = { + 1261, /* Code */ + 10415, /* Vendor */ + "PoC-Change-Condition", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Change-Condition)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-Change-Time, Time, code 1262 */ + { + struct dict_avp_data data = { + 1262, /* Code */ + 10415, /* Vendor */ + "PoC-Change-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* PoC-Controlling-Address, UTF8String, code 858 */ + { + struct dict_avp_data data = { + 858, /* Code */ + 10415, /* Vendor */ + "PoC-Controlling-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* PoC-Event-Type, Enumerated, code 2025 */ + { + struct dict_avp_data data = { + 2025, /* Code */ + 10415, /* Vendor */ + "PoC-Event-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Event-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-Group-Name, UTF8String, code 859 */ + { + struct dict_avp_data data = { + 859, /* Code */ + 10415, /* Vendor */ + "PoC-Group-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* PoC-Information, Grouped, code 879 */ + { + struct dict_avp_data data = { + 879, /* Code */ + 10415, /* Vendor */ + "PoC-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PoC-Server-Role, Enumerated, code 883 */ + { + struct dict_avp_data data = { + 883, /* Code */ + 10415, /* Vendor */ + "PoC-Server-Role", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Server-Role)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-Session-Id, UTF8String, code 1229 */ + { + struct dict_avp_data data = { + 1229, /* Code */ + 10415, /* Vendor */ + "PoC-Session-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* PoC-Session-Initiation-type, Enumerated, code 1277 */ + { + struct dict_avp_data data = { + 1277, /* Code */ + 10415, /* Vendor */ + "PoC-Session-Initiation-type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Session-Initiation-type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-Session-Type, Enumerated, code 884 */ + { + struct dict_avp_data data = { + 884, /* Code */ + 10415, /* Vendor */ + "PoC-Session-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Session-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PoC-User-Role, Grouped, code 1252 */ + { + struct dict_avp_data data = { + 1252, /* Code */ + 10415, /* Vendor */ + "PoC-User-Role", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PoC-User-Role-IDs, UTF8String, code 1253 */ + { + struct dict_avp_data data = { + 1253, /* Code */ + 10415, /* Vendor */ + "PoC-User-Role-IDs", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Note: 3GPP TS 32.299 V13.1.0 (2015-06) renamed */ + /* PoC-User-Role-info-Units (1254) to PoC-User-Role-Info-Units (1254). */ + /* */ + /* Change-1.4.0: PoC-User-Role-info-Units (1254) renamed to PoC-User-Role-Info-Units (1254). */ + /* PoC-User-Role-Info-Units, Enumerated, code 1254 */ + { + struct dict_avp_data data = { + 1254, /* Code */ + 10415, /* Vendor */ + "PoC-User-Role-Info-Units", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-User-Role-Info-Units)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Positioning-Data, UTF8String, code 1245 */ + { + struct dict_avp_data data = { + 1245, /* Code */ + 10415, /* Vendor */ + "Positioning-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Preferred-AoC-Currency, Unsigned32, code 2315 */ + { + struct dict_avp_data data = { + 2315, /* Code */ + 10415, /* Vendor */ + "Preferred-AoC-Currency", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Priority, Enumerated, code 1209 */ + { + struct dict_avp_data data = { + 1209, /* Code */ + 10415, /* Vendor */ + "Priority", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priority)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Privacy-Indicator, Enumerated, code 3915 */ + { + struct dict_avp_data data = { + 3915, /* Code */ + 10415, /* Vendor */ + "Privacy-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Privacy-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* ProSe-3rd-Party-Application-ID, UTF8String, code 3440 */ + { + struct dict_avp_data data = { + 3440, /* Code */ + 10415, /* Vendor */ + "ProSe-3rd-Party-Application-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* ProSe-Direct-Communication-Reception-Data-Container, Grouped, code 3461 */ + { + struct dict_avp_data data = { + 3461, /* Code */ + 10415, /* Vendor */ + "ProSe-Direct-Communication-Reception-Data-Container", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Direct-Communication-Transmission-Data-Container, Grouped, code 3441 */ + { + struct dict_avp_data data = { + 3441, /* Code */ + 10415, /* Vendor */ + "ProSe-Direct-Communication-Transmission-Data-Container", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Direct-Discovery-Model, Enumerated, code 3442 */ + { + struct dict_avp_data data = { + 3442, /* Code */ + 10415, /* Vendor */ + "ProSe-Direct-Discovery-Model", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Direct-Discovery-Model)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* ProSe-Event-Type, Enumerated, code 3443 */ + { + struct dict_avp_data data = { + 3443, /* Code */ + 10415, /* Vendor */ + "ProSe-Event-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Event-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* ProSe-Function-IP-Address, Address, code 3444 */ + { + struct dict_avp_data data = { + 3444, /* Code */ + 10415, /* Vendor */ + "ProSe-Function-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* ProSe-Function-PLMN-Identifier, UTF8String, code 3457 */ + { + struct dict_avp_data data = { + 3457, /* Code */ + 10415, /* Vendor */ + "ProSe-Function-PLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* ProSe-Functionality, Enumerated, code 3445 */ + { + struct dict_avp_data data = { + 3445, /* Code */ + 10415, /* Vendor */ + "ProSe-Functionality", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Functionality)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* ProSe-Group-IP-Multicast-Address, Address, code 3446 */ + { + struct dict_avp_data data = { + 3446, /* Code */ + 10415, /* Vendor */ + "ProSe-Group-IP-Multicast-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* ProSe-Information, Grouped, code 3447 */ + { + struct dict_avp_data data = { + 3447, /* Code */ + 10415, /* Vendor */ + "ProSe-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-Range-Class, Enumerated, code 3448 */ + { + struct dict_avp_data data = { + 3448, /* Code */ + 10415, /* Vendor */ + "ProSe-Range-Class", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Range-Class)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* ProSe-Reason-For-Cancellation, Enumerated, code 3449 */ + { + struct dict_avp_data data = { + 3449, /* Code */ + 10415, /* Vendor */ + "ProSe-Reason-For-Cancellation", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Reason-For-Cancellation)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* ProSe-Request-Timestamp, Time, code 3450 */ + { + struct dict_avp_data data = { + 3450, /* Code */ + 10415, /* Vendor */ + "ProSe-Request-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* ProSe-Role-Of-UE, Enumerated, code 3451 */ + { + struct dict_avp_data data = { + 3451, /* Code */ + 10415, /* Vendor */ + "ProSe-Role-Of-UE", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ProSe-Role-Of-UE)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* ProSe-Source-IP-Address, Address, code 3452 */ + { + struct dict_avp_data data = { + 3452, /* Code */ + 10415, /* Vendor */ + "ProSe-Source-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* ProSe-Target-Layer-2-ID, OctetString, code 4410 */ + { + struct dict_avp_data data = { + 4410, /* Code */ + 10415, /* Vendor */ + "ProSe-Target-Layer-2-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-UE-ID, OctetString, code 3453 */ + { + struct dict_avp_data data = { + 3453, /* Code */ + 10415, /* Vendor */ + "ProSe-UE-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* ProSe-UE-to-Network-Relay-UE-ID, OctetString, code 4409 */ + { + struct dict_avp_data data = { + 4409, /* Code */ + 10415, /* Vendor */ + "ProSe-UE-to-Network-Relay-UE-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Proximity-Alert-Indication, Enumerated, code 3454 */ + { + struct dict_avp_data data = { + 3454, /* Code */ + 10415, /* Vendor */ + "Proximity-Alert-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Proximity-Alert-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Proximity-Alert-Timestamp, Time, code 3455 */ + { + struct dict_avp_data data = { + 3455, /* Code */ + 10415, /* Vendor */ + "Proximity-Alert-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Proximity-Cancellation-Timestamp, Time, code 3456 */ + { + struct dict_avp_data data = { + 3456, /* Code */ + 10415, /* Vendor */ + "Proximity-Cancellation-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* PS-Append-Free-Format-Data, Enumerated, code 867 */ + { + struct dict_avp_data data = { + 867, /* Code */ + 10415, /* Vendor */ + "PS-Append-Free-Format-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PS-Append-Free-Format-Data)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* PS-Free-Format-Data, OctetString, code 866 */ + { + struct dict_avp_data data = { + 866, /* Code */ + 10415, /* Vendor */ + "PS-Free-Format-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PS-Furnish-Charging-Information, Grouped, code 865 */ + { + struct dict_avp_data data = { + 865, /* Code */ + 10415, /* Vendor */ + "PS-Furnish-Charging-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* PS-Information, Grouped, code 874 */ + { + struct dict_avp_data data = { + 874, /* Code */ + 10415, /* Vendor */ + "PS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Quota-Consumption-Time, Unsigned32, code 881 */ + { + struct dict_avp_data data = { + 881, /* Code */ + 10415, /* Vendor */ + "Quota-Consumption-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Quota-Holding-Time, Unsigned32, code 871 */ + { + struct dict_avp_data data = { + 871, /* Code */ + 10415, /* Vendor */ + "Quota-Holding-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Quota-Indicator, Enumerated, code 3912 */ + { + struct dict_avp_data data = { + 3912, /* Code */ + 10415, /* Vendor */ + "Quota-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Quota-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Note: Name conflict with 3GPP TS 32.299 Radio-Frequency (3508) */ + /* 3GPP TS 29.468 V12.0.0 (2014-09) added Radio-Frequency (3508). */ + /* 3GPP TS 32.299 V13.1.0 (2015-06) CR 0638 added Radio-Frequency (3462). */ + /* Radio-Frequency, OctetString, code 3462 */ + { + struct dict_avp_data data = { + 3462, /* Code */ + 10415, /* Vendor */ + "Radio-Frequency", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Radio-Parameter-Set-Info, Grouped, code 3463 */ + { + struct dict_avp_data data = { + 3463, /* Code */ + 10415, /* Vendor */ + "Radio-Parameter-Set-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Radio-Parameter-Set-Values, OctetString, code 3464 */ + { + struct dict_avp_data data = { + 3464, /* Code */ + 10415, /* Vendor */ + "Radio-Parameter-Set-Values", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Radio-Resources-Indicator, Integer32, code 3465 */ + { + struct dict_avp_data data = { + 3465, /* Code */ + 10415, /* Vendor */ + "Radio-Resources-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RAN-End-Time, Time, code 1301 */ + { + struct dict_avp_data data = { + 1301, /* Code */ + 10415, /* Vendor */ + "RAN-End-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* RAN-Secondary-RAT-Usage-Report, Grouped, code 1302 */ + { + struct dict_avp_data data = { + 1302, /* Code */ + 10415, /* Vendor */ + "RAN-Secondary-RAT-Usage-Report", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* RAN-Start-Time, Time, code 1303 */ + { + struct dict_avp_data data = { + 1303, /* Code */ + 10415, /* Vendor */ + "RAN-Start-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Rate-Control-Max-Message-Size, Unsigned32, code 3937 */ + { + struct dict_avp_data data = { + 3937, /* Code */ + 10415, /* Vendor */ + "Rate-Control-Max-Message-Size", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Rate-Control-Max-Rate, Unsigned32, code 3938 */ + { + struct dict_avp_data data = { + 3938, /* Code */ + 10415, /* Vendor */ + "Rate-Control-Max-Rate", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Rate-Control-Time-Unit, Unsigned32, code 3939 */ + { + struct dict_avp_data data = { + 3939, /* Code */ + 10415, /* Vendor */ + "Rate-Control-Time-Unit", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Rate-Element, Grouped, code 2058 */ + { + struct dict_avp_data data = { + 2058, /* Code */ + 10415, /* Vendor */ + "Rate-Element", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Read-Reply-Report-Requested, Enumerated, code 1222 */ + { + struct dict_avp_data data = { + 1222, /* Code */ + 10415, /* Vendor */ + "Read-Reply-Report-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Read-Reply-Report-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Real-Time-Tariff-Information, Grouped, code 2305 */ + { + struct dict_avp_data data = { + 2305, /* Code */ + 10415, /* Vendor */ + "Real-Time-Tariff-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reason-Header, UTF8String, code 3401 */ + { + struct dict_avp_data data = { + 3401, /* Code */ + 10415, /* Vendor */ + "Reason-Header", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Received-Talk-Burst-Time, Unsigned32, code 1284 */ + { + struct dict_avp_data data = { + 1284, /* Code */ + 10415, /* Vendor */ + "Received-Talk-Burst-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Received-Talk-Burst-Volume, Unsigned32, code 1285 */ + { + struct dict_avp_data data = { + 1285, /* Code */ + 10415, /* Vendor */ + "Received-Talk-Burst-Volume", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Note: Name conflict with 3GPP TS 32.299 Recipient-Address (1201); */ + /* 3GPP TS 29.140 V6.1.0 (2005-06) allocated Recipient-Address (1108). */ + /* 3GPP TS 32.299 V6.4.0 (2005-09) CR 0028 added Recipient-Address (1201). */ + /* Recipient-Address, Grouped, code 1201 */ + { + struct dict_avp_data data = { + 1201, /* Code */ + 10415, /* Vendor */ + "Recipient-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Recipient-Info, Grouped, code 2026 */ + { + struct dict_avp_data data = { + 2026, /* Code */ + 10415, /* Vendor */ + "Recipient-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Recipient-Received-Address, Grouped, code 2028 */ + { + struct dict_avp_data data = { + 2028, /* Code */ + 10415, /* Vendor */ + "Recipient-Received-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Recipient-SCCP-Address, Address, code 2010 */ + { + struct dict_avp_data data = { + 2010, /* Code */ + 10415, /* Vendor */ + "Recipient-SCCP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Refund-Information, OctetString, code 2022 */ + { + struct dict_avp_data data = { + 2022, /* Code */ + 10415, /* Vendor */ + "Refund-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Related-Change-Condition-Information, Grouped, code 3925 */ + { + struct dict_avp_data data = { + 3925, /* Code */ + 10415, /* Vendor */ + "Related-Change-Condition-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Related-Trigger, Grouped, code 3926 */ + { + struct dict_avp_data data = { + 3926, /* Code */ + 10415, /* Vendor */ + "Related-Trigger", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Related-IMS-Charging-Identifier, UTF8String, code 2711 */ + { + struct dict_avp_data data = { + 2711, /* Code */ + 10415, /* Vendor */ + "Related-IMS-Charging-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Related-IMS-Charging-Identifier-Node, Address, code 2712 */ + { + struct dict_avp_data data = { + 2712, /* Code */ + 10415, /* Vendor */ + "Related-IMS-Charging-Identifier-Node", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Relationship-Mode, Enumerated, code 2706 */ + { + struct dict_avp_data data = { + 2706, /* Code */ + 10415, /* Vendor */ + "Relationship-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Relationship-Mode)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Relay-IP-address, Address, code 4411 */ + { + struct dict_avp_data data = { + 4411, /* Code */ + 10415, /* Vendor */ + "Relay-IP-address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Remaining-Balance, Grouped, code 2021 */ + { + struct dict_avp_data data = { + 2021, /* Code */ + 10415, /* Vendor */ + "Remaining-Balance", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Reply-Applic-ID, UTF8String, code 1223 */ + { + struct dict_avp_data data = { + 1223, /* Code */ + 10415, /* Vendor */ + "Reply-Applic-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Reply-Path-Requested, Enumerated, code 2011 */ + { + struct dict_avp_data data = { + 2011, /* Code */ + 10415, /* Vendor */ + "Reply-Path-Requested", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reply-Path-Requested)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Reporting-Reason, Enumerated, code 872 */ + { + struct dict_avp_data data = { + 872, /* Code */ + 10415, /* Vendor */ + "Reporting-Reason", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reporting-Reason)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Requested-Party-Address, UTF8String, code 1251 */ + { + struct dict_avp_data data = { + 1251, /* Code */ + 10415, /* Vendor */ + "Requested-Party-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Requested-PLMN-Identifier, UTF8String, code 3436 */ + { + struct dict_avp_data data = { + 3436, /* Code */ + 10415, /* Vendor */ + "Requested-PLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Requestor-PLMN-Identifier, UTF8String, code 3437 */ + { + struct dict_avp_data data = { + 3437, /* Code */ + 10415, /* Vendor */ + "Requestor-PLMN-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Role-Of-Node, Enumerated, code 829 */ + { + struct dict_avp_data data = { + 829, /* Code */ + 10415, /* Vendor */ + "Role-Of-Node", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Role-Of-Node)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Role-Of-ProSe-Function, Enumerated, code 3438 */ + { + struct dict_avp_data data = { + 3438, /* Code */ + 10415, /* Vendor */ + "Role-Of-ProSe-Function", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Role-Of-ProSe-Function)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Route-Header-Received, UTF8String, code 3403 */ + { + struct dict_avp_data data = { + 3403, /* Code */ + 10415, /* Vendor */ + "Route-Header-Received", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Route-Header-Transmitted, UTF8String, code 3404 */ + { + struct dict_avp_data data = { + 3404, /* Code */ + 10415, /* Vendor */ + "Route-Header-Transmitted", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Scale-Factor, Grouped, code 2059 */ + { + struct dict_avp_data data = { + 2059, /* Code */ + 10415, /* Vendor */ + "Scale-Factor", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SCEF-Address, Address, code 1317 */ + { + struct dict_avp_data data = { + 1317, /* Code */ + 10415, /* Vendor */ + "SCEF-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* SCS-Address, Address, code 3941 */ + { + struct dict_avp_data data = { + 3941, /* Code */ + 10415, /* Vendor */ + "SCS-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* SCS-AS-Address, Grouped, code 3940 */ + { + struct dict_avp_data data = { + 3940, /* Code */ + 10415, /* Vendor */ + "SCS-AS-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SCS-Realm, DiameterIdentity, code 3942 */ + { + struct dict_avp_data data = { + 3942, /* Code */ + 10415, /* Vendor */ + "SCS-Realm", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* SDP-Answer-Timestamp, Time, code 1275 */ + { + struct dict_avp_data data = { + 1275, /* Code */ + 10415, /* Vendor */ + "SDP-Answer-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SDP-Media-Component, Grouped, code 843 */ + { + struct dict_avp_data data = { + 843, /* Code */ + 10415, /* Vendor */ + "SDP-Media-Component", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SDP-Media-Description, UTF8String, code 845 */ + { + struct dict_avp_data data = { + 845, /* Code */ + 10415, /* Vendor */ + "SDP-Media-Description", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SDP-Media-Name, UTF8String, code 844 */ + { + struct dict_avp_data data = { + 844, /* Code */ + 10415, /* Vendor */ + "SDP-Media-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SDP-Offer-Timestamp, Time, code 1274 */ + { + struct dict_avp_data data = { + 1274, /* Code */ + 10415, /* Vendor */ + "SDP-Offer-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SDP-Session-Description, UTF8String, code 842 */ + { + struct dict_avp_data data = { + 842, /* Code */ + 10415, /* Vendor */ + "SDP-Session-Description", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SDP-TimeStamps, Grouped, code 1273 */ + { + struct dict_avp_data data = { + 1273, /* Code */ + 10415, /* Vendor */ + "SDP-TimeStamps", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SDP-Type, Enumerated, code 2036 */ + { + struct dict_avp_data data = { + 2036, /* Code */ + 10415, /* Vendor */ + "SDP-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SDP-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Secondary-RAT-Type, OctetString, code 1304 */ + { + struct dict_avp_data data = { + 1304, /* Code */ + 10415, /* Vendor */ + "Secondary-RAT-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Serving-Node-Identity, DiameterIdentity, code 3929 */ + { + struct dict_avp_data data = { + 3929, /* Code */ + 10415, /* Vendor */ + "Serving-Node-Identity", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); + }; + + /* Served-Party-IP-Address, Address, code 848 */ + { + struct dict_avp_data data = { + 848, /* Code */ + 10415, /* Vendor */ + "Served-Party-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Service-Data-Container, Grouped, code 2040 */ + { + struct dict_avp_data data = { + 2040, /* Code */ + 10415, /* Vendor */ + "Service-Data-Container", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Id, UTF8String, code 855 */ + { + struct dict_avp_data data = { + 855, /* Code */ + 10415, /* Vendor */ + "Service-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Service-Information, Grouped, code 873 */ + { + struct dict_avp_data data = { + 873, /* Code */ + 10415, /* Vendor */ + "Service-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Mode, Unsigned32, code 2032 */ + { + struct dict_avp_data data = { + 2032, /* Code */ + 10415, /* Vendor */ + "Service-Mode", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Specific-Data, UTF8String, code 863 */ + { + struct dict_avp_data data = { + 863, /* Code */ + 10415, /* Vendor */ + "Service-Specific-Data", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Service-Specific-Info, Grouped, code 1249 */ + { + struct dict_avp_data data = { + 1249, /* Code */ + 10415, /* Vendor */ + "Service-Specific-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Specific-Type, Unsigned32, code 1257 */ + { + struct dict_avp_data data = { + 1257, /* Code */ + 10415, /* Vendor */ + "Service-Specific-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Serving-Node-Type, Enumerated, code 2047 */ + { + struct dict_avp_data data = { + 2047, /* Code */ + 10415, /* Vendor */ + "Serving-Node-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Serving-Node-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Session-Direction, Enumerated, code 2707 */ + { + struct dict_avp_data data = { + 2707, /* Code */ + 10415, /* Vendor */ + "Session-Direction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Direction)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SGi-PtP-Tunnelling-Method, Enumerated, code 3931 */ + { + struct dict_avp_data data = { + 3931, /* Code */ + 10415, /* Vendor */ + "SGi-PtP-Tunnelling-Method", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SGi-PtP-Tunnelling-Method)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SGSN-Address, Address, code 1228 */ + { + struct dict_avp_data data = { + 1228, /* Code */ + 10415, /* Vendor */ + "SGSN-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* SGW-Address, Address, code 2067 */ + { + struct dict_avp_data data = { + 2067, /* Code */ + 10415, /* Vendor */ + "SGW-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* SGW-Change, Enumerated, code 2065 */ + { + struct dict_avp_data data = { + 2065, /* Code */ + 10415, /* Vendor */ + "SGW-Change", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SGW-Change)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SIP-Method, UTF8String, code 824 */ + { + struct dict_avp_data data = { + 824, /* Code */ + 10415, /* Vendor */ + "SIP-Method", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SIP-Request-Timestamp, Time, code 834 */ + { + struct dict_avp_data data = { + 834, /* Code */ + 10415, /* Vendor */ + "SIP-Request-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SIP-Request-Timestamp-Fraction, Unsigned32, code 2301 */ + { + struct dict_avp_data data = { + 2301, /* Code */ + 10415, /* Vendor */ + "SIP-Request-Timestamp-Fraction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SIP-Response-Timestamp, Time, code 835 */ + { + struct dict_avp_data data = { + 835, /* Code */ + 10415, /* Vendor */ + "SIP-Response-Timestamp", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SIP-Response-Timestamp-Fraction, Unsigned32, code 2302 */ + { + struct dict_avp_data data = { + 2302, /* Code */ + 10415, /* Vendor */ + "SIP-Response-Timestamp-Fraction", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Device-Trigger-Indicator, Enumerated, code 3407 */ + { + struct dict_avp_data data = { + 3407, /* Code */ + 10415, /* Vendor */ + "SM-Device-Trigger-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Device-Trigger-Indicator)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SM-Device-Trigger-Information, Grouped, code 3405 */ + { + struct dict_avp_data data = { + 3405, /* Code */ + 10415, /* Vendor */ + "SM-Device-Trigger-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Discharge-Time, Time, code 2012 */ + { + struct dict_avp_data data = { + 2012, /* Code */ + 10415, /* Vendor */ + "SM-Discharge-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SM-Message-Type, Enumerated, code 2007 */ + { + struct dict_avp_data data = { + 2007, /* Code */ + 10415, /* Vendor */ + "SM-Message-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Message-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SM-Protocol-ID, OctetString, code 2013 */ + { + struct dict_avp_data data = { + 2013, /* Code */ + 10415, /* Vendor */ + "SM-Protocol-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Sequence-Number, Unsigned32, code 3408 */ + { + struct dict_avp_data data = { + 3408, /* Code */ + 10415, /* Vendor */ + "SM-Sequence-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-Service-Type, Enumerated, code 2029 */ + { + struct dict_avp_data data = { + 2029, /* Code */ + 10415, /* Vendor */ + "SM-Service-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Service-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SM-Status, OctetString, code 2014 */ + { + struct dict_avp_data data = { + 2014, /* Code */ + 10415, /* Vendor */ + "SM-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SM-User-Data-Header, OctetString, code 2015 */ + { + struct dict_avp_data data = { + 2015, /* Code */ + 10415, /* Vendor */ + "SM-User-Data-Header", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SMS-Information, Grouped, code 2000 */ + { + struct dict_avp_data data = { + 2000, /* Code */ + 10415, /* Vendor */ + "SMS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SMS-Node, Enumerated, code 2016 */ + { + struct dict_avp_data data = { + 2016, /* Code */ + 10415, /* Vendor */ + "SMS-Node", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SMS-Node)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SMS-Result, Unsigned32, code 3409 */ + { + struct dict_avp_data data = { + 3409, /* Code */ + 10415, /* Vendor */ + "SMS-Result", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SMSC-Address, Address, code 2017 */ + { + struct dict_avp_data data = { + 2017, /* Code */ + 10415, /* Vendor */ + "SMSC-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Start-of-Charging, Time, code 3419 */ + { + struct dict_avp_data data = { + 3419, /* Code */ + 10415, /* Vendor */ + "Start-of-Charging", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Start-Time, Time, code 2041 */ + { + struct dict_avp_data data = { + 2041, /* Code */ + 10415, /* Vendor */ + "Start-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Note: 3GPP TS 32.299 V11.10.0 (2013-12) CR 0566 renamed */ + /* Status (2702) to Status-Code (2702). */ + /* 3GPP TS 32.299 V11.14.0 (2014-12) CR 0617 renamed */ + /* Status-Code (2702) to Status-AS-Code (2702). */ + /* */ + /* Change-1.4.0: Status (2702) renamed to Status-AS-Code (2702). */ + /* Status-AS-Code, Enumerated, code 2702 */ + { + struct dict_avp_data data = { + 2702, /* Code */ + 10415, /* Vendor */ + "Status-AS-Code", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Status-AS-Code)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Stop-Time, Time, code 2042 */ + { + struct dict_avp_data data = { + 2042, /* Code */ + 10415, /* Vendor */ + "Stop-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Submission-Time, Time, code 1202 */ + { + struct dict_avp_data data = { + 1202, /* Code */ + 10415, /* Vendor */ + "Submission-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Subscriber-Role, Enumerated, code 2033 */ + { + struct dict_avp_data data = { + 2033, /* Code */ + 10415, /* Vendor */ + "Subscriber-Role", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscriber-Role)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Supplementary-Service, Grouped, code 2048 */ + { + struct dict_avp_data data = { + 2048, /* Code */ + 10415, /* Vendor */ + "Supplementary-Service", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TAD-Identifier, Enumerated, code 2717 */ + { + struct dict_avp_data data = { + 2717, /* Code */ + 10415, /* Vendor */ + "TAD-Identifier", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/TAD-Identifier)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Talk-Burst-Exchange, Grouped, code 1255 */ + { + struct dict_avp_data data = { + 1255, /* Code */ + 10415, /* Vendor */ + "Talk-Burst-Exchange", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Talk-Burst-Time, Unsigned32, code 1286 */ + { + struct dict_avp_data data = { + 1286, /* Code */ + 10415, /* Vendor */ + "Talk-Burst-Time", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Talk-Burst-Volume, Unsigned32, code 1287 */ + { + struct dict_avp_data data = { + 1287, /* Code */ + 10415, /* Vendor */ + "Talk-Burst-Volume", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Target-IP-Address, Address, code 4412 */ + { + struct dict_avp_data data = { + 4412, /* Code */ + 10415, /* Vendor */ + "Target-IP-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* Tariff-Information, Grouped, code 2060 */ + { + struct dict_avp_data data = { + 2060, /* Code */ + 10415, /* Vendor */ + "Tariff-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Tariff-XML, UTF8String, code 2306 */ + { + struct dict_avp_data data = { + 2306, /* Code */ + 10415, /* Vendor */ + "Tariff-XML", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Teleservice, OctetString, code 3413 */ + { + struct dict_avp_data data = { + 3413, /* Code */ + 10415, /* Vendor */ + "Teleservice", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Terminating-IOI, UTF8String, code 840 */ + { + struct dict_avp_data data = { + 840, /* Code */ + 10415, /* Vendor */ + "Terminating-IOI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Time-First-Reception, Time, code 3466 */ + { + struct dict_avp_data data = { + 3466, /* Code */ + 10415, /* Vendor */ + "Time-First-Reception", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Time-First-Transmission, Time, code 3467 */ + { + struct dict_avp_data data = { + 3467, /* Code */ + 10415, /* Vendor */ + "Time-First-Transmission", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Time-First-Usage, Time, code 2043 */ + { + struct dict_avp_data data = { + 2043, /* Code */ + 10415, /* Vendor */ + "Time-First-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Time-Indicator, Unsigned32, code 3911 */ + { + struct dict_avp_data data = { + 3911, /* Code */ + 10415, /* Vendor */ + "Time-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Time-Last-Usage, Time, code 2044 */ + { + struct dict_avp_data data = { + 2044, /* Code */ + 10415, /* Vendor */ + "Time-Last-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* Time-Quota-Mechanism, Grouped, code 1270 */ + { + struct dict_avp_data data = { + 1270, /* Code */ + 10415, /* Vendor */ + "Time-Quota-Mechanism", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Time-Quota-Threshold, Unsigned32, code 868 */ + { + struct dict_avp_data data = { + 868, /* Code */ + 10415, /* Vendor */ + "Time-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Time-Quota-Type, Enumerated, code 1271 */ + { + struct dict_avp_data data = { + 1271, /* Code */ + 10415, /* Vendor */ + "Time-Quota-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Time-Quota-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Time-Stamps, Grouped, code 833 */ + { + struct dict_avp_data data = { + 833, /* Code */ + 10415, /* Vendor */ + "Time-Stamps", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Time-Usage, Unsigned32, code 2045 */ + { + struct dict_avp_data data = { + 2045, /* Code */ + 10415, /* Vendor */ + "Time-Usage", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TLTRI, Unsigned32, code 1318 */ + { + struct dict_avp_data data = { + 1318, /* Code */ + 10415, /* Vendor */ + "TLTRI", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Token-Text, UTF8String, code 1215 */ + { + struct dict_avp_data data = { + 1215, /* Code */ + 10415, /* Vendor */ + "Token-Text", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Traffic-Data-Volumes, Grouped, code 2046 */ + { + struct dict_avp_data data = { + 2046, /* Code */ + 10415, /* Vendor */ + "Traffic-Data-Volumes", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Transcoder-Inserted-Indication, Enumerated, code 2605 */ + { + struct dict_avp_data data = { + 2605, /* Code */ + 10415, /* Vendor */ + "Transcoder-Inserted-Indication", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Transcoder-Inserted-Indication)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Transit-IOI-List, UTF8String, code 2701 */ + { + struct dict_avp_data data = { + 2701, /* Code */ + 10415, /* Vendor */ + "Transit-IOI-List", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Transmitter-Info, Grouped, code 3468 */ + { + struct dict_avp_data data = { + 3468, /* Code */ + 10415, /* Vendor */ + "Transmitter-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Trigger, Grouped, code 1264 */ + { + struct dict_avp_data data = { + 1264, /* Code */ + 10415, /* Vendor */ + "Trigger", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Trigger-Type, Enumerated, code 870 */ + { + struct dict_avp_data data = { + 870, /* Code */ + 10415, /* Vendor */ + "Trigger-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trigger-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Trunk-Group-Id, Grouped, code 851 */ + { + struct dict_avp_data data = { + 851, /* Code */ + 10415, /* Vendor */ + "Trunk-Group-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* TWAG-Address, Address, code 3903 */ + { + struct dict_avp_data data = { + 3903, /* Code */ + 10415, /* Vendor */ + "TWAG-Address", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); + }; + + /* TWAN-User-Location-Info, Grouped, code 2714 */ + { + struct dict_avp_data data = { + 2714, /* Code */ + 10415, /* Vendor */ + "TWAN-User-Location-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Type-Number, Enumerated, code 1204 */ + { + struct dict_avp_data data = { + 1204, /* Code */ + 10415, /* Vendor */ + "Type-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Type-Number)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* UNI-PDU-CP-Only-Flag, Enumerated, code 3932 */ + { + struct dict_avp_data data = { + 3932, /* Code */ + 10415, /* Vendor */ + "UNI-PDU-CP-Only-Flag", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/UNI-PDU-CP-Only-Flag)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Unit-Cost, Grouped, code 2061 */ + { + struct dict_avp_data data = { + 2061, /* Code */ + 10415, /* Vendor */ + "Unit-Cost", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Unit-Quota-Threshold, Unsigned32, code 1226 */ + { + struct dict_avp_data data = { + 1226, /* Code */ + 10415, /* Vendor */ + "Unit-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Unused-Quota-Timer, Unsigned32, code 4407 */ + { + struct dict_avp_data data = { + 4407, /* Code */ + 10415, /* Vendor */ + "Unused-Quota-Timer", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Usage-Information-Report-Sequence-Number, Integer32, code 3439 */ + { + struct dict_avp_data data = { + 3439, /* Code */ + 10415, /* Vendor */ + "Usage-Information-Report-Sequence-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* User-CSG-Information, Grouped, code 2319 */ + { + struct dict_avp_data data = { + 2319, /* Code */ + 10415, /* Vendor */ + "User-CSG-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* User-Participating-Type, Enumerated, code 1279 */ + { + struct dict_avp_data data = { + 1279, /* Code */ + 10415, /* Vendor */ + "User-Participating-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Participating-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* User-Session-Id, UTF8String, code 830 */ + { + struct dict_avp_data data = { + 830, /* Code */ + 10415, /* Vendor */ + "User-Session-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* UWAN-User-Location-Info, Grouped, code 3918 */ + { + struct dict_avp_data data = { + 3918, /* Code */ + 10415, /* Vendor */ + "UWAN-User-Location-Info", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Variable-Part, Grouped, code 3907 */ + { + struct dict_avp_data data = { + 3907, /* Code */ + 10415, /* Vendor */ + "Variable-Part", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Variable-Part-Order, Unsigned32, code 3908 */ + { + struct dict_avp_data data = { + 3908, /* Code */ + 10415, /* Vendor */ + "Variable-Part-Order", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Variable-Part-Type, Unsigned32, code 3909 */ + { + struct dict_avp_data data = { + 3909, /* Code */ + 10415, /* Vendor */ + "Variable-Part-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Variable-Part-Value, UTF8String, code 3910 */ + { + struct dict_avp_data data = { + 3910, /* Code */ + 10415, /* Vendor */ + "Variable-Part-Value", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* VCS-Information, Grouped, code 3410 */ + { + struct dict_avp_data data = { + 3410, /* Code */ + 10415, /* Vendor */ + "VCS-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* VLR-Number, OctetString, code 3420 */ + { + struct dict_avp_data data = { + 3420, /* Code */ + 10415, /* Vendor */ + "VLR-Number", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Volume-Quota-Threshold, Unsigned32, code 869 */ + { + struct dict_avp_data data = { + 869, /* Code */ + 10415, /* Vendor */ + "Volume-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Change-1.4.0: WAG-Address (890) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09). */ + + /* Change-1.4.0: WAG-PLMN-Id (891) OctetString removed in 3GPP TS 32.299 V12.6.0 (2014-09). */ + + /* Change-1.4.0: WLAN-Information (875) Grouped removed in 3GPP TS 32.299 V12.6.0 (2014-09). */ + + /* WLAN-Operator-Id, Grouped, code 1306 */ + { + struct dict_avp_data data = { + 1306, /* Code */ + 10415, /* Vendor */ + "WLAN-Operator-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* WLAN-Operator-Name, UTF8String, code 1307 */ + { + struct dict_avp_data data = { + 1307, /* Code */ + 10415, /* Vendor */ + "WLAN-Operator-Name", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* WLAN-PLMN-Id, UTF8String, code 1308 */ + { + struct dict_avp_data data = { + 1308, /* Code */ + 10415, /* Vendor */ + "WLAN-PLMN-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Change-1.4.0: WLAN-Radio-Container (892) Grouped removed in 3GPP TS 32.299 V12.6.0 (2014-09). */ + + /* Change-1.4.0: WLAN-Session-Id (1246) UTF8String removed in 3GPP TS 32.299 V12.6.0 (2014-09). */ + + /* Change-1.4.0: WLAN-Technology (893) Unsigned32 removed in 3GPP TS 32.299 V12.6.0 (2014-09). */ + + /* Change-1.4.0: WLAN-UE-Local-IPAddress (894) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09). */ + + /*==================================================================*/ + /* OMA DDS Charging_Data V1.0 20110201-A */ + /* Charging Data */ + /* */ + /* From OMA OMA-DDS-Charging_Data-V1_0-20110201-A.pdf */ + /*==================================================================*/ + + /* Application-Server-Id, UTF8String, code 2101, section 8.4 */ + { + struct dict_avp_data data = { + 2101, /* Code */ + 10415, /* Vendor */ + "Application-Server-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Change-1.4.0: Application-Service-Type (2102) type changed from UTF8String to Enumerated. */ + /* Application-Service-Type, Enumerated, code 2102, section 8.4 */ + { + struct dict_avp_data data = { + 2102, /* Code */ + 10415, /* Vendor */ + "Application-Service-Type", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Application-Service-Type)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* Change-1.4.0: Application-Session-Id (2103) type changed from UTF8String to Unsigned32. */ + /* Application-Session-Id, Unsigned32, code 2103, section 8.4 */ + { + struct dict_avp_data data = { + 2103, /* Code */ + 10415, /* Vendor */ + "Application-Session-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Content-ID, UTF8String, code 2116, section 8.4 */ + { + struct dict_avp_data data = { + 2116, /* Code */ + 10415, /* Vendor */ + "Content-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* Content-provider-ID, UTF8String, code 2117, section 8.4 */ + { + struct dict_avp_data data = { + 2117, /* Code */ + 10415, /* Vendor */ + "Content-provider-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* DCD-Information, Grouped, code 2115, section 8.5.5 */ + { + struct dict_avp_data data = { + 2115, /* Code */ + 10415, /* Vendor */ + "DCD-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Delivery-Status, UTF8String, code 2104, section 8.4 */ + { + struct dict_avp_data data = { + 2104, /* Code */ + 10415, /* Vendor */ + "Delivery-Status", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* IM-Information, Grouped, code 2110, section 8.5.6 */ + { + struct dict_avp_data data = { + 2110, /* Code */ + 10415, /* Vendor */ + "IM-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Messages-Successfully-Exploded, Unsigned32, code 2111, section 8.4 */ + { + struct dict_avp_data data = { + 2111, /* Code */ + 10415, /* Vendor */ + "Number-Of-Messages-Successfully-Exploded", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Number-Of-Messages-Successfully-Sent, Unsigned32, code 2112, section 8.4 */ + { + struct dict_avp_data data = { + 2112, /* Code */ + 10415, /* Vendor */ + "Number-Of-Messages-Successfully-Sent", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Service-Generic-Information, Grouped, code 1256, section 8.5.10 */ + { + struct dict_avp_data data = { + 1256, /* Code */ + 10415, /* Vendor */ + "Service-Generic-Information", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Total-Number-Of-Messages-Exploded, Unsigned32, code 2113, section 8.4 */ + { + struct dict_avp_data data = { + 2113, /* Code */ + 10415, /* Vendor */ + "Total-Number-Of-Messages-Exploded", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* Total-Number-Of-Messages-Sent, Unsigned32, code 2114, section 8.4 */ + { + struct dict_avp_data data = { + 2114, /* Code */ + 10415, /* Vendor */ + "Total-Number-Of-Messages-Sent", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /*==================================================================*/ + /* 3GPP2 X.S0057-0 v2.0 */ + /* E-UTRAN - eHRPD Connectivity and Interworking: */ + /* Core Network Aspects */ + /* */ + /* From 3GPP2 X.S0057-0_v2.0_091215.pdf */ + /*==================================================================*/ + + /* */ + /* Change-1.4.0: 3GPP2-BSID (9010) type changed from OctetString to UTF8String. */ + /* Change-1.4.0: 3GPP2-BSID (9010) flag M MUST. */ + /* 3GPP2-BSID, UTF8String, code 9010, section 5.6.2.1.1 */ + { + struct dict_avp_data data = { + 9010, /* Code */ + 5535, /* Vendor */ + "3GPP2-BSID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + return 0; +} /* add_avps() */ diff --git a/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c index 55d5ce4..3d58cf6 100644 --- a/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c +++ b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c @@ -72,10 +72,9 @@ * 1. It would be good if 29.061 was reviewed to check for each AVP if * it is Mandatory or not. The data currently in the document does not * match what was in the previous version of the freeDiameter - * extension (the one that existedbefore I rewrote it) or what I saw + * extension (the one that existed before I rewrote it) or what I saw * so far. IIRC, even the table and the document contradict each - * other. The AVP table is also missing an entry for - * "External-Identifier", 28. + * other. * * 2. 29.140 has conflicting AVP names with other documents: * - Sequence-Number is also in 32.329 @@ -98,7 +97,8 @@ CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) ); struct local_rules_definition { - struct dict_avp_request avp_vendor_plus_name; + vendor_id_t vendor; + char * name; enum rule_position position; int min; int max; @@ -110,6 +110,10 @@ struct local_rules_definition { #define PARSE_loc_rules( _rulearray, _parent) { \ int __ar; \ for (__ar=0; __ar < sizeof(_rulearray) / sizeof((_rulearray)[0]); __ar++) { \ + struct dict_avp_request __avp = { \ + .avp_vendor = (_rulearray)[__ar].vendor, \ + .avp_name = (_rulearray)[__ar].name, \ + }; \ struct dict_rule_data __data = { NULL, \ (_rulearray)[__ar].position, \ 0, \ @@ -120,16 +124,15 @@ struct local_rules_definition { fd_g_config->cnf_dict, \ DICT_AVP, \ AVP_BY_NAME_AND_VENDOR, \ - &(_rulearray)[__ar].avp_vendor_plus_name, \ + &__avp, \ &__data.rule_avp, 0 ) ); \ if ( !__data.rule_avp ) { \ - TRACE_DEBUG(INFO, "AVP Not found: '%s'", (_rulearray)[__ar].avp_vendor_plus_name.avp_name); \ + LOG_E( "AVP Not found: '%s'", __avp.avp_name); \ return ENOENT; \ } \ CHECK_FCT_DO( fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &__data, _parent, NULL), \ { \ - TRACE_DEBUG(INFO, "Error on rule with AVP '%s'", \ - (_rulearray)[__ar].avp_vendor_plus_name.avp_name); \ + LOG_E( "Error on rule with AVP '%s'", __avp.avp_name); \ return EINVAL; \ } ); \ } \ @@ -144,7 +147,10 @@ struct local_rules_definition { static int dict_dcca_3gpp_entry(char * conffile) { - /* Applications section */ + /*==================================================================*/ + /* Applications section */ + /*==================================================================*/ + { /* Create the vendors */ { @@ -158,10115 +164,198 @@ static int dict_dcca_3gpp_entry(char * conffile) } + /*==================================================================*/ + /* AVPs section */ + /*==================================================================*/ + + + /* 3GPP Experimental-Result-Code ENUMVAL Unsigned32 */ + /* 3GPP TS 29.230 V15.7.0 (2019-12) section 8.1 */ + { + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_UNSIGNED32, "Enumerated(3GPP/Experimental-Result-Code)", NULL, NULL}; + struct dict_enumval_data tvals[] = { + enumval_def_u32(2001, "DIAMETER_FIRST_REGISTRATION"), + enumval_def_u32(2002, "DIAMETER_SUBSEQUENT_REGISTRATION"), + enumval_def_u32(2003, "DIAMETER_UNREGISTERED_SERVICE"), + /* + * 3GPP TS 29.229 V5.3.0 (2003-03) renamed 2004 from DIAMETER_SUCCESS_NOT SUPPORTED_USER_DATA. + */ + enumval_def_u32(2004, "DIAMETER_SUCCESS_SERVER_NAME_NOT_STORED"), + /* + * 3GPP TS 29.229 V5.3.0 (2003-03) renamed 2005 from DIAMETER_SUCCESS_SERVER_NAME_NOT_STORED. + * 3GPP TS 29.229 V7.2.0 (2006-06) deprecated 2005 DIAMETER_SERVER_SELECTION. + */ + enumval_def_u32(2005, "DIAMETER_SERVER_SELECTION"), + enumval_def_u32(2021, "DIAMETER_PDP_CONTEXT_DELETION_INDICATION"), + enumval_def_u32(2421, "DIAMETER_QOS_FLOW_DELETION_INDICATION"), + enumval_def_u32(4100, "DIAMETER_USER_DATA_NOT_AVAILABLE"), + enumval_def_u32(4101, "DIAMETER_PRIOR_UPDATE_IN_PROGRESS"), + enumval_def_u32(4121, "DIAMETER_ERROR_OUT_OF_RESOURCES"), + enumval_def_u32(4141, "DIAMETER_PCC_BEARER_EVENT"), + enumval_def_u32(4142, "DIAMETER_BEARER_EVENT"), + enumval_def_u32(4143, "DIAMETER_AN_GW_FAILED"), + enumval_def_u32(4144, "DIAMETER_PENDING_TRANSACTION"), + enumval_def_u32(4145, "DIAMETER_UE_STATUS_SUSPEND"), + enumval_def_u32(4181, "DIAMETER_AUTHENTICATION_DATA_UNAVAILABLE"), + enumval_def_u32(4182, "DIAMETER_ERROR_CAMEL_SUBSCRIPTION_PRESENT"), + /* + * DIAMETER_ERROR_ABSENT_USER name conflict between: + * - 3GPP TS 29.173 § 6.3.4.1 DIAMETER_ERROR_ABSENT_USER (4201). (For SLh). + * - 3GPP TS 29.338 § 7.3.3 DIAMETER_ERROR_ABSENT_USER (5550). (For S6c, SGd). + * Rename 4201 from 3GPP TS 29.173 to DIAMETER_ERROR_ABSENT_USER-29.173. + */ + enumval_def_u32(4201, "DIAMETER_ERROR_ABSENT_USER-29.173"), + enumval_def_u32(4221, "DIAMETER_ERROR_UNREACHABLE_USER"), + enumval_def_u32(4222, "DIAMETER_ERROR_SUSPENDED_USER"), + enumval_def_u32(4223, "DIAMETER_ERROR_DETACHED_USER"), + enumval_def_u32(4224, "DIAMETER_ERROR_POSITIONING_DENIED"), + enumval_def_u32(4225, "DIAMETER_ERROR_POSITIONING_FAILED"), + enumval_def_u32(4226, "DIAMETER_ERROR_UNKNOWN_UNREACHABLE LCS_CLIENT"), + enumval_def_u32(4241, "DIAMETER_ERROR_NO_AVAILABLE_POLICY_COUNTERS"), + enumval_def_u32(4261, "REQUESTED_SERVICE_TEMPORARILY_NOT_AUTHORIZED"), + enumval_def_u32(5001, "DIAMETER_ERROR_USER_UNKNOWN"), + enumval_def_u32(5002, "DIAMETER_ERROR_IDENTITIES_DONT_MATCH"), + enumval_def_u32(5003, "DIAMETER_ERROR_IDENTITY_NOT_REGISTERED"), + enumval_def_u32(5004, "DIAMETER_ERROR_ROAMING_NOT_ALLOWED"), + enumval_def_u32(5005, "DIAMETER_ERROR_IDENTITY_ALREADY_REGISTERED"), + enumval_def_u32(5006, "DIAMETER_ERROR_AUTH_SCHEME_NOT_SUPPORTED"), + enumval_def_u32(5007, "DIAMETER_ERROR_IN_ASSIGNMENT_TYPE"), + enumval_def_u32(5008, "DIAMETER_ERROR_TOO_MUCH_DATA"), + enumval_def_u32(5009, "DIAMETER_ERROR_NOT_SUPPORTED_USER_DATA"), + enumval_def_u32(5011, "DIAMETER_ERROR_FEATURE_UNSUPPORTED"), + enumval_def_u32(5012, "DIAMETER_ERROR_SERVING_NODE_FEATURE_UNSUPPORTED"), + enumval_def_u32(5041, "DIAMETER_ERROR_USER_NO_WLAN_SUBSCRIPTION"), + enumval_def_u32(5042, "DIAMETER_ERROR_W-APN_UNUSED_BY_USER"), + enumval_def_u32(5043, "DIAMETER_ERROR_NO_ACCESS_INDEPENDENT_SUBSCRIPTION"), + enumval_def_u32(5044, "DIAMETER_ERROR_USER_NO_W-APN_SUBSCRIPTION"), + enumval_def_u32(5045, "DIAMETER_ERROR_UNSUITABLE_NETWORK"), + enumval_def_u32(5061, "INVALID_SERVICE_INFORMATION"), + enumval_def_u32(5062, "FILTER_RESTRICTIONS"), + enumval_def_u32(5063, "REQUESTED_SERVICE_NOT_AUTHORIZED"), + enumval_def_u32(5064, "DUPLICATED_AF_SESSION"), + enumval_def_u32(5065, "IP-CAN_SESSION_NOT_AVAILABLE"), + enumval_def_u32(5066, "UNAUTHORIZED_NON_EMERGENCY_SESSION"), + enumval_def_u32(5067, "UNAUTHORIZED_SPONSORED_DATA_CONNECTIVITY"), + enumval_def_u32(5068, "TEMPORARY_NETWORK_FAILURE"), + enumval_def_u32(5100, "DIAMETER_ERROR_USER_DATA_NOT_RECOGNIZED"), + enumval_def_u32(5101, "DIAMETER_ERROR_OPERATION_NOT_ALLOWED"), + enumval_def_u32(5102, "DIAMETER_ERROR_USER_DATA_CANNOT_BE_READ"), + enumval_def_u32(5103, "DIAMETER_ERROR_USER_DATA_CANNOT_BE_MODIFIED"), + enumval_def_u32(5104, "DIAMETER_ERROR_USER_DATA_CANNOT_BE_NOTIFIED"), + enumval_def_u32(5105, "DIAMETER_ERROR_TRANSPARENT_DATA OUT_OF_SYNC"), + enumval_def_u32(5106, "DIAMETER_ERROR_SUBS_DATA_ABSENT"), + enumval_def_u32(5107, "DIAMETER_ERROR_NO_SUBSCRIPTION_TO_DATA"), + enumval_def_u32(5108, "DIAMETER_ERROR_DSAI_NOT_AVAILABLE"), + enumval_def_u32(5120, "DIAMETER_ERROR_START_INDICATION"), + enumval_def_u32(5121, "DIAMETER_ERROR_STOP_INDICATION"), + enumval_def_u32(5122, "DIAMETER_ERROR_UNKNOWN_MBMS_BEARER_SERVICE"), + enumval_def_u32(5123, "DIAMETER_ERROR_SERVICE_AREA"), + enumval_def_u32(5140, "DIAMETER_ERROR_INITIAL_PARAMETERS"), + enumval_def_u32(5141, "DIAMETER_ERROR_TRIGGER_EVENT"), + enumval_def_u32(5142, "DIAMETER_PCC_RULE_EVENT"), + enumval_def_u32(5143, "DIAMETER_ERROR_BEARER_NOT_AUTHORIZED"), + enumval_def_u32(5144, "DIAMETER_ERROR_TRAFFIC_MAPPING_INFO_REJECTED"), + enumval_def_u32(5145, "DIAMETER_QOS_RULE_EVENT"), + enumval_def_u32(5147, "DIAMETER_ERROR_CONFLICTING_REQUEST"), + enumval_def_u32(5148, "DIAMETER_ADC_RULE_EVENT"), + enumval_def_u32(5149, "DIAMETER_ERROR_NBIFOM_NOT_AUTHORIZED"), + enumval_def_u32(5401, "DIAMETER_ERROR_IMPI_UNKNOWN"), + enumval_def_u32(5402, "DIAMETER_ERROR_NOT_AUTHORIZED"), + enumval_def_u32(5403, "DIAMETER_ERROR_TRANSACTION_IDENTIFIER_INVALID"), + enumval_def_u32(5420, "DIAMETER_ERROR_UNKNOWN_EPS_SUBSCRIPTION"), + enumval_def_u32(5421, "DIAMETER_ERROR_RAT_NOT_ALLOWED"), + enumval_def_u32(5422, "DIAMETER_ERROR_EQUIPMENT_UNKNOWN"), + enumval_def_u32(5423, "DIAMETER_ERROR_UNKNOWN_SERVING_NODE"), + enumval_def_u32(5450, "DIAMETER_ERROR_USER_NO_NON_3GPP_SUBSCRIPTION"), + enumval_def_u32(5451, "DIAMETER_ERROR_USER_NO_APN_SUBSCRIPTION"), + enumval_def_u32(5452, "DIAMETER_ERROR_RAT_TYPE_NOT_ALLOWED"), + enumval_def_u32(5453, "DIAMETER_ERROR_LATE_OVERLAPPING_REQUEST"), + enumval_def_u32(5454, "DIAMETER_ERROR_TIMED_OUT_REQUEST"), + enumval_def_u32(5470, "DIAMETER_ERROR_SUBSESSION"), + enumval_def_u32(5471, "DIAMETER_ERROR_ONGOING_SESSION_ESTABLISHMENT"), + enumval_def_u32(5490, "DIAMETER_ERROR_UNAUTHORIZED_REQUESTING_NETWORK"), + enumval_def_u32(5510, "DIAMETER_ERROR_UNAUTHORIZED_REQUESTING_ENTITY"), + enumval_def_u32(5511, "DIAMETER_ERROR_UNAUTHORIZED_SERVICE"), + enumval_def_u32(5512, "DIAMETER_ERROR_REQUESTED_RANGE_IS_NOT ALLOWED"), + enumval_def_u32(5513, "DIAMETER_ERROR_CONFIGURATION_EVENT_STORAGE_NOT_SUCCESSFUL"), + enumval_def_u32(5514, "DIAMETER_ERROR_CONFIGURATION_EVENT_NON_EXISTANT"), + enumval_def_u32(5515, "DIAMETER_ERROR_SCEF_REFERENCE_ID_UNKNOWN"), + enumval_def_u32(5530, "DIAMETER_ERROR_INVALID_SME_ADDRESS"), + enumval_def_u32(5531, "DIAMETER_ERROR_SC_CONGESTION"), + enumval_def_u32(5532, "DIAMETER_ERROR_SM_PROTOCOL"), + enumval_def_u32(5533, "DIAMETER_ERROR_TRIGGER_REPLACE_FAILURE"), + enumval_def_u32(5534, "DIAMETER_ERROR_TRIGGER_RECALL_FAILURE"), + enumval_def_u32(5535, "DIAMETER_ERROR_ORIGINAL_MESSAGE_NOT_PENDING"), + enumval_def_u32(5550, "DIAMETER_ERROR_ABSENT_USER"), + enumval_def_u32(5551, "DIAMETER_ERROR_USER_BUSY_FOR_MT_SMS"), + enumval_def_u32(5552, "DIAMETER_ERROR_FACILITY_NOT_SUPPORTED"), + enumval_def_u32(5553, "DIAMETER_ERROR_ILLEGAL_USER"), + enumval_def_u32(5554, "DIAMETER_ERROR_ILLEGAL_EQUIPMENT"), + enumval_def_u32(5555, "DIAMETER_ERROR_SM_DELIVERY_FAILURE"), + enumval_def_u32(5556, "DIAMETER_ERROR_SERVICE_NOT_SUBSCRIBED"), + enumval_def_u32(5557, "DIAMETER_ERROR_SERVICE_BARRED"), + enumval_def_u32(5558, "DIAMETER_ERROR_MWD_LIST_FULL"), + enumval_def_u32(5570, "DIAMETER_ERROR_UNKNOWN_POLICY_COUNTERS"), + enumval_def_u32(5590, "DIAMETER_ERROR_ORIGIN_ALUID_UNKNOWN"), + enumval_def_u32(5591, "DIAMETER_ERROR_TARGET_ALUID_UNKNOWN"), + enumval_def_u32(5592, "DIAMETER_ERROR_PFID_UNKNOWN"), + enumval_def_u32(5593, "DIAMETER_ERROR_APP_REGISTER_REJECT"), + enumval_def_u32(5594, "DIAMETER_ERROR_PROSE_MAP_REQUEST_DISALLOWED"), + enumval_def_u32(5595, "DIAMETER_ERROR_MAP_REQUEST_REJECT"), + enumval_def_u32(5596, "DIAMETER_ERROR_REQUESTING_RPAUID_UNKNOWN"), + enumval_def_u32(5597, "DIAMETER_ERROR_UNKNOWN_OR_INVALID_TARGET_SET"), + enumval_def_u32(5598, "DIAMETER_ERROR_MISSING_APPLICATION_DATA"), + enumval_def_u32(5599, "DIAMETER_ERROR_AUTHORIZATION_REJECT"), + enumval_def_u32(5600, "DIAMETER_ERROR_DISCOVERY_NOT_PERMITTED"), + enumval_def_u32(5601, "DIAMETER_ERROR_TARGET_RPAUID_UNKNOWN"), + enumval_def_u32(5602, "DIAMETER_ERROR_INVALID_APPLICATION_DATA"), + enumval_def_u32(5610, "DIAMETER_ERROR_UNKNOWN_PROSE_SUBSCRIPTION"), + enumval_def_u32(5611, "DIAMETER_ERROR_PROSE_NOT_ALLOWED"), + enumval_def_u32(5612, "DIAMETER_ERROR_UE_LOCATION_UNKNOWN"), + enumval_def_u32(5630, "DIAMETER_ERROR_NO_ASSOCIATED_DISCOVERY_FILTER"), + enumval_def_u32(5631, "DIAMETER_ERROR_ANNOUNCING_UNAUTHORIZED_IN_PLMN"), + enumval_def_u32(5632, "DIAMETER_ERROR_INVALID_APPLICATION_CODE"), + enumval_def_u32(5633, "DIAMETER_ERROR_PROXIMITY_UNAUTHORIZED"), + enumval_def_u32(5634, "DIAMETER_ERROR_PROXIMITY_REJECTED"), + enumval_def_u32(5635, "DIAMETER_ERROR_NO_PROXIMITY_REQUEST"), + enumval_def_u32(5636, "DIAMETER_ERROR_UNAUTHORIZED_SERVICE_IN_THIS_PLMN"), + enumval_def_u32(5637, "DIAMETER_ERROR_PROXIMITY_CANCELLED"), + enumval_def_u32(5638, "DIAMETER_ERROR_INVALID_TARGET_PDUID"), + enumval_def_u32(5639, "DIAMETER_ERROR_INVALID_TARGET_RPAUID"), + enumval_def_u32(5640, "DIAMETER_ERROR_NO_ASSOCIATED_RESTRICTED_CODE"), + enumval_def_u32(5641, "DIAMETER_ERROR_INVALID_DISCOVERY_TYPE"), + enumval_def_u32(5650, "DIAMETER_ERROR_REQUESTED_LOCATION_NOT_SERVED"), + enumval_def_u32(5651, "DIAMETER_ERROR_INVALID_EPS_BEARER"), + enumval_def_u32(5652, "DIAMETER_ERROR_NIDD_CONFIGURATION_NOT_AVAILABLE"), + enumval_def_u32(5653, "DIAMETER_ERROR_USER_TEMPORARILY_UNREACHABLE"), + enumval_def_u32(5670, "DIAMETER_ERROR_UNKNKOWN_DATA"), + enumval_def_u32(5671, "DIAMETER_ERROR_REQUIRED_KEY_NOT_PROVIDED"), + enumval_def_u32(5690, "DIAMETER_ERROR_UNKNOWN_V2X_SUBSCRIPTION"), + enumval_def_u32(5691, "DIAMETER_ERROR_V2X_NOT_ALLOWED"), + }; + int i; + /* Create the Enumerated type and enumerated values */ + CHECK_dict_new( DICT_TYPE, &tdata , NULL, &type); + for (i = 0; i < sizeof(tvals) / sizeof(tvals[0]); i++) { + CHECK_dict_new( DICT_ENUMVAL, &tvals[i], type, NULL); + } + } - struct dict_object * Address_type; - struct dict_object * DiameterIdentity_type; - struct dict_object * DiameterURI_type; - struct dict_object * IPFilterRule_type; - struct dict_object * Time_type; - struct dict_object * UTF8String_type; - - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type); - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type); - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type); - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type); - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type); - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type); - - - /* The following is created automatically. Do not modify. */ - /* Changes will be lost during the next update. Modify the source org file instead. */ - - /* 3GPP 29.061-c00 (12.0.0 2012.12.20) */ - /* 3GPP 29.061 is not very clear and self-inconsistent about M */ - /* for this reason, other sources are assumed more trustworthy */ - /* M inconsistently specified */ - /* 3GPP-IMSI */ - { - struct dict_avp_data data = { - 1, /* Code */ - 10415, /* Vendor */ - "3GPP-IMSI", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* 29.061 says OctetString; dumps say UInt32; manually changed */ - /* 29.061 says MUST NOT M; dumps say MUST */ - /* 3GPP-Charging-Id */ - { - struct dict_avp_data data = { - 2, /* Code */ - 10415, /* Vendor */ - "3GPP-Charging-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 29.061 says MUST NOT M; dumps say MUST */ - /* 3GPP-PDP-Type */ - { - struct dict_avp_data data = { - 3, /* Code */ - 10415, /* Vendor */ - "3GPP-PDP-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/3GPP-PDP-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* 3GPP-CG-Address */ - { - struct dict_avp_data data = { - 4, /* Code */ - 10415, /* Vendor */ - "3GPP-CG-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ - /* 3GPP-GPRS-Negotiated-QoS-Profile */ - { - struct dict_avp_data data = { - 5, /* Code */ - 10415, /* Vendor */ - "3GPP-GPRS-Negotiated-QoS-Profile", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* M inconsistently specified; old contrib/3gg says MUST NOT */ - /* 3GPP-SGSN-Address */ - { - struct dict_avp_data data = { - 6, /* Code */ - 10415, /* Vendor */ - "3GPP-SGSN-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 3GPP-GGSN-Address */ - { - struct dict_avp_data data = { - 7, /* Code */ - 10415, /* Vendor */ - "3GPP-GGSN-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 29.061 says MUST NOT M; dumps say MUST */ - /* 3GPP-IMSI-MCC-MNC */ - { - struct dict_avp_data data = { - 8, /* Code */ - 10415, /* Vendor */ - "3GPP-IMSI-MCC-MNC", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ - /* 3GPP-GGSN-MCC-MNC */ - { - struct dict_avp_data data = { - 9, /* Code */ - 10415, /* Vendor */ - "3GPP-GGSN-MCC-MNC", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ - /* 3GPP-NSAPI */ - { - struct dict_avp_data data = { - 10, /* Code */ - 10415, /* Vendor */ - "3GPP-NSAPI", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* added manually, missing in AVP table */ - /* 3GPP-Session-Stop-Indicator */ - { - struct dict_avp_data data = { - 11, /* Code */ - 10415, /* Vendor */ - "3GPP-Session-Stop-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ - /* 3GPP-Selection-Mode */ - { - struct dict_avp_data data = { - 12, /* Code */ - 10415, /* Vendor */ - "3GPP-Selection-Mode", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ - /* 3GPP-Charging-Characteristics */ - { - struct dict_avp_data data = { - 13, /* Code */ - 10415, /* Vendor */ - "3GPP-Charging-Characteristics", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ - /* 3GPP-CG-IPv6-Address */ - { - struct dict_avp_data data = { - 14, /* Code */ - 10415, /* Vendor */ - "3GPP-CG-IPv6-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* M inconsistently specified */ - /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ - /* 3GPP-SGSN-IPv6-Address */ - { - struct dict_avp_data data = { - 15, /* Code */ - 10415, /* Vendor */ - "3GPP-SGSN-IPv6-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ - /* 3GPP-GGSN-IPv6-Address */ - { - struct dict_avp_data data = { - 16, /* Code */ - 10415, /* Vendor */ - "3GPP-GGSN-IPv6-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ - /* 3GPP-IPv6-DNS-Servers */ - { - struct dict_avp_data data = { - 17, /* Code */ - 10415, /* Vendor */ - "3GPP-IPv6-DNS-Servers", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 29.061 says MUST NOT M; old contrib/3gpp says MUST */ - /* 3GPP-SGSN-MCC-MNC */ - { - struct dict_avp_data data = { - 18, /* Code */ - 10415, /* Vendor */ - "3GPP-SGSN-MCC-MNC", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* M inconsistently specified */ - /* 3GPP-IMEISV */ - { - struct dict_avp_data data = { - 20, /* Code */ - 10415, /* Vendor */ - "3GPP-IMEISV", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* M inconsistently specified */ - /* 3GPP-RAT-Type */ - { - struct dict_avp_data data = { - 21, /* Code */ - 10415, /* Vendor */ - "3GPP-RAT-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* M inconsistently specified */ - /* 3GPP-User-Location-Info */ - { - struct dict_avp_data data = { - 22, /* Code */ - 10415, /* Vendor */ - "3GPP-User-Location-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* M inconsistently specified */ - /* 3GPP-MS-TimeZone */ - { - struct dict_avp_data data = { - 23, /* Code */ - 10415, /* Vendor */ - "3GPP-MS-TimeZone", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 3GPP-CAMEL-Charging-Info */ - { - struct dict_avp_data data = { - 24, /* Code */ - 10415, /* Vendor */ - "3GPP-CAMEL-Charging-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 3GPP-Packet-Filter */ - { - struct dict_avp_data data = { - 25, /* Code */ - 10415, /* Vendor */ - "3GPP-Packet-Filter", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 3GPP-Negotiated-DSCP */ - { - struct dict_avp_data data = { - 26, /* Code */ - 10415, /* Vendor */ - "3GPP-Negotiated-DSCP", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 3GPP-Allocate-IP-Type */ - { - struct dict_avp_data data = { - 27, /* Code */ - 10415, /* Vendor */ - "3GPP-Allocate-IP-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* added manually, missing in AVP table */ - /* External-Identifier */ - { - struct dict_avp_data data = { - 28, /* Code */ - 10415, /* Vendor */ - "External-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* TMGI */ - { - struct dict_avp_data data = { - 900, /* Code */ - 10415, /* Vendor */ - "TMGI", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Required-MBMS-Bearer-Capabilities */ - { - struct dict_avp_data data = { - 901, /* Code */ - 10415, /* Vendor */ - "Required-MBMS-Bearer-Capabilities", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* MBMS-StartStop-Indication */ - { - struct dict_avp_data data = { - 902, /* Code */ - 10415, /* Vendor */ - "MBMS-StartStop-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-StartStop-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MBMS-Service-Area */ - { - struct dict_avp_data data = { - 903, /* Code */ - 10415, /* Vendor */ - "MBMS-Service-Area", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MBMS-Session-Duration */ - { - struct dict_avp_data data = { - 904, /* Code */ - 10415, /* Vendor */ - "MBMS-Session-Duration", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Alternative-APN */ - { - struct dict_avp_data data = { - 905, /* Code */ - 10415, /* Vendor */ - "Alternative-APN", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* MBMS-Service-Type */ - { - struct dict_avp_data data = { - 906, /* Code */ - 10415, /* Vendor */ - "MBMS-Service-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Service-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MBMS-2G-3G-Indicator */ - { - struct dict_avp_data data = { - 907, /* Code */ - 10415, /* Vendor */ - "MBMS-2G-3G-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-2G-3G-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MBMS-Session-Identity */ - { - struct dict_avp_data data = { - 908, /* Code */ - 10415, /* Vendor */ - "MBMS-Session-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* RAI */ - { - struct dict_avp_data data = { - 909, /* Code */ - 10415, /* Vendor */ - "RAI", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Additional-MBMS-Trace-Info */ - { - struct dict_avp_data data = { - 910, /* Code */ - 10415, /* Vendor */ - "Additional-MBMS-Trace-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MBMS-Time-To-Data-Transfer */ - { - struct dict_avp_data data = { - 911, /* Code */ - 10415, /* Vendor */ - "MBMS-Time-To-Data-Transfer", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MBMS-Session-Repetition-Number */ - { - struct dict_avp_data data = { - 912, /* Code */ - 10415, /* Vendor */ - "MBMS-Session-Repetition-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MBMS-Required-QoS */ - { - struct dict_avp_data data = { - 913, /* Code */ - 10415, /* Vendor */ - "MBMS-Required-QoS", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* MBMS-Counting-Information */ - { - struct dict_avp_data data = { - 914, /* Code */ - 10415, /* Vendor */ - "MBMS-Counting-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-Counting-Information)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MBMS-User-Data-Mode-Indication */ - { - struct dict_avp_data data = { - 915, /* Code */ - 10415, /* Vendor */ - "MBMS-User-Data-Mode-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-User-Data-Mode-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MBMS-GGSN-Address */ - { - struct dict_avp_data data = { - 916, /* Code */ - 10415, /* Vendor */ - "MBMS-GGSN-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MBMS-GGSN-IPv6-Address */ - { - struct dict_avp_data data = { - 917, /* Code */ - 10415, /* Vendor */ - "MBMS-GGSN-IPv6-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MBMS-BMSC-SSM-IP-Address */ - { - struct dict_avp_data data = { - 918, /* Code */ - 10415, /* Vendor */ - "MBMS-BMSC-SSM-IP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MBMS-BMSC-SSM-IPv6-Address */ - { - struct dict_avp_data data = { - 919, /* Code */ - 10415, /* Vendor */ - "MBMS-BMSC-SSM-IPv6-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MBMS-Flow-Identifier */ - { - struct dict_avp_data data = { - 920, /* Code */ - 10415, /* Vendor */ - "MBMS-Flow-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* CN-IP-Multicast-Distribution */ - { - struct dict_avp_data data = { - 921, /* Code */ - 10415, /* Vendor */ - "CN-IP-Multicast-Distribution", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CN-IP-Multicast-Distribution)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MBMS-HC-Indicator */ - { - struct dict_avp_data data = { - 922, /* Code */ - 10415, /* Vendor */ - "MBMS-HC-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-HC-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* 3GPP 29.140-700 (7.0.0 2007.07.05) */ - /* Served-User-Identity */ - { - struct dict_avp_data data = { - 1100, /* Code */ - 10415, /* Vendor */ - "Served-User-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* reuses: MSISDN */ - /* VASP-ID */ - { - struct dict_avp_data data = { - 1101, /* Code */ - 10415, /* Vendor */ - "VASP-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* VAS-ID */ - { - struct dict_avp_data data = { - 1102, /* Code */ - 10415, /* Vendor */ - "VAS-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Trigger-Event */ - { - struct dict_avp_data data = { - 1103, /* Code */ - 10415, /* Vendor */ - "Trigger-Event", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trigger-Event)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* reuses: 3GPP-IMSI */ - /* Sender-Address */ - { - struct dict_avp_data data = { - 1104, /* Code */ - 10415, /* Vendor */ - "Sender-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Initial-Recipient-Address */ - { - struct dict_avp_data data = { - 1105, /* Code */ - 10415, /* Vendor */ - "Initial-Recipient-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Result-Recipient-Address */ - { - struct dict_avp_data data = { - 1106, /* Code */ - 10415, /* Vendor */ - "Result-Recipient-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* conflicts with one in (more common) 32.329 */ - /* Sequence-Number-29.140 */ - { - struct dict_avp_data data = { - 1107, /* Code */ - 10415, /* Vendor */ - "Sequence-Number-29.140", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* conflicts with one in (more common) 32.299 */ - /* Recipient-Address-29.140 */ - { - struct dict_avp_data data = { - 1108, /* Code */ - 10415, /* Vendor */ - "Recipient-Address-29.140", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Routeing-Address */ - { - struct dict_avp_data data = { - 1109, /* Code */ - 10415, /* Vendor */ - "Routeing-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Originating-Interface */ - { - struct dict_avp_data data = { - 1110, /* Code */ - 10415, /* Vendor */ - "Originating-Interface", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originating-Interface)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Delivery-Report */ - { - struct dict_avp_data data = { - 1111, /* Code */ - 10415, /* Vendor */ - "Delivery-Report", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Delivery-Report)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Read-Reply */ - { - struct dict_avp_data data = { - 1112, /* Code */ - 10415, /* Vendor */ - "Read-Reply", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Read-Reply)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Sender-Visibility */ - { - struct dict_avp_data data = { - 1113, /* Code */ - 10415, /* Vendor */ - "Sender-Visibility", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Sender-Visibility)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Service-Key */ - { - struct dict_avp_data data = { - 1114, /* Code */ - 10415, /* Vendor */ - "Service-Key", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Billing-Information */ - { - struct dict_avp_data data = { - 1115, /* Code */ - 10415, /* Vendor */ - "Billing-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* conflicts with one in (more common) 32.299 */ - /* Status-29.140 */ - { - struct dict_avp_data data = { - 1116, /* Code */ - 10415, /* Vendor */ - "Status-29.140", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Status-Code */ - { - struct dict_avp_data data = { - 1117, /* Code */ - 10415, /* Vendor */ - "Status-Code", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Status-Text */ - { - struct dict_avp_data data = { - 1118, /* Code */ - 10415, /* Vendor */ - "Status-Text", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Routeing-Address-Resolution */ - { - struct dict_avp_data data = { - 1119, /* Code */ - 10415, /* Vendor */ - "Routeing-Address-Resolution", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Routeing-Address-Resolution)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* 3GPP 29.173-c00 (12.0.0 2013.03.13) */ - /* LMSI */ - { - struct dict_avp_data data = { - 2400, /* Code */ - 10415, /* Vendor */ - "LMSI", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Serving-Node */ - { - struct dict_avp_data data = { - 2401, /* Code */ - 10415, /* Vendor */ - "Serving-Node", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MME-Name */ - { - struct dict_avp_data data = { - 2402, /* Code */ - 10415, /* Vendor */ - "MME-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); - }; - - /* MSC-Number */ - { - struct dict_avp_data data = { - 2403, /* Code */ - 10415, /* Vendor */ - "MSC-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* LCS-Capabilities-Sets */ - { - struct dict_avp_data data = { - 2404, /* Code */ - 10415, /* Vendor */ - "LCS-Capabilities-Sets", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* GMLC-Address */ - { - struct dict_avp_data data = { - 2405, /* Code */ - 10415, /* Vendor */ - "GMLC-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Additional-Serving-Node */ - { - struct dict_avp_data data = { - 2406, /* Code */ - 10415, /* Vendor */ - "Additional-Serving-Node", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PPR-Address */ - { - struct dict_avp_data data = { - 2407, /* Code */ - 10415, /* Vendor */ - "PPR-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* MME-Realm */ - { - struct dict_avp_data data = { - 2408, /* Code */ - 10415, /* Vendor */ - "MME-Realm", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); - }; - - /* SGSN-Name */ - { - struct dict_avp_data data = { - 2409, /* Code */ - 10415, /* Vendor */ - "SGSN-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); - }; - - /* SGSN-Realm */ - { - struct dict_avp_data data = { - 2410, /* Code */ - 10415, /* Vendor */ - "SGSN-Realm", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); - }; - - /* 3GPP 29.210-670 (6.7.0 2006-12-18) */ - /* PDP-Session-Operation */ - { - struct dict_avp_data data = { - 1015, /* Code */ - 10415, /* Vendor */ - "PDP-Session-Operation", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDP-Session-Operation)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* 3GPP 29.212-c00 (12.0.0 2013.03.15) */ - /* Gx-specific */ - /* ADC-Revalidation-Time */ - { - struct dict_avp_data data = { - 2801, /* Code */ - 10415, /* Vendor */ - "ADC-Revalidation-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* ADC-Rule-Install */ - { - struct dict_avp_data data = { - 1092, /* Code */ - 10415, /* Vendor */ - "ADC-Rule-Install", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* ADC-Rule-Remove */ - { - struct dict_avp_data data = { - 1093, /* Code */ - 10415, /* Vendor */ - "ADC-Rule-Remove", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* ADC-Rule-Definition */ - { - struct dict_avp_data data = { - 1094, /* Code */ - 10415, /* Vendor */ - "ADC-Rule-Definition", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* ADC-Rule-Base-Name */ - { - struct dict_avp_data data = { - 1095, /* Code */ - 10415, /* Vendor */ - "ADC-Rule-Base-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* ADC-Rule-Name */ - { - struct dict_avp_data data = { - 1096, /* Code */ - 10415, /* Vendor */ - "ADC-Rule-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* ADC-Rule-Report */ - { - struct dict_avp_data data = { - 1097, /* Code */ - 10415, /* Vendor */ - "ADC-Rule-Report", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Application-Detection-Information */ - { - struct dict_avp_data data = { - 1098, /* Code */ - 10415, /* Vendor */ - "Application-Detection-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Access-Network-Charging-Identifier-Gx */ - { - struct dict_avp_data data = { - 1022, /* Code */ - 10415, /* Vendor */ - "Access-Network-Charging-Identifier-Gx", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Allocation-Retention-Priority */ - { - struct dict_avp_data data = { - 1034, /* Code */ - 10415, /* Vendor */ - "Allocation-Retention-Priority", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* AN-GW-Address */ - { - struct dict_avp_data data = { - 1050, /* Code */ - 10415, /* Vendor */ - "AN-GW-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* APN-Aggregate-Max-Bitrate-DL */ - { - struct dict_avp_data data = { - 1040, /* Code */ - 10415, /* Vendor */ - "APN-Aggregate-Max-Bitrate-DL", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* APN-Aggregate-Max-Bitrate-UL */ - { - struct dict_avp_data data = { - 1041, /* Code */ - 10415, /* Vendor */ - "APN-Aggregate-Max-Bitrate-UL", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Bearer-Control-Mode */ - { - struct dict_avp_data data = { - 1023, /* Code */ - 10415, /* Vendor */ - "Bearer-Control-Mode", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Control-Mode)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Bearer-Identifier */ - { - struct dict_avp_data data = { - 1020, /* Code */ - 10415, /* Vendor */ - "Bearer-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Bearer-Operation */ - { - struct dict_avp_data data = { - 1021, /* Code */ - 10415, /* Vendor */ - "Bearer-Operation", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Operation)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Bearer-Usage */ - { - struct dict_avp_data data = { - 1000, /* Code */ - 10415, /* Vendor */ - "Bearer-Usage", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Bearer-Usage)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Charging-Rule-Install */ - { - struct dict_avp_data data = { - 1001, /* Code */ - 10415, /* Vendor */ - "Charging-Rule-Install", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Charging-Rule-Remove */ - { - struct dict_avp_data data = { - 1002, /* Code */ - 10415, /* Vendor */ - "Charging-Rule-Remove", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Charging-Rule-Definition */ - { - struct dict_avp_data data = { - 1003, /* Code */ - 10415, /* Vendor */ - "Charging-Rule-Definition", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Charging-Rule-Base-Name */ - { - struct dict_avp_data data = { - 1004, /* Code */ - 10415, /* Vendor */ - "Charging-Rule-Base-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Charging-Rule-Name */ - { - struct dict_avp_data data = { - 1005, /* Code */ - 10415, /* Vendor */ - "Charging-Rule-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Charging-Rule-Report */ - { - struct dict_avp_data data = { - 1018, /* Code */ - 10415, /* Vendor */ - "Charging-Rule-Report", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Charging-Correlation-Indicator */ - { - struct dict_avp_data data = { - 1073, /* Code */ - 10415, /* Vendor */ - "Charging-Correlation-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charging-Correlation-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* CoA-IP-Address */ - { - struct dict_avp_data data = { - 1035, /* Code */ - 10415, /* Vendor */ - "CoA-IP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* CoA-Information */ - { - struct dict_avp_data data = { - 1039, /* Code */ - 10415, /* Vendor */ - "CoA-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* CSG-Information-Reporting */ - { - struct dict_avp_data data = { - 1071, /* Code */ - 10415, /* Vendor */ - "CSG-Information-Reporting", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Information-Reporting)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Default-EPS-Bearer-QoS */ - { - struct dict_avp_data data = { - 1049, /* Code */ - 10415, /* Vendor */ - "Default-EPS-Bearer-QoS", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Event-Report-Indication */ - { - struct dict_avp_data data = { - 1033, /* Code */ - 10415, /* Vendor */ - "Event-Report-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Event-Trigger */ - { - struct dict_avp_data data = { - 1006, /* Code */ - 10415, /* Vendor */ - "Event-Trigger", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Event-Trigger)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Flow-Direction */ - { - struct dict_avp_data data = { - 1080, /* Code */ - 10415, /* Vendor */ - "Flow-Direction", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Direction)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Flow-Information */ - { - struct dict_avp_data data = { - 1058, /* Code */ - 10415, /* Vendor */ - "Flow-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Flow-Label */ - { - struct dict_avp_data data = { - 1057, /* Code */ - 10415, /* Vendor */ - "Flow-Label", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* IP-CAN-Type */ - { - struct dict_avp_data data = { - 1027, /* Code */ - 10415, /* Vendor */ - "IP-CAN-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IP-CAN-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Guaranteed-Bitrate-DL */ - { - struct dict_avp_data data = { - 1025, /* Code */ - 10415, /* Vendor */ - "Guaranteed-Bitrate-DL", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Guaranteed-Bitrate-UL */ - { - struct dict_avp_data data = { - 1026, /* Code */ - 10415, /* Vendor */ - "Guaranteed-Bitrate-UL", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* HeNB-Local-IP-Address */ - { - struct dict_avp_data data = { - 2804, /* Code */ - 10415, /* Vendor */ - "HeNB-Local-IP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Metering-Method */ - { - struct dict_avp_data data = { - 1007, /* Code */ - 10415, /* Vendor */ - "Metering-Method", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Metering-Method)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Monitoring-Key */ - { - struct dict_avp_data data = { - 1066, /* Code */ - 10415, /* Vendor */ - "Monitoring-Key", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Mute-Notification */ - { - struct dict_avp_data data = { - 2809, /* Code */ - 10415, /* Vendor */ - "Mute-Notification", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Mute-Notification)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Monitoring-Time */ - { - struct dict_avp_data data = { - 2810, /* Code */ - 10415, /* Vendor */ - "Monitoring-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Network-Request-Support */ - { - struct dict_avp_data data = { - 1024, /* Code */ - 10415, /* Vendor */ - "Network-Request-Support", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Network-Request-Support)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Offline */ - { - struct dict_avp_data data = { - 1008, /* Code */ - 10415, /* Vendor */ - "Offline", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Offline)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Online */ - { - struct dict_avp_data data = { - 1009, /* Code */ - 10415, /* Vendor */ - "Online", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Online)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Packet-Filter-Content */ - { - struct dict_avp_data data = { - 1059, /* Code */ - 10415, /* Vendor */ - "Packet-Filter-Content", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); - }; - - /* Packet-Filter-Identifier */ - { - struct dict_avp_data data = { - 1060, /* Code */ - 10415, /* Vendor */ - "Packet-Filter-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Packet-Filter-Information */ - { - struct dict_avp_data data = { - 1061, /* Code */ - 10415, /* Vendor */ - "Packet-Filter-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Packet-Filter-Operation */ - { - struct dict_avp_data data = { - 1062, /* Code */ - 10415, /* Vendor */ - "Packet-Filter-Operation", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Packet-Filter-Operation)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Packet-Filter-Usage */ - { - struct dict_avp_data data = { - 1072, /* Code */ - 10415, /* Vendor */ - "Packet-Filter-Usage", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Packet-Filter-Usage)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PDN-Connection-ID */ - { - struct dict_avp_data data = { - 1065, /* Code */ - 10415, /* Vendor */ - "PDN-Connection-ID", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Precedence */ - { - struct dict_avp_data data = { - 1010, /* Code */ - 10415, /* Vendor */ - "Precedence", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Pre-emption-Capability */ - { - struct dict_avp_data data = { - 1047, /* Code */ - 10415, /* Vendor */ - "Pre-emption-Capability", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pre-emption-Capability)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Pre-emption-Vulnerability */ - { - struct dict_avp_data data = { - 1048, /* Code */ - 10415, /* Vendor */ - "Pre-emption-Vulnerability", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Pre-emption-Vulnerability)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Priority-Level */ - { - struct dict_avp_data data = { - 1046, /* Code */ - 10415, /* Vendor */ - "Priority-Level", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Redirect-Information */ - { - struct dict_avp_data data = { - 1085, /* Code */ - 10415, /* Vendor */ - "Redirect-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Redirect-Support */ - { - struct dict_avp_data data = { - 1086, /* Code */ - 10415, /* Vendor */ - "Redirect-Support", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Redirect-Support)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Reporting-Level */ - { - struct dict_avp_data data = { - 1011, /* Code */ - 10415, /* Vendor */ - "Reporting-Level", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reporting-Level)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Routing-Filter */ - { - struct dict_avp_data data = { - 1078, /* Code */ - 10415, /* Vendor */ - "Routing-Filter", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Routing-IP-Address */ - { - struct dict_avp_data data = { - 1079, /* Code */ - 10415, /* Vendor */ - "Routing-IP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Routing-Rule-Definition */ - { - struct dict_avp_data data = { - 1076, /* Code */ - 10415, /* Vendor */ - "Routing-Rule-Definition", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Routing-Rule-Identifier */ - { - struct dict_avp_data data = { - 1077, /* Code */ - 10415, /* Vendor */ - "Routing-Rule-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Routing-Rule-Install */ - { - struct dict_avp_data data = { - 1081, /* Code */ - 10415, /* Vendor */ - "Routing-Rule-Install", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Routing-Rule-Remove */ - { - struct dict_avp_data data = { - 1075, /* Code */ - 10415, /* Vendor */ - "Routing-Rule-Remove", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PCC-Rule-Status */ - { - struct dict_avp_data data = { - 1019, /* Code */ - 10415, /* Vendor */ - "PCC-Rule-Status", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PCC-Rule-Status)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Session-Release-Cause */ - { - struct dict_avp_data data = { - 1045, /* Code */ - 10415, /* Vendor */ - "Session-Release-Cause", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Release-Cause)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* TDF-Information */ - { - struct dict_avp_data data = { - 1087, /* Code */ - 10415, /* Vendor */ - "TDF-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* TDF-Application-Identifier */ - { - struct dict_avp_data data = { - 1088, /* Code */ - 10415, /* Vendor */ - "TDF-Application-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* TDF-Application-Instance-Identifier */ - { - struct dict_avp_data data = { - 2802, /* Code */ - 10415, /* Vendor */ - "TDF-Application-Instance-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* TDF-Destination-Host */ - { - struct dict_avp_data data = { - 1089, /* Code */ - 10415, /* Vendor */ - "TDF-Destination-Host", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); - }; - - /* TDF-Destination-Realm */ - { - struct dict_avp_data data = { - 1090, /* Code */ - 10415, /* Vendor */ - "TDF-Destination-Realm", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, DiameterIdentity_type, NULL); - }; - - /* TDF-IP-Address */ - { - struct dict_avp_data data = { - 1091, /* Code */ - 10415, /* Vendor */ - "TDF-IP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* QoS-Class-Identifier */ - { - struct dict_avp_data data = { - 1028, /* Code */ - 10415, /* Vendor */ - "QoS-Class-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Class-Identifier)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* QoS-Information */ - { - struct dict_avp_data data = { - 1016, /* Code */ - 10415, /* Vendor */ - "QoS-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* QoS-Negotiation */ - { - struct dict_avp_data data = { - 1029, /* Code */ - 10415, /* Vendor */ - "QoS-Negotiation", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Negotiation)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* QoS-Upgrade */ - { - struct dict_avp_data data = { - 1030, /* Code */ - 10415, /* Vendor */ - "QoS-Upgrade", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/QoS-Upgrade)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PS-to-CS-Session-Continuity */ - { - struct dict_avp_data data = { - 1099, /* Code */ - 10415, /* Vendor */ - "PS-to-CS-Session-Continuity", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PS-to-CS-Session-Continuity)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Resource-Allocation-Notification */ - { - struct dict_avp_data data = { - 1063, /* Code */ - 10415, /* Vendor */ - "Resource-Allocation-Notification", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Resource-Allocation-Notification)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Rule-Failure-Code */ - { - struct dict_avp_data data = { - 1031, /* Code */ - 10415, /* Vendor */ - "Rule-Failure-Code", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Rule-Failure-Code)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Security-Parameter-Index */ - { - struct dict_avp_data data = { - 1056, /* Code */ - 10415, /* Vendor */ - "Security-Parameter-Index", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* TFT-Filter */ - { - struct dict_avp_data data = { - 1012, /* Code */ - 10415, /* Vendor */ - "TFT-Filter", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); - }; - - /* TFT-Packet-Filter-Information */ - { - struct dict_avp_data data = { - 1013, /* Code */ - 10415, /* Vendor */ - "TFT-Packet-Filter-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* ToS-Traffic-Class */ - { - struct dict_avp_data data = { - 1014, /* Code */ - 10415, /* Vendor */ - "ToS-Traffic-Class", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Tunnel-Header-Filter */ - { - struct dict_avp_data data = { - 1036, /* Code */ - 10415, /* Vendor */ - "Tunnel-Header-Filter", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); - }; - - /* Tunnel-Header-Length */ - { - struct dict_avp_data data = { - 1037, /* Code */ - 10415, /* Vendor */ - "Tunnel-Header-Length", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Tunnel-Information */ - { - struct dict_avp_data data = { - 1038, /* Code */ - 10415, /* Vendor */ - "Tunnel-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* RAT-Type */ - { - struct dict_avp_data data = { - 1032, /* Code */ - 10415, /* Vendor */ - "RAT-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/RAT-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Revalidation-Time */ - { - struct dict_avp_data data = { - 1042, /* Code */ - 10415, /* Vendor */ - "Revalidation-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Rule-Activation-Time */ - { - struct dict_avp_data data = { - 1043, /* Code */ - 10415, /* Vendor */ - "Rule-Activation-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* UDP-Source-Port */ - { - struct dict_avp_data data = { - 2806, /* Code */ - 10415, /* Vendor */ - "UDP-Source-Port", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* UE-Local-IP-Address */ - { - struct dict_avp_data data = { - 2805, /* Code */ - 10415, /* Vendor */ - "UE-Local-IP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Usage-Monitoring-Information */ - { - struct dict_avp_data data = { - 1067, /* Code */ - 10415, /* Vendor */ - "Usage-Monitoring-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Rule-Deactivation-Time */ - { - struct dict_avp_data data = { - 1044, /* Code */ - 10415, /* Vendor */ - "Rule-Deactivation-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Usage-Monitoring-Level */ - { - struct dict_avp_data data = { - 1068, /* Code */ - 10415, /* Vendor */ - "Usage-Monitoring-Level", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Level)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Usage-Monitoring-Report */ - { - struct dict_avp_data data = { - 1069, /* Code */ - 10415, /* Vendor */ - "Usage-Monitoring-Report", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Report)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Usage-Monitoring-Support */ - { - struct dict_avp_data data = { - 1070, /* Code */ - 10415, /* Vendor */ - "Usage-Monitoring-Support", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Usage-Monitoring-Support)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Gxx-specific */ - /* QoS-Rule-Install */ - { - struct dict_avp_data data = { - 1051, /* Code */ - 10415, /* Vendor */ - "QoS-Rule-Install", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* QoS-Rule-Remove */ - { - struct dict_avp_data data = { - 1052, /* Code */ - 10415, /* Vendor */ - "QoS-Rule-Remove", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* QoS-Rule-Definition */ - { - struct dict_avp_data data = { - 1053, /* Code */ - 10415, /* Vendor */ - "QoS-Rule-Definition", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* QoS-Rule-Name */ - { - struct dict_avp_data data = { - 1054, /* Code */ - 10415, /* Vendor */ - "QoS-Rule-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* QoS-Rule-Base-Name */ - { - struct dict_avp_data data = { - 1074, /* Code */ - 10415, /* Vendor */ - "QoS-Rule-Base-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* QoS-Rule-Report */ - { - struct dict_avp_data data = { - 1055, /* Code */ - 10415, /* Vendor */ - "QoS-Rule-Report", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Session-Linking-Indicator */ - { - struct dict_avp_data data = { - 1064, /* Code */ - 10415, /* Vendor */ - "Session-Linking-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Linking-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* S15-specific */ - /* CS-Service-Qos-Request-Identifier */ - { - struct dict_avp_data data = { - 2807, /* Code */ - 10415, /* Vendor */ - "CS-Service-Qos-Request-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* CS-Service-QoS-Request-Operation */ - { - struct dict_avp_data data = { - 2808, /* Code */ - 10415, /* Vendor */ - "CS-Service-QoS-Request-Operation", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CS-Service-QoS-Request-Operation)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* 3GPP 29.214-b80 (11.8.0 2013.03.15) */ - /* Abort-Cause */ - { - struct dict_avp_data data = { - 500, /* Code */ - 10415, /* Vendor */ - "Abort-Cause", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Abort-Cause)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Access-Network-Charging-Address */ - { - struct dict_avp_data data = { - 501, /* Code */ - 10415, /* Vendor */ - "Access-Network-Charging-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Access-Network-Charging-Identifier */ - { - struct dict_avp_data data = { - 502, /* Code */ - 10415, /* Vendor */ - "Access-Network-Charging-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Access-Network-Charging-Identifier-Value */ - { - struct dict_avp_data data = { - 503, /* Code */ - 10415, /* Vendor */ - "Access-Network-Charging-Identifier-Value", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Acceptable-Service-Info */ - { - struct dict_avp_data data = { - 526, /* Code */ - 10415, /* Vendor */ - "Acceptable-Service-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* AF-Application-Identifier */ - { - struct dict_avp_data data = { - 504, /* Code */ - 10415, /* Vendor */ - "AF-Application-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* AF-Charging-Identifier */ - { - struct dict_avp_data data = { - 505, /* Code */ - 10415, /* Vendor */ - "AF-Charging-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Application-Service-Provider-Identity */ - { - struct dict_avp_data data = { - 532, /* Code */ - 10415, /* Vendor */ - "Application-Service-Provider-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Codec-Data */ - { - struct dict_avp_data data = { - 524, /* Code */ - 10415, /* Vendor */ - "Codec-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Flow-Description */ - { - struct dict_avp_data data = { - 507, /* Code */ - 10415, /* Vendor */ - "Flow-Description", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, IPFilterRule_type, NULL); - }; - - /* Flow-Number */ - { - struct dict_avp_data data = { - 509, /* Code */ - 10415, /* Vendor */ - "Flow-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Flows */ - { - struct dict_avp_data data = { - 510, /* Code */ - 10415, /* Vendor */ - "Flows", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Flow-Status */ - { - struct dict_avp_data data = { - 511, /* Code */ - 10415, /* Vendor */ - "Flow-Status", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Status)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Flow-Usage */ - { - struct dict_avp_data data = { - 512, /* Code */ - 10415, /* Vendor */ - "Flow-Usage", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Flow-Usage)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Service-URN */ - { - struct dict_avp_data data = { - 525, /* Code */ - 10415, /* Vendor */ - "Service-URN", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Specific-Action */ - { - struct dict_avp_data data = { - 513, /* Code */ - 10415, /* Vendor */ - "Specific-Action", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Specific-Action)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Max-Requested-Bandwidth-DL */ - { - struct dict_avp_data data = { - 515, /* Code */ - 10415, /* Vendor */ - "Max-Requested-Bandwidth-DL", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Max-Requested-Bandwidth-UL */ - { - struct dict_avp_data data = { - 516, /* Code */ - 10415, /* Vendor */ - "Max-Requested-Bandwidth-UL", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Media-Component-Description */ - { - struct dict_avp_data data = { - 517, /* Code */ - 10415, /* Vendor */ - "Media-Component-Description", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Media-Component-Number */ - { - struct dict_avp_data data = { - 518, /* Code */ - 10415, /* Vendor */ - "Media-Component-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Media-Sub-Component */ - { - struct dict_avp_data data = { - 519, /* Code */ - 10415, /* Vendor */ - "Media-Sub-Component", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Media-Type */ - { - struct dict_avp_data data = { - 520, /* Code */ - 10415, /* Vendor */ - "Media-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Media-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MPS-Identifier */ - { - struct dict_avp_data data = { - 528, /* Code */ - 10415, /* Vendor */ - "MPS-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Min-Requested-Bandwidth-DL */ - { - struct dict_avp_data data = { - 534, /* Code */ - 10415, /* Vendor */ - "Min-Requested-Bandwidth-DL", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Min-Requested-Bandwidth-UL */ - { - struct dict_avp_data data = { - 535, /* Code */ - 10415, /* Vendor */ - "Min-Requested-Bandwidth-UL", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* RR-Bandwidth */ - { - struct dict_avp_data data = { - 521, /* Code */ - 10415, /* Vendor */ - "RR-Bandwidth", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* RS-Bandwidth */ - { - struct dict_avp_data data = { - 522, /* Code */ - 10415, /* Vendor */ - "RS-Bandwidth", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Service-Info-Status */ - { - struct dict_avp_data data = { - 527, /* Code */ - 10415, /* Vendor */ - "Service-Info-Status", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Service-Info-Status)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* SIP-Forking-Indication */ - { - struct dict_avp_data data = { - 523, /* Code */ - 10415, /* Vendor */ - "SIP-Forking-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SIP-Forking-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Sponsor-Identity */ - { - struct dict_avp_data data = { - 531, /* Code */ - 10415, /* Vendor */ - "Sponsor-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Sponsored-Connectivity-Data */ - { - struct dict_avp_data data = { - 530, /* Code */ - 10415, /* Vendor */ - "Sponsored-Connectivity-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* AF-Signalling-Protocol */ - { - struct dict_avp_data data = { - 529, /* Code */ - 10415, /* Vendor */ - "AF-Signalling-Protocol", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AF-Signalling-Protocol)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Required-Access-Info */ - { - struct dict_avp_data data = { - 536, /* Code */ - 10415, /* Vendor */ - "Required-Access-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Required-Access-Info)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Rx-Request-Type */ - { - struct dict_avp_data data = { - 533, /* Code */ - 10415, /* Vendor */ - "Rx-Request-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Rx-Request-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* IP-Domain-Id */ - { - struct dict_avp_data data = { - 537, /* Code */ - 10415, /* Vendor */ - "IP-Domain-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 3GPP 29.229-b20 (11.2.0 2012.12.21) */ - /* Associated-Identities */ - { - struct dict_avp_data data = { - 632, /* Code */ - 10415, /* Vendor */ - "Associated-Identities", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Associated-Registered-Identities */ - { - struct dict_avp_data data = { - 647, /* Code */ - 10415, /* Vendor */ - "Associated-Registered-Identities", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Call-ID-SIP-Header */ - { - struct dict_avp_data data = { - 643, /* Code */ - 10415, /* Vendor */ - "Call-ID-SIP-Header", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Charging-Information */ - { - struct dict_avp_data data = { - 618, /* Code */ - 10415, /* Vendor */ - "Charging-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Confidentiality-Key */ - { - struct dict_avp_data data = { - 625, /* Code */ - 10415, /* Vendor */ - "Confidentiality-Key", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Contact */ - { - struct dict_avp_data data = { - 641, /* Code */ - 10415, /* Vendor */ - "Contact", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Deregistration-Reason */ - { - struct dict_avp_data data = { - 615, /* Code */ - 10415, /* Vendor */ - "Deregistration-Reason", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Feature-List */ - { - struct dict_avp_data data = { - 630, /* Code */ - 10415, /* Vendor */ - "Feature-List", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Feature-List-ID */ - { - struct dict_avp_data data = { - 629, /* Code */ - 10415, /* Vendor */ - "Feature-List-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* From-SIP-Header */ - { - struct dict_avp_data data = { - 644, /* Code */ - 10415, /* Vendor */ - "From-SIP-Header", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Identity-with-Emergency-Registration */ - { - struct dict_avp_data data = { - 651, /* Code */ - 10415, /* Vendor */ - "Identity-with-Emergency-Registration", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Integrity-Key */ - { - struct dict_avp_data data = { - 626, /* Code */ - 10415, /* Vendor */ - "Integrity-Key", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* LIA-Flags */ - { - struct dict_avp_data data = { - 653, /* Code */ - 10415, /* Vendor */ - "LIA-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Loose-Route-Indication */ - { - struct dict_avp_data data = { - 638, /* Code */ - 10415, /* Vendor */ - "Loose-Route-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Loose-Route-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Mandatory-Capability */ - { - struct dict_avp_data data = { - 604, /* Code */ - 10415, /* Vendor */ - "Mandatory-Capability", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Multiple-Registration-Indication */ - { - struct dict_avp_data data = { - 648, /* Code */ - 10415, /* Vendor */ - "Multiple-Registration-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Multiple-Registration-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Optional-Capability */ - { - struct dict_avp_data data = { - 605, /* Code */ - 10415, /* Vendor */ - "Optional-Capability", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Originating-Request */ - { - struct dict_avp_data data = { - 633, /* Code */ - 10415, /* Vendor */ - "Originating-Request", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originating-Request)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Path */ - { - struct dict_avp_data data = { - 640, /* Code */ - 10415, /* Vendor */ - "Path", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Primary-Charging-Collection-Function-Name */ - { - struct dict_avp_data data = { - 621, /* Code */ - 10415, /* Vendor */ - "Primary-Charging-Collection-Function-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); - }; - - /* Primary-Event-Charging-Function-Name */ - { - struct dict_avp_data data = { - 619, /* Code */ - 10415, /* Vendor */ - "Primary-Event-Charging-Function-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); - }; - - /* Priviledged-Sender-Indication */ - { - struct dict_avp_data data = { - 652, /* Code */ - 10415, /* Vendor */ - "Priviledged-Sender-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priviledged-Sender-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Public-Identity */ - { - struct dict_avp_data data = { - 601, /* Code */ - 10415, /* Vendor */ - "Public-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Reason-Code */ - { - struct dict_avp_data data = { - 616, /* Code */ - 10415, /* Vendor */ - "Reason-Code", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reason-Code)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Reason-Info */ - { - struct dict_avp_data data = { - 617, /* Code */ - 10415, /* Vendor */ - "Reason-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Record-Route */ - { - struct dict_avp_data data = { - 646, /* Code */ - 10415, /* Vendor */ - "Record-Route", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Restoration-Info */ - { - struct dict_avp_data data = { - 649, /* Code */ - 10415, /* Vendor */ - "Restoration-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SCSCF-Restoration-Info */ - { - struct dict_avp_data data = { - 639, /* Code */ - 10415, /* Vendor */ - "SCSCF-Restoration-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SIP-Auth-Data-Item */ - { - struct dict_avp_data data = { - 612, /* Code */ - 10415, /* Vendor */ - "SIP-Auth-Data-Item", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SIP-Authenticate */ - { - struct dict_avp_data data = { - 609, /* Code */ - 10415, /* Vendor */ - "SIP-Authenticate", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SIP-Authentication-Context */ - { - struct dict_avp_data data = { - 611, /* Code */ - 10415, /* Vendor */ - "SIP-Authentication-Context", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SIP-Authentication-Scheme */ - { - struct dict_avp_data data = { - 608, /* Code */ - 10415, /* Vendor */ - "SIP-Authentication-Scheme", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* SIP-Authorization */ - { - struct dict_avp_data data = { - 610, /* Code */ - 10415, /* Vendor */ - "SIP-Authorization", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SIP-Digest-Authenticate */ - { - struct dict_avp_data data = { - 635, /* Code */ - 10415, /* Vendor */ - "SIP-Digest-Authenticate", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SIP-Item-Number */ - { - struct dict_avp_data data = { - 613, /* Code */ - 10415, /* Vendor */ - "SIP-Item-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SIP-Number-Auth-Items */ - { - struct dict_avp_data data = { - 607, /* Code */ - 10415, /* Vendor */ - "SIP-Number-Auth-Items", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Secondary-Charging-Collection-Function-Name */ - { - struct dict_avp_data data = { - 622, /* Code */ - 10415, /* Vendor */ - "Secondary-Charging-Collection-Function-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); - }; - - /* Secondary-Event-Charging-Function-Name */ - { - struct dict_avp_data data = { - 620, /* Code */ - 10415, /* Vendor */ - "Secondary-Event-Charging-Function-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, DiameterURI_type, NULL); - }; - - /* Server-Assignment-Type */ - { - struct dict_avp_data data = { - 614, /* Code */ - 10415, /* Vendor */ - "Server-Assignment-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Server-Assignment-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Server-Capabilities */ - { - struct dict_avp_data data = { - 603, /* Code */ - 10415, /* Vendor */ - "Server-Capabilities", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Server-Name */ - { - struct dict_avp_data data = { - 602, /* Code */ - 10415, /* Vendor */ - "Server-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Session-Priority */ - { - struct dict_avp_data data = { - 650, /* Code */ - 10415, /* Vendor */ - "Session-Priority", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Priority)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Subscription-Info */ - { - struct dict_avp_data data = { - 642, /* Code */ - 10415, /* Vendor */ - "Subscription-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Supported-Applications */ - { - struct dict_avp_data data = { - 631, /* Code */ - 10415, /* Vendor */ - "Supported-Applications", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Supported-Features */ - { - struct dict_avp_data data = { - 628, /* Code */ - 10415, /* Vendor */ - "Supported-Features", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* To-SIP-Header */ - { - struct dict_avp_data data = { - 645, /* Code */ - 10415, /* Vendor */ - "To-SIP-Header", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* UAR-Flags */ - { - struct dict_avp_data data = { - 637, /* Code */ - 10415, /* Vendor */ - "UAR-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* User-Authorization-Type */ - { - struct dict_avp_data data = { - 623, /* Code */ - 10415, /* Vendor */ - "User-Authorization-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Authorization-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* User-Data */ - { - struct dict_avp_data data = { - 606, /* Code */ - 10415, /* Vendor */ - "User-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* User-Data-Already-Available */ - { - struct dict_avp_data data = { - 624, /* Code */ - 10415, /* Vendor */ - "User-Data-Already-Available", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Data-Already-Available)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Visited-Network-Identifier */ - { - struct dict_avp_data data = { - 600, /* Code */ - 10415, /* Vendor */ - "Visited-Network-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Wildcarded-Public-Identity */ - { - struct dict_avp_data data = { - 634, /* Code */ - 10415, /* Vendor */ - "Wildcarded-Public-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* 3GPP 32.299-b60 (11.6.0 2012.12.21) */ - /* AF-Correlation-Information */ - { - struct dict_avp_data data = { - 1276, /* Code */ - 10415, /* Vendor */ - "AF-Correlation-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Access-Network-Information */ - { - struct dict_avp_data data = { - 1263, /* Code */ - 10415, /* Vendor */ - "Access-Network-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Access-Transfer-Information */ - { - struct dict_avp_data data = { - 2709, /* Code */ - 10415, /* Vendor */ - "Access-Transfer-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Access-Transfer-Type */ - { - struct dict_avp_data data = { - 2710, /* Code */ - 10415, /* Vendor */ - "Access-Transfer-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Access-Transfer-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Account-Expiration */ - { - struct dict_avp_data data = { - 2309, /* Code */ - 10415, /* Vendor */ - "Account-Expiration", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Accumulated-Cost */ - { - struct dict_avp_data data = { - 2052, /* Code */ - 10415, /* Vendor */ - "Accumulated-Cost", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Adaptations */ - { - struct dict_avp_data data = { - 1217, /* Code */ - 10415, /* Vendor */ - "Adaptations", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Adaptations)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Additional-Content-Information */ - { - struct dict_avp_data data = { - 1207, /* Code */ - 10415, /* Vendor */ - "Additional-Content-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Additional-Type-Information */ - { - struct dict_avp_data data = { - 1205, /* Code */ - 10415, /* Vendor */ - "Additional-Type-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Address-Data */ - { - struct dict_avp_data data = { - 897, /* Code */ - 10415, /* Vendor */ - "Address-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Address-Domain */ - { - struct dict_avp_data data = { - 898, /* Code */ - 10415, /* Vendor */ - "Address-Domain", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Address-Type */ - { - struct dict_avp_data data = { - 899, /* Code */ - 10415, /* Vendor */ - "Address-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Address-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Addressee-Type */ - { - struct dict_avp_data data = { - 1208, /* Code */ - 10415, /* Vendor */ - "Addressee-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Addressee-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Alternate-Charged-Party-Address */ - { - struct dict_avp_data data = { - 1280, /* Code */ - 10415, /* Vendor */ - "Alternate-Charged-Party-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* AoC-Cost-Information */ - { - struct dict_avp_data data = { - 2053, /* Code */ - 10415, /* Vendor */ - "AoC-Cost-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* AoC-Format */ - { - struct dict_avp_data data = { - 2310, /* Code */ - 10415, /* Vendor */ - "AoC-Format", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Format)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* AoC-Information */ - { - struct dict_avp_data data = { - 2054, /* Code */ - 10415, /* Vendor */ - "AoC-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* AoC-Request-Type */ - { - struct dict_avp_data data = { - 2055, /* Code */ - 10415, /* Vendor */ - "AoC-Request-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Request-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* AoC-Service */ - { - struct dict_avp_data data = { - 2311, /* Code */ - 10415, /* Vendor */ - "AoC-Service", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* AoC-Service-Obligatory-Type */ - { - struct dict_avp_data data = { - 2312, /* Code */ - 10415, /* Vendor */ - "AoC-Service-Obligatory-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Service-Obligatory-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* AoC-Service-Type */ - { - struct dict_avp_data data = { - 2313, /* Code */ - 10415, /* Vendor */ - "AoC-Service-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/AoC-Service-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* AoC-Subscription-Information */ - { - struct dict_avp_data data = { - 2314, /* Code */ - 10415, /* Vendor */ - "AoC-Subscription-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Applic-ID */ - { - struct dict_avp_data data = { - 1218, /* Code */ - 10415, /* Vendor */ - "Applic-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Application-Server */ - { - struct dict_avp_data data = { - 836, /* Code */ - 10415, /* Vendor */ - "Application-Server", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Application-Server-Information */ - { - struct dict_avp_data data = { - 850, /* Code */ - 10415, /* Vendor */ - "Application-Server-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Application-Provided-Called-Party-Address */ - { - struct dict_avp_data data = { - 837, /* Code */ - 10415, /* Vendor */ - "Application-Provided-Called-Party-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Associated-Party-Address */ - { - struct dict_avp_data data = { - 2035, /* Code */ - 10415, /* Vendor */ - "Associated-Party-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Associated-URI */ - { - struct dict_avp_data data = { - 856, /* Code */ - 10415, /* Vendor */ - "Associated-URI", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Aux-Applic-Info */ - { - struct dict_avp_data data = { - 1219, /* Code */ - 10415, /* Vendor */ - "Aux-Applic-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Base-Time-Interval */ - { - struct dict_avp_data data = { - 1265, /* Code */ - 10415, /* Vendor */ - "Base-Time-Interval", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Bearer-Service */ - { - struct dict_avp_data data = { - 854, /* Code */ - 10415, /* Vendor */ - "Bearer-Service", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* CG-Address */ - { - struct dict_avp_data data = { - 846, /* Code */ - 10415, /* Vendor */ - "CG-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* CSG-Access-Mode */ - { - struct dict_avp_data data = { - 2317, /* Code */ - 10415, /* Vendor */ - "CSG-Access-Mode", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Access-Mode)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* CSG-Membership-Indication */ - { - struct dict_avp_data data = { - 2318, /* Code */ - 10415, /* Vendor */ - "CSG-Membership-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/CSG-Membership-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* CUG-Information */ - { - struct dict_avp_data data = { - 2304, /* Code */ - 10415, /* Vendor */ - "CUG-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Called-Asserted-Identity */ - { - struct dict_avp_data data = { - 1250, /* Code */ - 10415, /* Vendor */ - "Called-Asserted-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Called-Party-Address */ - { - struct dict_avp_data data = { - 832, /* Code */ - 10415, /* Vendor */ - "Called-Party-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Calling-Party-Address */ - { - struct dict_avp_data data = { - 831, /* Code */ - 10415, /* Vendor */ - "Calling-Party-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Carrier-Select-Routing-Information */ - { - struct dict_avp_data data = { - 2023, /* Code */ - 10415, /* Vendor */ - "Carrier-Select-Routing-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Cause-Code */ - { - struct dict_avp_data data = { - 861, /* Code */ - 10415, /* Vendor */ - "Cause-Code", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Change-Condition */ - { - struct dict_avp_data data = { - 2037, /* Code */ - 10415, /* Vendor */ - "Change-Condition", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Change-Time */ - { - struct dict_avp_data data = { - 2038, /* Code */ - 10415, /* Vendor */ - "Change-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Charge-Reason-Code */ - { - struct dict_avp_data data = { - 2118, /* Code */ - 10415, /* Vendor */ - "Charge-Reason-Code", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charge-Reason-Code)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Charged-Party */ - { - struct dict_avp_data data = { - 857, /* Code */ - 10415, /* Vendor */ - "Charged-Party", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Charging-Characteristics-Selection-Mode */ - { - struct dict_avp_data data = { - 2066, /* Code */ - 10415, /* Vendor */ - "Charging-Characteristics-Selection-Mode", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Charging-Characteristics-Selection-Mode)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Class-Identifier */ - { - struct dict_avp_data data = { - 1214, /* Code */ - 10415, /* Vendor */ - "Class-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Class-Identifier)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Client-Address */ - { - struct dict_avp_data data = { - 2018, /* Code */ - 10415, /* Vendor */ - "Client-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Content-Class */ - { - struct dict_avp_data data = { - 1220, /* Code */ - 10415, /* Vendor */ - "Content-Class", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Content-Class)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Content-Disposition */ - { - struct dict_avp_data data = { - 828, /* Code */ - 10415, /* Vendor */ - "Content-Disposition", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Content-Length */ - { - struct dict_avp_data data = { - 827, /* Code */ - 10415, /* Vendor */ - "Content-Length", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Content-Size */ - { - struct dict_avp_data data = { - 1206, /* Code */ - 10415, /* Vendor */ - "Content-Size", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Content-Type */ - { - struct dict_avp_data data = { - 826, /* Code */ - 10415, /* Vendor */ - "Content-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Current-Tariff */ - { - struct dict_avp_data data = { - 2056, /* Code */ - 10415, /* Vendor */ - "Current-Tariff", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* DRM-Content */ - { - struct dict_avp_data data = { - 1221, /* Code */ - 10415, /* Vendor */ - "DRM-Content", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/DRM-Content)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Data-Coding-Scheme */ - { - struct dict_avp_data data = { - 2001, /* Code */ - 10415, /* Vendor */ - "Data-Coding-Scheme", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Deferred-Location-Event-Type */ - { - struct dict_avp_data data = { - 1230, /* Code */ - 10415, /* Vendor */ - "Deferred-Location-Event-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Delivery-Report-Requested */ - { - struct dict_avp_data data = { - 1216, /* Code */ - 10415, /* Vendor */ - "Delivery-Report-Requested", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Delivery-Report-Requested)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Destination-Interface */ - { - struct dict_avp_data data = { - 2002, /* Code */ - 10415, /* Vendor */ - "Destination-Interface", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Diagnostics */ - { - struct dict_avp_data data = { - 2039, /* Code */ - 10415, /* Vendor */ - "Diagnostics", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Domain-Name */ - { - struct dict_avp_data data = { - 1200, /* Code */ - 10415, /* Vendor */ - "Domain-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Dynamic-Address-Flag */ - { - struct dict_avp_data data = { - 2051, /* Code */ - 10415, /* Vendor */ - "Dynamic-Address-Flag", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Dynamic-Address-Flag)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Dynamic-Address-Flag-Extension */ - { - struct dict_avp_data data = { - 2068, /* Code */ - 10415, /* Vendor */ - "Dynamic-Address-Flag-Extension", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Dynamic-Address-Flag-Extension)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Early-Media-Description */ - { - struct dict_avp_data data = { - 1272, /* Code */ - 10415, /* Vendor */ - "Early-Media-Description", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Envelope */ - { - struct dict_avp_data data = { - 1266, /* Code */ - 10415, /* Vendor */ - "Envelope", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Envelope-End-Time */ - { - struct dict_avp_data data = { - 1267, /* Code */ - 10415, /* Vendor */ - "Envelope-End-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Envelope-Reporting */ - { - struct dict_avp_data data = { - 1268, /* Code */ - 10415, /* Vendor */ - "Envelope-Reporting", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Envelope-Reporting)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Envelope-Start-Time */ - { - struct dict_avp_data data = { - 1269, /* Code */ - 10415, /* Vendor */ - "Envelope-Start-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Event */ - { - struct dict_avp_data data = { - 825, /* Code */ - 10415, /* Vendor */ - "Event", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Event-Charging-TimeStamp */ - { - struct dict_avp_data data = { - 1258, /* Code */ - 10415, /* Vendor */ - "Event-Charging-TimeStamp", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Event-Type */ - { - struct dict_avp_data data = { - 823, /* Code */ - 10415, /* Vendor */ - "Event-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Expires */ - { - struct dict_avp_data data = { - 888, /* Code */ - 10415, /* Vendor */ - "Expires", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* File-Repair-Supported */ - { - struct dict_avp_data data = { - 1224, /* Code */ - 10415, /* Vendor */ - "File-Repair-Supported", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/File-Repair-Supported)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* From-Address */ - { - struct dict_avp_data data = { - 2708, /* Code */ - 10415, /* Vendor */ - "From-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* GGSN-Address */ - { - struct dict_avp_data data = { - 847, /* Code */ - 10415, /* Vendor */ - "GGSN-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* IMS-Application-Reference-Identifier */ - { - struct dict_avp_data data = { - 2601, /* Code */ - 10415, /* Vendor */ - "IMS-Application-Reference-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* IMS-Charging-Identifier */ - { - struct dict_avp_data data = { - 841, /* Code */ - 10415, /* Vendor */ - "IMS-Charging-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* IMS-Communication-Service-Identifier */ - { - struct dict_avp_data data = { - 1281, /* Code */ - 10415, /* Vendor */ - "IMS-Communication-Service-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* IMS-Emergency-Indicator */ - { - struct dict_avp_data data = { - 2322, /* Code */ - 10415, /* Vendor */ - "IMS-Emergency-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMS-Emergency-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* IMS-Information */ - { - struct dict_avp_data data = { - 876, /* Code */ - 10415, /* Vendor */ - "IMS-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* IMSI-Unauthenticated-Flag */ - { - struct dict_avp_data data = { - 2308, /* Code */ - 10415, /* Vendor */ - "IMSI-Unauthenticated-Flag", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMSI-Unauthenticated-Flag)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* IP-Realm-Default-Indication */ - { - struct dict_avp_data data = { - 2603, /* Code */ - 10415, /* Vendor */ - "IP-Realm-Default-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IP-Realm-Default-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Incoming-Trunk-Group-Id */ - { - struct dict_avp_data data = { - 852, /* Code */ - 10415, /* Vendor */ - "Incoming-Trunk-Group-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Incremental-Cost */ - { - struct dict_avp_data data = { - 2062, /* Code */ - 10415, /* Vendor */ - "Incremental-Cost", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Initial-IMS-Charging-Identifier */ - { - struct dict_avp_data data = { - 2321, /* Code */ - 10415, /* Vendor */ - "Initial-IMS-Charging-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Inter-Operator-Identifier */ - { - struct dict_avp_data data = { - 838, /* Code */ - 10415, /* Vendor */ - "Inter-Operator-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Interface-Id */ - { - struct dict_avp_data data = { - 2003, /* Code */ - 10415, /* Vendor */ - "Interface-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Interface-Port */ - { - struct dict_avp_data data = { - 2004, /* Code */ - 10415, /* Vendor */ - "Interface-Port", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Interface-Text */ - { - struct dict_avp_data data = { - 2005, /* Code */ - 10415, /* Vendor */ - "Interface-Text", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Interface-Type */ - { - struct dict_avp_data data = { - 2006, /* Code */ - 10415, /* Vendor */ - "Interface-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Interface-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* LCS-APN */ - { - struct dict_avp_data data = { - 1231, /* Code */ - 10415, /* Vendor */ - "LCS-APN", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* LCS-Client-Dialed-By-MS */ - { - struct dict_avp_data data = { - 1233, /* Code */ - 10415, /* Vendor */ - "LCS-Client-Dialed-By-MS", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* LCS-Client-External-ID */ - { - struct dict_avp_data data = { - 1234, /* Code */ - 10415, /* Vendor */ - "LCS-Client-External-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* LCS-Client-Id */ - { - struct dict_avp_data data = { - 1232, /* Code */ - 10415, /* Vendor */ - "LCS-Client-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* LCS-Client-Name */ - { - struct dict_avp_data data = { - 1235, /* Code */ - 10415, /* Vendor */ - "LCS-Client-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* LCS-Client-Type */ - { - struct dict_avp_data data = { - 1241, /* Code */ - 10415, /* Vendor */ - "LCS-Client-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-Client-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* LCS-Data-Coding-Scheme */ - { - struct dict_avp_data data = { - 1236, /* Code */ - 10415, /* Vendor */ - "LCS-Data-Coding-Scheme", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* LCS-Format-Indicator */ - { - struct dict_avp_data data = { - 1237, /* Code */ - 10415, /* Vendor */ - "LCS-Format-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LCS-Format-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* LCS-Information */ - { - struct dict_avp_data data = { - 878, /* Code */ - 10415, /* Vendor */ - "LCS-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* LCS-Name-String */ - { - struct dict_avp_data data = { - 1238, /* Code */ - 10415, /* Vendor */ - "LCS-Name-String", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* LCS-Requestor-Id */ - { - struct dict_avp_data data = { - 1239, /* Code */ - 10415, /* Vendor */ - "LCS-Requestor-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* LCS-Requestor-Id-String */ - { - struct dict_avp_data data = { - 1240, /* Code */ - 10415, /* Vendor */ - "LCS-Requestor-Id-String", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Local-GW-Inserted-Indication */ - { - struct dict_avp_data data = { - 2604, /* Code */ - 10415, /* Vendor */ - "Local-GW-Inserted-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Local-GW-Inserted-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Local-Sequence-Number */ - { - struct dict_avp_data data = { - 2063, /* Code */ - 10415, /* Vendor */ - "Local-Sequence-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Location-Estimate */ - { - struct dict_avp_data data = { - 1242, /* Code */ - 10415, /* Vendor */ - "Location-Estimate", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Location-Estimate-Type */ - { - struct dict_avp_data data = { - 1243, /* Code */ - 10415, /* Vendor */ - "Location-Estimate-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Location-Estimate-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Location-Type */ - { - struct dict_avp_data data = { - 1244, /* Code */ - 10415, /* Vendor */ - "Location-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Low-Balance-Indication */ - { - struct dict_avp_data data = { - 2020, /* Code */ - 10415, /* Vendor */ - "Low-Balance-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Low-Balance-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Low-Priority-Indicator */ - { - struct dict_avp_data data = { - 2602, /* Code */ - 10415, /* Vendor */ - "Low-Priority-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Low-Priority-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MBMSGW-Address */ - { - struct dict_avp_data data = { - 2307, /* Code */ - 10415, /* Vendor */ - "MBMSGW-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* MBMS-Information */ - { - struct dict_avp_data data = { - 880, /* Code */ - 10415, /* Vendor */ - "MBMS-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MBMS-User-Service-Type */ - { - struct dict_avp_data data = { - 1225, /* Code */ - 10415, /* Vendor */ - "MBMS-User-Service-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MBMS-User-Service-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MM-Content-Type */ - { - struct dict_avp_data data = { - 1203, /* Code */ - 10415, /* Vendor */ - "MM-Content-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MMBox-Storage-Requested */ - { - struct dict_avp_data data = { - 1248, /* Code */ - 10415, /* Vendor */ - "MMBox-Storage-Requested", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MMBox-Storage-Requested)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MMS-Information */ - { - struct dict_avp_data data = { - 877, /* Code */ - 10415, /* Vendor */ - "MMS-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MMTel-Information */ - { - struct dict_avp_data data = { - 2030, /* Code */ - 10415, /* Vendor */ - "MMTel-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MMTel-SService-Type */ - { - struct dict_avp_data data = { - 2031, /* Code */ - 10415, /* Vendor */ - "MMTel-SService-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Media-Initiator-Flag */ - { - struct dict_avp_data data = { - 882, /* Code */ - 10415, /* Vendor */ - "Media-Initiator-Flag", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Media-Initiator-Flag)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Media-Initiator-Party */ - { - struct dict_avp_data data = { - 1288, /* Code */ - 10415, /* Vendor */ - "Media-Initiator-Party", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Message-Body */ - { - struct dict_avp_data data = { - 889, /* Code */ - 10415, /* Vendor */ - "Message-Body", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Message-Class */ - { - struct dict_avp_data data = { - 1213, /* Code */ - 10415, /* Vendor */ - "Message-Class", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Message-ID */ - { - struct dict_avp_data data = { - 1210, /* Code */ - 10415, /* Vendor */ - "Message-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Message-Size */ - { - struct dict_avp_data data = { - 1212, /* Code */ - 10415, /* Vendor */ - "Message-Size", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Message-Type */ - { - struct dict_avp_data data = { - 1211, /* Code */ - 10415, /* Vendor */ - "Message-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Message-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* NNI-Information */ - { - struct dict_avp_data data = { - 2703, /* Code */ - 10415, /* Vendor */ - "NNI-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* NNI-Type */ - { - struct dict_avp_data data = { - 2704, /* Code */ - 10415, /* Vendor */ - "NNI-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/NNI-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Neighbour-Node-Address */ - { - struct dict_avp_data data = { - 2705, /* Code */ - 10415, /* Vendor */ - "Neighbour-Node-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Next-Tariff */ - { - struct dict_avp_data data = { - 2057, /* Code */ - 10415, /* Vendor */ - "Next-Tariff", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Node-Functionality */ - { - struct dict_avp_data data = { - 862, /* Code */ - 10415, /* Vendor */ - "Node-Functionality", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Node-Functionality)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Node-Id */ - { - struct dict_avp_data data = { - 2064, /* Code */ - 10415, /* Vendor */ - "Node-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Number-Of-Diversions */ - { - struct dict_avp_data data = { - 2034, /* Code */ - 10415, /* Vendor */ - "Number-Of-Diversions", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Number-Of-Messages-Sent */ - { - struct dict_avp_data data = { - 2019, /* Code */ - 10415, /* Vendor */ - "Number-Of-Messages-Sent", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Number-Of-Participants */ - { - struct dict_avp_data data = { - 885, /* Code */ - 10415, /* Vendor */ - "Number-Of-Participants", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Number-Of-Received-Talk-Bursts */ - { - struct dict_avp_data data = { - 1282, /* Code */ - 10415, /* Vendor */ - "Number-Of-Received-Talk-Bursts", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Number-Of-Talk-Bursts */ - { - struct dict_avp_data data = { - 1283, /* Code */ - 10415, /* Vendor */ - "Number-Of-Talk-Bursts", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Number-Portability-Routing-Information */ - { - struct dict_avp_data data = { - 2024, /* Code */ - 10415, /* Vendor */ - "Number-Portability-Routing-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Offline-Charging */ - { - struct dict_avp_data data = { - 1278, /* Code */ - 10415, /* Vendor */ - "Offline-Charging", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Online-Charging-Flag */ - { - struct dict_avp_data data = { - 2303, /* Code */ - 10415, /* Vendor */ - "Online-Charging-Flag", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Online-Charging-Flag)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Originating-IOI */ - { - struct dict_avp_data data = { - 839, /* Code */ - 10415, /* Vendor */ - "Originating-IOI", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Originator */ - { - struct dict_avp_data data = { - 864, /* Code */ - 10415, /* Vendor */ - "Originator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Originator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Originator-Address */ - { - struct dict_avp_data data = { - 886, /* Code */ - 10415, /* Vendor */ - "Originator-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Originator-Interface */ - { - struct dict_avp_data data = { - 2009, /* Code */ - 10415, /* Vendor */ - "Originator-Interface", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Originator-Received-Address */ - { - struct dict_avp_data data = { - 2027, /* Code */ - 10415, /* Vendor */ - "Originator-Received-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Originator-SCCP-Address */ - { - struct dict_avp_data data = { - 2008, /* Code */ - 10415, /* Vendor */ - "Originator-SCCP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Outgoing-Session-Id */ - { - struct dict_avp_data data = { - 2320, /* Code */ - 10415, /* Vendor */ - "Outgoing-Session-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Outgoing-Trunk-Group-Id */ - { - struct dict_avp_data data = { - 853, /* Code */ - 10415, /* Vendor */ - "Outgoing-Trunk-Group-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* PDG-Address */ - { - struct dict_avp_data data = { - 895, /* Code */ - 10415, /* Vendor */ - "PDG-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* PDG-Charging-Id */ - { - struct dict_avp_data data = { - 896, /* Code */ - 10415, /* Vendor */ - "PDG-Charging-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PDN-Connection-Charging-ID */ - { - struct dict_avp_data data = { - 2050, /* Code */ - 10415, /* Vendor */ - "PDN-Connection-Charging-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PDP-Address */ - { - struct dict_avp_data data = { - 1227, /* Code */ - 10415, /* Vendor */ - "PDP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* PDP-Address-Prefix-Length */ - { - struct dict_avp_data data = { - 2606, /* Code */ - 10415, /* Vendor */ - "PDP-Address-Prefix-Length", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PDP-Context-Type */ - { - struct dict_avp_data data = { - 1247, /* Code */ - 10415, /* Vendor */ - "PDP-Context-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDP-Context-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PS-Append-Free-Format-Data */ - { - struct dict_avp_data data = { - 867, /* Code */ - 10415, /* Vendor */ - "PS-Append-Free-Format-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PS-Append-Free-Format-Data)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PS-Free-Format-Data */ - { - struct dict_avp_data data = { - 866, /* Code */ - 10415, /* Vendor */ - "PS-Free-Format-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PS-Furnish-Charging-Information */ - { - struct dict_avp_data data = { - 865, /* Code */ - 10415, /* Vendor */ - "PS-Furnish-Charging-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PS-Information */ - { - struct dict_avp_data data = { - 874, /* Code */ - 10415, /* Vendor */ - "PS-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Participant-Access-Priority */ - { - struct dict_avp_data data = { - 1259, /* Code */ - 10415, /* Vendor */ - "Participant-Access-Priority", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Participant-Access-Priority)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Participant-Action-Type */ - { - struct dict_avp_data data = { - 2049, /* Code */ - 10415, /* Vendor */ - "Participant-Action-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Participant-Action-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Participant-Group */ - { - struct dict_avp_data data = { - 1260, /* Code */ - 10415, /* Vendor */ - "Participant-Group", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Participants-Involved */ - { - struct dict_avp_data data = { - 887, /* Code */ - 10415, /* Vendor */ - "Participants-Involved", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* PoC-Change-Condition */ - { - struct dict_avp_data data = { - 1261, /* Code */ - 10415, /* Vendor */ - "PoC-Change-Condition", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Change-Condition)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PoC-Change-Time */ - { - struct dict_avp_data data = { - 1262, /* Code */ - 10415, /* Vendor */ - "PoC-Change-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* PoC-Controlling-Address */ - { - struct dict_avp_data data = { - 858, /* Code */ - 10415, /* Vendor */ - "PoC-Controlling-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* PoC-Event-Type */ - { - struct dict_avp_data data = { - 2025, /* Code */ - 10415, /* Vendor */ - "PoC-Event-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Event-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PoC-Group-Name */ - { - struct dict_avp_data data = { - 859, /* Code */ - 10415, /* Vendor */ - "PoC-Group-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* PoC-Information */ - { - struct dict_avp_data data = { - 879, /* Code */ - 10415, /* Vendor */ - "PoC-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PoC-Server-Role */ - { - struct dict_avp_data data = { - 883, /* Code */ - 10415, /* Vendor */ - "PoC-Server-Role", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Server-Role)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PoC-Session-Id */ - { - struct dict_avp_data data = { - 1229, /* Code */ - 10415, /* Vendor */ - "PoC-Session-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* PoC-Session-Initiation-type */ - { - struct dict_avp_data data = { - 1277, /* Code */ - 10415, /* Vendor */ - "PoC-Session-Initiation-type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Session-Initiation-type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PoC-Session-Type */ - { - struct dict_avp_data data = { - 884, /* Code */ - 10415, /* Vendor */ - "PoC-Session-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-Session-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PoC-User-Role */ - { - struct dict_avp_data data = { - 1252, /* Code */ - 10415, /* Vendor */ - "PoC-User-Role", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PoC-User-Role-IDs */ - { - struct dict_avp_data data = { - 1253, /* Code */ - 10415, /* Vendor */ - "PoC-User-Role-IDs", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* PoC-User-Role-info-Units */ - { - struct dict_avp_data data = { - 1254, /* Code */ - 10415, /* Vendor */ - "PoC-User-Role-info-Units", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PoC-User-Role-info-Units)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Positioning-Data */ - { - struct dict_avp_data data = { - 1245, /* Code */ - 10415, /* Vendor */ - "Positioning-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Preferred-AoC-Currency */ - { - struct dict_avp_data data = { - 2315, /* Code */ - 10415, /* Vendor */ - "Preferred-AoC-Currency", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Priority */ - { - struct dict_avp_data data = { - 1209, /* Code */ - 10415, /* Vendor */ - "Priority", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Priority)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Quota-Consumption-Time */ - { - struct dict_avp_data data = { - 881, /* Code */ - 10415, /* Vendor */ - "Quota-Consumption-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Quota-Holding-Time */ - { - struct dict_avp_data data = { - 871, /* Code */ - 10415, /* Vendor */ - "Quota-Holding-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Rate-Element */ - { - struct dict_avp_data data = { - 2058, /* Code */ - 10415, /* Vendor */ - "Rate-Element", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Read-Reply-Report-Requested */ - { - struct dict_avp_data data = { - 1222, /* Code */ - 10415, /* Vendor */ - "Read-Reply-Report-Requested", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Read-Reply-Report-Requested)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Real-Time-Tariff-Information */ - { - struct dict_avp_data data = { - 2305, /* Code */ - 10415, /* Vendor */ - "Real-Time-Tariff-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Received-Talk-Burst-Time */ - { - struct dict_avp_data data = { - 1284, /* Code */ - 10415, /* Vendor */ - "Received-Talk-Burst-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Received-Talk-Burst-Volume */ - { - struct dict_avp_data data = { - 1285, /* Code */ - 10415, /* Vendor */ - "Received-Talk-Burst-Volume", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Recipient-Address */ - { - struct dict_avp_data data = { - 1201, /* Code */ - 10415, /* Vendor */ - "Recipient-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Recipient-Info */ - { - struct dict_avp_data data = { - 2026, /* Code */ - 10415, /* Vendor */ - "Recipient-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Recipient-Received-Address */ - { - struct dict_avp_data data = { - 2028, /* Code */ - 10415, /* Vendor */ - "Recipient-Received-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Recipient-SCCP-Address */ - { - struct dict_avp_data data = { - 2010, /* Code */ - 10415, /* Vendor */ - "Recipient-SCCP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Refund-Information */ - { - struct dict_avp_data data = { - 2022, /* Code */ - 10415, /* Vendor */ - "Refund-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Relationship-Mode */ - { - struct dict_avp_data data = { - 2706, /* Code */ - 10415, /* Vendor */ - "Relationship-Mode", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Relationship-Mode)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Remaining-Balance */ - { - struct dict_avp_data data = { - 2021, /* Code */ - 10415, /* Vendor */ - "Remaining-Balance", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Reply-Applic-ID */ - { - struct dict_avp_data data = { - 1223, /* Code */ - 10415, /* Vendor */ - "Reply-Applic-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Reply-Path-Requested */ - { - struct dict_avp_data data = { - 2011, /* Code */ - 10415, /* Vendor */ - "Reply-Path-Requested", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reply-Path-Requested)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Reporting-Reason */ - { - struct dict_avp_data data = { - 872, /* Code */ - 10415, /* Vendor */ - "Reporting-Reason", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Reporting-Reason)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Requested-Party-Address */ - { - struct dict_avp_data data = { - 1251, /* Code */ - 10415, /* Vendor */ - "Requested-Party-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Role-Of-Node */ - { - struct dict_avp_data data = { - 829, /* Code */ - 10415, /* Vendor */ - "Role-Of-Node", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Role-Of-Node)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* SDP-Answer-Timestamp */ - { - struct dict_avp_data data = { - 1275, /* Code */ - 10415, /* Vendor */ - "SDP-Answer-Timestamp", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* SDP-Media-Component */ - { - struct dict_avp_data data = { - 843, /* Code */ - 10415, /* Vendor */ - "SDP-Media-Component", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SDP-Media-Description */ - { - struct dict_avp_data data = { - 845, /* Code */ - 10415, /* Vendor */ - "SDP-Media-Description", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* SDP-Media-Name */ - { - struct dict_avp_data data = { - 844, /* Code */ - 10415, /* Vendor */ - "SDP-Media-Name", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* SDP-Offer-Timestamp */ - { - struct dict_avp_data data = { - 1274, /* Code */ - 10415, /* Vendor */ - "SDP-Offer-Timestamp", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* SDP-Session-Description */ - { - struct dict_avp_data data = { - 842, /* Code */ - 10415, /* Vendor */ - "SDP-Session-Description", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* SDP-TimeStamps */ - { - struct dict_avp_data data = { - 1273, /* Code */ - 10415, /* Vendor */ - "SDP-TimeStamps", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SDP-Type */ - { - struct dict_avp_data data = { - 2036, /* Code */ - 10415, /* Vendor */ - "SDP-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SDP-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* SGSN-Address */ - { - struct dict_avp_data data = { - 1228, /* Code */ - 10415, /* Vendor */ - "SGSN-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* SGW-Address */ - { - struct dict_avp_data data = { - 2067, /* Code */ - 10415, /* Vendor */ - "SGW-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* SGW-Change */ - { - struct dict_avp_data data = { - 2065, /* Code */ - 10415, /* Vendor */ - "SGW-Change", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SGW-Change)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* SIP-Method */ - { - struct dict_avp_data data = { - 824, /* Code */ - 10415, /* Vendor */ - "SIP-Method", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* SIP-Request-Timestamp */ - { - struct dict_avp_data data = { - 834, /* Code */ - 10415, /* Vendor */ - "SIP-Request-Timestamp", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* SIP-Request-Timestamp-Fraction */ - { - struct dict_avp_data data = { - 2301, /* Code */ - 10415, /* Vendor */ - "SIP-Request-Timestamp-Fraction", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SIP-Response-Timestamp */ - { - struct dict_avp_data data = { - 835, /* Code */ - 10415, /* Vendor */ - "SIP-Response-Timestamp", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* SIP-Response-Timestamp-Fraction */ - { - struct dict_avp_data data = { - 2302, /* Code */ - 10415, /* Vendor */ - "SIP-Response-Timestamp-Fraction", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SM-Discharge-Time */ - { - struct dict_avp_data data = { - 2012, /* Code */ - 10415, /* Vendor */ - "SM-Discharge-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* SM-Message-Type */ - { - struct dict_avp_data data = { - 2007, /* Code */ - 10415, /* Vendor */ - "SM-Message-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Message-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* SM-Protocol-ID */ - { - struct dict_avp_data data = { - 2013, /* Code */ - 10415, /* Vendor */ - "SM-Protocol-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SM-Service-Type */ - { - struct dict_avp_data data = { - 2029, /* Code */ - 10415, /* Vendor */ - "SM-Service-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SM-Service-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* SM-Status */ - { - struct dict_avp_data data = { - 2014, /* Code */ - 10415, /* Vendor */ - "SM-Status", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SM-User-Data-Header */ - { - struct dict_avp_data data = { - 2015, /* Code */ - 10415, /* Vendor */ - "SM-User-Data-Header", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SMS-Information */ - { - struct dict_avp_data data = { - 2000, /* Code */ - 10415, /* Vendor */ - "SMS-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SMS-Node */ - { - struct dict_avp_data data = { - 2016, /* Code */ - 10415, /* Vendor */ - "SMS-Node", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SMS-Node)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* SMSC-Address */ - { - struct dict_avp_data data = { - 2017, /* Code */ - 10415, /* Vendor */ - "SMSC-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Scale-Factor */ - { - struct dict_avp_data data = { - 2059, /* Code */ - 10415, /* Vendor */ - "Scale-Factor", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Served-Party-IP-Address */ - { - struct dict_avp_data data = { - 848, /* Code */ - 10415, /* Vendor */ - "Served-Party-IP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Service-Data-Container */ - { - struct dict_avp_data data = { - 2040, /* Code */ - 10415, /* Vendor */ - "Service-Data-Container", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Service-Id */ - { - struct dict_avp_data data = { - 855, /* Code */ - 10415, /* Vendor */ - "Service-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Service-Information */ - { - struct dict_avp_data data = { - 873, /* Code */ - 10415, /* Vendor */ - "Service-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Service-Mode */ - { - struct dict_avp_data data = { - 2032, /* Code */ - 10415, /* Vendor */ - "Service-Mode", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Service-Specific-Data */ - { - struct dict_avp_data data = { - 863, /* Code */ - 10415, /* Vendor */ - "Service-Specific-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Service-Specific-Info */ - { - struct dict_avp_data data = { - 1249, /* Code */ - 10415, /* Vendor */ - "Service-Specific-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Service-Specific-Type */ - { - struct dict_avp_data data = { - 1257, /* Code */ - 10415, /* Vendor */ - "Service-Specific-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Serving-Node-Type */ - { - struct dict_avp_data data = { - 2047, /* Code */ - 10415, /* Vendor */ - "Serving-Node-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Serving-Node-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Session-Direction */ - { - struct dict_avp_data data = { - 2707, /* Code */ - 10415, /* Vendor */ - "Session-Direction", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Session-Direction)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Start-Time */ - { - struct dict_avp_data data = { - 2041, /* Code */ - 10415, /* Vendor */ - "Start-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Status */ - { - struct dict_avp_data data = { - 2702, /* Code */ - 10415, /* Vendor */ - "Status", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Status)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Stop-Time */ - { - struct dict_avp_data data = { - 2042, /* Code */ - 10415, /* Vendor */ - "Stop-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Submission-Time */ - { - struct dict_avp_data data = { - 1202, /* Code */ - 10415, /* Vendor */ - "Submission-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Subscriber-Role */ - { - struct dict_avp_data data = { - 2033, /* Code */ - 10415, /* Vendor */ - "Subscriber-Role", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscriber-Role)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Supplementary-Service */ - { - struct dict_avp_data data = { - 2048, /* Code */ - 10415, /* Vendor */ - "Supplementary-Service", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Talk-Burst-Exchange */ - { - struct dict_avp_data data = { - 1255, /* Code */ - 10415, /* Vendor */ - "Talk-Burst-Exchange", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Talk-Burst-Time */ - { - struct dict_avp_data data = { - 1286, /* Code */ - 10415, /* Vendor */ - "Talk-Burst-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Talk-Burst-Volume */ - { - struct dict_avp_data data = { - 1287, /* Code */ - 10415, /* Vendor */ - "Talk-Burst-Volume", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Tariff-Information */ - { - struct dict_avp_data data = { - 2060, /* Code */ - 10415, /* Vendor */ - "Tariff-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Tariff-XML */ - { - struct dict_avp_data data = { - 2306, /* Code */ - 10415, /* Vendor */ - "Tariff-XML", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Terminating-IOI */ - { - struct dict_avp_data data = { - 840, /* Code */ - 10415, /* Vendor */ - "Terminating-IOI", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Time-First-Usage */ - { - struct dict_avp_data data = { - 2043, /* Code */ - 10415, /* Vendor */ - "Time-First-Usage", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Time-Last-Usage */ - { - struct dict_avp_data data = { - 2044, /* Code */ - 10415, /* Vendor */ - "Time-Last-Usage", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Time-Quota-Mechanism */ - { - struct dict_avp_data data = { - 1270, /* Code */ - 10415, /* Vendor */ - "Time-Quota-Mechanism", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Time-Quota-Threshold */ - { - struct dict_avp_data data = { - 868, /* Code */ - 10415, /* Vendor */ - "Time-Quota-Threshold", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Time-Quota-Type */ - { - struct dict_avp_data data = { - 1271, /* Code */ - 10415, /* Vendor */ - "Time-Quota-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Time-Quota-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Time-Stamps */ - { - struct dict_avp_data data = { - 833, /* Code */ - 10415, /* Vendor */ - "Time-Stamps", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Time-Usage */ - { - struct dict_avp_data data = { - 2045, /* Code */ - 10415, /* Vendor */ - "Time-Usage", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Token-Text */ - { - struct dict_avp_data data = { - 1215, /* Code */ - 10415, /* Vendor */ - "Token-Text", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Traffic-Data-Volumes */ - { - struct dict_avp_data data = { - 2046, /* Code */ - 10415, /* Vendor */ - "Traffic-Data-Volumes", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Transcoder-Inserted-Indication */ - { - struct dict_avp_data data = { - 2605, /* Code */ - 10415, /* Vendor */ - "Transcoder-Inserted-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Transcoder-Inserted-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Transit-IOI-List */ - { - struct dict_avp_data data = { - 2701, /* Code */ - 10415, /* Vendor */ - "Transit-IOI-List", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Trigger */ - { - struct dict_avp_data data = { - 1264, /* Code */ - 10415, /* Vendor */ - "Trigger", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Trigger-Type */ - { - struct dict_avp_data data = { - 870, /* Code */ - 10415, /* Vendor */ - "Trigger-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trigger-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Trunk-Group-Id */ - { - struct dict_avp_data data = { - 851, /* Code */ - 10415, /* Vendor */ - "Trunk-Group-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Type-Number */ - { - struct dict_avp_data data = { - 1204, /* Code */ - 10415, /* Vendor */ - "Type-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Type-Number)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Unit-Cost */ - { - struct dict_avp_data data = { - 2061, /* Code */ - 10415, /* Vendor */ - "Unit-Cost", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Unit-Quota-Threshold */ - { - struct dict_avp_data data = { - 1226, /* Code */ - 10415, /* Vendor */ - "Unit-Quota-Threshold", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* User-CSG-Information */ - { - struct dict_avp_data data = { - 2319, /* Code */ - 10415, /* Vendor */ - "User-CSG-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* User-Participating-Type */ - { - struct dict_avp_data data = { - 1279, /* Code */ - 10415, /* Vendor */ - "User-Participating-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-Participating-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* User-Session-Id */ - { - struct dict_avp_data data = { - 830, /* Code */ - 10415, /* Vendor */ - "User-Session-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Volume-Quota-Threshold */ - { - struct dict_avp_data data = { - 869, /* Code */ - 10415, /* Vendor */ - "Volume-Quota-Threshold", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* WAG-Address */ - { - struct dict_avp_data data = { - 890, /* Code */ - 10415, /* Vendor */ - "WAG-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* WAG-PLMN-Id */ - { - struct dict_avp_data data = { - 891, /* Code */ - 10415, /* Vendor */ - "WAG-PLMN-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* WLAN-Information */ - { - struct dict_avp_data data = { - 875, /* Code */ - 10415, /* Vendor */ - "WLAN-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* WLAN-Radio-Container */ - { - struct dict_avp_data data = { - 892, /* Code */ - 10415, /* Vendor */ - "WLAN-Radio-Container", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* WLAN-Session-Id */ - { - struct dict_avp_data data = { - 1246, /* Code */ - 10415, /* Vendor */ - "WLAN-Session-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* WLAN-Technology */ - { - struct dict_avp_data data = { - 893, /* Code */ - 10415, /* Vendor */ - "WLAN-Technology", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* WLAN-UE-Local-IPAddress */ - { - struct dict_avp_data data = { - 894, /* Code */ - 10415, /* Vendor */ - "WLAN-UE-Local-IPAddress", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* 3GPP 29.272-c00 (12.0.0 2013.03.13) */ - /* Subscription-Data */ - { - struct dict_avp_data data = { - 1400, /* Code */ - 10415, /* Vendor */ - "Subscription-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Terminal-Information */ - { - struct dict_avp_data data = { - 1401, /* Code */ - 10415, /* Vendor */ - "Terminal-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* IMEI */ - { - struct dict_avp_data data = { - 1402, /* Code */ - 10415, /* Vendor */ - "IMEI", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Software-Version */ - { - struct dict_avp_data data = { - 1403, /* Code */ - 10415, /* Vendor */ - "Software-Version", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* QoS-Subscribed */ - { - struct dict_avp_data data = { - 1404, /* Code */ - 10415, /* Vendor */ - "QoS-Subscribed", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* ULR-Flags */ - { - struct dict_avp_data data = { - 1405, /* Code */ - 10415, /* Vendor */ - "ULR-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* ULA-Flags */ - { - struct dict_avp_data data = { - 1406, /* Code */ - 10415, /* Vendor */ - "ULA-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Visited-PLMN-Id */ - { - struct dict_avp_data data = { - 1407, /* Code */ - 10415, /* Vendor */ - "Visited-PLMN-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Requested-EUTRAN-Authentication-Info */ - { - struct dict_avp_data data = { - 1408, /* Code */ - 10415, /* Vendor */ - "Requested-EUTRAN-Authentication-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Requested-UTRAN-GERAN-Authentication-Info */ - { - struct dict_avp_data data = { - 1409, /* Code */ - 10415, /* Vendor */ - "Requested-UTRAN-GERAN-Authentication-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Number-Of-Requested-Vectors */ - { - struct dict_avp_data data = { - 1410, /* Code */ - 10415, /* Vendor */ - "Number-Of-Requested-Vectors", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Re-Synchronization-Info */ - { - struct dict_avp_data data = { - 1411, /* Code */ - 10415, /* Vendor */ - "Re-Synchronization-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Immediate-Response-Preferred */ - { - struct dict_avp_data data = { - 1412, /* Code */ - 10415, /* Vendor */ - "Immediate-Response-Preferred", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Authentication-Info */ - { - struct dict_avp_data data = { - 1413, /* Code */ - 10415, /* Vendor */ - "Authentication-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* E-UTRAN-Vector */ - { - struct dict_avp_data data = { - 1414, /* Code */ - 10415, /* Vendor */ - "E-UTRAN-Vector", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* UTRAN-Vector */ - { - struct dict_avp_data data = { - 1415, /* Code */ - 10415, /* Vendor */ - "UTRAN-Vector", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* GERAN-Vector */ - { - struct dict_avp_data data = { - 1416, /* Code */ - 10415, /* Vendor */ - "GERAN-Vector", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Network-Access-Mode */ - { - struct dict_avp_data data = { - 1417, /* Code */ - 10415, /* Vendor */ - "Network-Access-Mode", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Network-Access-Mode)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* HPLMN-ODB */ - { - struct dict_avp_data data = { - 1418, /* Code */ - 10415, /* Vendor */ - "HPLMN-ODB", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Item-Number */ - { - struct dict_avp_data data = { - 1419, /* Code */ - 10415, /* Vendor */ - "Item-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Cancellation-Type */ - { - struct dict_avp_data data = { - 1420, /* Code */ - 10415, /* Vendor */ - "Cancellation-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Cancellation-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* DSR-Flags */ - { - struct dict_avp_data data = { - 1421, /* Code */ - 10415, /* Vendor */ - "DSR-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* DSA-Flags */ - { - struct dict_avp_data data = { - 1422, /* Code */ - 10415, /* Vendor */ - "DSA-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Context-Identifier */ - { - struct dict_avp_data data = { - 1423, /* Code */ - 10415, /* Vendor */ - "Context-Identifier", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Subscriber-Status */ - { - struct dict_avp_data data = { - 1424, /* Code */ - 10415, /* Vendor */ - "Subscriber-Status", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscriber-Status)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Operator-Determined-Barring */ - { - struct dict_avp_data data = { - 1425, /* Code */ - 10415, /* Vendor */ - "Operator-Determined-Barring", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Access-Restriction-Data */ - { - struct dict_avp_data data = { - 1426, /* Code */ - 10415, /* Vendor */ - "Access-Restriction-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* APN-OI-Replacement */ - { - struct dict_avp_data data = { - 1427, /* Code */ - 10415, /* Vendor */ - "APN-OI-Replacement", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* All-APN-Configurations-Included-Indicator */ - { - struct dict_avp_data data = { - 1428, /* Code */ - 10415, /* Vendor */ - "All-APN-Configurations-Included-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/All-APN-Configurations-Included-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* APN-Configuration-Profile */ - { - struct dict_avp_data data = { - 1429, /* Code */ - 10415, /* Vendor */ - "APN-Configuration-Profile", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* APN-Configuration */ - { - struct dict_avp_data data = { - 1430, /* Code */ - 10415, /* Vendor */ - "APN-Configuration", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* EPS-Subscribed-QoS-Profile */ - { - struct dict_avp_data data = { - 1431, /* Code */ - 10415, /* Vendor */ - "EPS-Subscribed-QoS-Profile", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* VPLMN-Dynamic-Address-Allowed */ - { - struct dict_avp_data data = { - 1432, /* Code */ - 10415, /* Vendor */ - "VPLMN-Dynamic-Address-Allowed", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/VPLMN-Dynamic-Address-Allowed)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* STN-SR */ - { - struct dict_avp_data data = { - 1433, /* Code */ - 10415, /* Vendor */ - "STN-SR", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Alert-Reason */ - { - struct dict_avp_data data = { - 1434, /* Code */ - 10415, /* Vendor */ - "Alert-Reason", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Alert-Reason)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* AMBR */ - { - struct dict_avp_data data = { - 1435, /* Code */ - 10415, /* Vendor */ - "AMBR", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* CSG-Subscription-Data */ - { - struct dict_avp_data data = { - 1436, /* Code */ - 10415, /* Vendor */ - "CSG-Subscription-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* CSG-Id */ - { - struct dict_avp_data data = { - 1437, /* Code */ - 10415, /* Vendor */ - "CSG-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PDN-GW-Allocation-Type */ - { - struct dict_avp_data data = { - 1438, /* Code */ - 10415, /* Vendor */ - "PDN-GW-Allocation-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDN-GW-Allocation-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Expiration-Date */ - { - struct dict_avp_data data = { - 1439, /* Code */ - 10415, /* Vendor */ - "Expiration-Date", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* RAT-Frequency-Selection-Priority-ID */ - { - struct dict_avp_data data = { - 1440, /* Code */ - 10415, /* Vendor */ - "RAT-Frequency-Selection-Priority-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* IDA-Flags */ - { - struct dict_avp_data data = { - 1441, /* Code */ - 10415, /* Vendor */ - "IDA-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PUA-Flags */ - { - struct dict_avp_data data = { - 1442, /* Code */ - 10415, /* Vendor */ - "PUA-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* NOR-Flags */ - { - struct dict_avp_data data = { - 1443, /* Code */ - 10415, /* Vendor */ - "NOR-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* User-Id */ - { - struct dict_avp_data data = { - 1444, /* Code */ - 10415, /* Vendor */ - "User-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Equipment-Status */ - { - struct dict_avp_data data = { - 1445, /* Code */ - 10415, /* Vendor */ - "Equipment-Status", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Equipment-Status)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Regional-Subscription-Zone-Code */ - { - struct dict_avp_data data = { - 1446, /* Code */ - 10415, /* Vendor */ - "Regional-Subscription-Zone-Code", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* RAND */ - { - struct dict_avp_data data = { - 1447, /* Code */ - 10415, /* Vendor */ - "RAND", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* XRES */ - { - struct dict_avp_data data = { - 1448, /* Code */ - 10415, /* Vendor */ - "XRES", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* AUTN */ - { - struct dict_avp_data data = { - 1449, /* Code */ - 10415, /* Vendor */ - "AUTN", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* KASME */ - { - struct dict_avp_data data = { - 1450, /* Code */ - 10415, /* Vendor */ - "KASME", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Trace-Collection-Entity */ - { - struct dict_avp_data data = { - 1452, /* Code */ - 10415, /* Vendor */ - "Trace-Collection-Entity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* Kc */ - { - struct dict_avp_data data = { - 1453, /* Code */ - 10415, /* Vendor */ - "Kc", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SRES */ - { - struct dict_avp_data data = { - 1454, /* Code */ - 10415, /* Vendor */ - "SRES", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PDN-Type */ - { - struct dict_avp_data data = { - 1456, /* Code */ - 10415, /* Vendor */ - "PDN-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PDN-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Roaming-Restricted-Due-To-Unsupported-Feature */ - { - struct dict_avp_data data = { - 1457, /* Code */ - 10415, /* Vendor */ - "Roaming-Restricted-Due-To-Unsupported-Feature", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Roaming-Restricted-Due-To-Unsupported-Feature)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Trace-Data */ - { - struct dict_avp_data data = { - 1458, /* Code */ - 10415, /* Vendor */ - "Trace-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Trace-Reference */ - { - struct dict_avp_data data = { - 1459, /* Code */ - 10415, /* Vendor */ - "Trace-Reference", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Trace-Depth */ - { - struct dict_avp_data data = { - 1462, /* Code */ - 10415, /* Vendor */ - "Trace-Depth", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Trace-Depth)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Trace-NE-Type-List */ - { - struct dict_avp_data data = { - 1463, /* Code */ - 10415, /* Vendor */ - "Trace-NE-Type-List", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Trace-Interface-List */ - { - struct dict_avp_data data = { - 1464, /* Code */ - 10415, /* Vendor */ - "Trace-Interface-List", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Trace-Event-List */ - { - struct dict_avp_data data = { - 1465, /* Code */ - 10415, /* Vendor */ - "Trace-Event-List", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* OMC-Id */ - { - struct dict_avp_data data = { - 1466, /* Code */ - 10415, /* Vendor */ - "OMC-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* GPRS-Subscription-Data */ - { - struct dict_avp_data data = { - 1467, /* Code */ - 10415, /* Vendor */ - "GPRS-Subscription-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Complete-Data-List-Included-Indicator */ - { - struct dict_avp_data data = { - 1468, /* Code */ - 10415, /* Vendor */ - "Complete-Data-List-Included-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Complete-Data-List-Included-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PDP-Context */ - { - struct dict_avp_data data = { - 1469, /* Code */ - 10415, /* Vendor */ - "PDP-Context", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* PDP-Type */ - { - struct dict_avp_data data = { - 1470, /* Code */ - 10415, /* Vendor */ - "PDP-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 3GPP2-MEID */ - { - struct dict_avp_data data = { - 1471, /* Code */ - 10415, /* Vendor */ - "3GPP2-MEID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Specific-APN-Info */ - { - struct dict_avp_data data = { - 1472, /* Code */ - 10415, /* Vendor */ - "Specific-APN-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* LCS-Info */ - { - struct dict_avp_data data = { - 1473, /* Code */ - 10415, /* Vendor */ - "LCS-Info", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* GMLC-Number */ - { - struct dict_avp_data data = { - 1474, /* Code */ - 10415, /* Vendor */ - "GMLC-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* LCS-PrivacyException */ - { - struct dict_avp_data data = { - 1475, /* Code */ - 10415, /* Vendor */ - "LCS-PrivacyException", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SS-Code */ - { - struct dict_avp_data data = { - 1476, /* Code */ - 10415, /* Vendor */ - "SS-Code", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SS-Status */ - { - struct dict_avp_data data = { - 1477, /* Code */ - 10415, /* Vendor */ - "SS-Status", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Notification-To-UE-User */ - { - struct dict_avp_data data = { - 1478, /* Code */ - 10415, /* Vendor */ - "Notification-To-UE-User", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Notification-To-UE-User)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* External-Client */ - { - struct dict_avp_data data = { - 1479, /* Code */ - 10415, /* Vendor */ - "External-Client", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Client-Identity */ - { - struct dict_avp_data data = { - 1480, /* Code */ - 10415, /* Vendor */ - "Client-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* GMLC-Restriction */ - { - struct dict_avp_data data = { - 1481, /* Code */ - 10415, /* Vendor */ - "GMLC-Restriction", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/GMLC-Restriction)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PLMN-Client */ - { - struct dict_avp_data data = { - 1482, /* Code */ - 10415, /* Vendor */ - "PLMN-Client", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/PLMN-Client)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Service-Type */ - { - struct dict_avp_data data = { - 1483, /* Code */ - 10415, /* Vendor */ - "Service-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* ServiceTypeIdentity */ - { - struct dict_avp_data data = { - 1484, /* Code */ - 10415, /* Vendor */ - "ServiceTypeIdentity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MO-LR */ - { - struct dict_avp_data data = { - 1485, /* Code */ - 10415, /* Vendor */ - "MO-LR", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Teleservice-List */ - { - struct dict_avp_data data = { - 1486, /* Code */ - 10415, /* Vendor */ - "Teleservice-List", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* TS-Code */ - { - struct dict_avp_data data = { - 1487, /* Code */ - 10415, /* Vendor */ - "TS-Code", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Call-Barring-Infor-List */ - { - struct dict_avp_data data = { - 1488, /* Code */ - 10415, /* Vendor */ - "Call-Barring-Infor-List", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SGSN-Number */ - { - struct dict_avp_data data = { - 1489, /* Code */ - 10415, /* Vendor */ - "SGSN-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* IDR-Flags */ - { - struct dict_avp_data data = { - 1490, /* Code */ - 10415, /* Vendor */ - "IDR-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* ICS-Indicator */ - { - struct dict_avp_data data = { - 1491, /* Code */ - 10415, /* Vendor */ - "ICS-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/ICS-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* IMS-Voice-Over-PS-Sessions-Supported */ - { - struct dict_avp_data data = { - 1492, /* Code */ - 10415, /* Vendor */ - "IMS-Voice-Over-PS-Sessions-Supported", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/IMS-Voice-Over-PS-Sessions-Supported)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions */ - { - struct dict_avp_data data = { - 1493, /* Code */ - 10415, /* Vendor */ - "Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Last-UE-Activity-Time */ - { - struct dict_avp_data data = { - 1494, /* Code */ - 10415, /* Vendor */ - "Last-UE-Activity-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* EPS-User-State */ - { - struct dict_avp_data data = { - 1495, /* Code */ - 10415, /* Vendor */ - "EPS-User-State", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* EPS-Location-Information */ - { - struct dict_avp_data data = { - 1496, /* Code */ - 10415, /* Vendor */ - "EPS-Location-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MME-User-State */ - { - struct dict_avp_data data = { - 1497, /* Code */ - 10415, /* Vendor */ - "MME-User-State", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SGSN-User-State */ - { - struct dict_avp_data data = { - 1498, /* Code */ - 10415, /* Vendor */ - "SGSN-User-State", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* User-State */ - { - struct dict_avp_data data = { - 1499, /* Code */ - 10415, /* Vendor */ - "User-State", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/User-State)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MME-LocationInformation */ - { - struct dict_avp_data data = { - 1600, /* Code */ - 10415, /* Vendor */ - "MME-LocationInformation", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SGSN-Location-Information */ - { - struct dict_avp_data data = { - 1601, /* Code */ - 10415, /* Vendor */ - "SGSN-Location-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* E-UTRAN-Cell-Global-Identity */ - { - struct dict_avp_data data = { - 1602, /* Code */ - 10415, /* Vendor */ - "E-UTRAN-Cell-Global-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Tracking-Area-Identity */ - { - struct dict_avp_data data = { - 1603, /* Code */ - 10415, /* Vendor */ - "Tracking-Area-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Cell-Global-Identity */ - { - struct dict_avp_data data = { - 1604, /* Code */ - 10415, /* Vendor */ - "Cell-Global-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Routing-Area-Identity */ - { - struct dict_avp_data data = { - 1605, /* Code */ - 10415, /* Vendor */ - "Routing-Area-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Location-Area-Identity */ - { - struct dict_avp_data data = { - 1606, /* Code */ - 10415, /* Vendor */ - "Location-Area-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Service-Area-Identity */ - { - struct dict_avp_data data = { - 1607, /* Code */ - 10415, /* Vendor */ - "Service-Area-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Geographical-Information */ - { - struct dict_avp_data data = { - 1608, /* Code */ - 10415, /* Vendor */ - "Geographical-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Geodetic-Information */ - { - struct dict_avp_data data = { - 1609, /* Code */ - 10415, /* Vendor */ - "Geodetic-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Current-Location-Retrieved */ - { - struct dict_avp_data data = { - 1610, /* Code */ - 10415, /* Vendor */ - "Current-Location-Retrieved", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Current-Location-Retrieved)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Age-Of-Location-Information */ - { - struct dict_avp_data data = { - 1611, /* Code */ - 10415, /* Vendor */ - "Age-Of-Location-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Active-APN */ - { - struct dict_avp_data data = { - 1612, /* Code */ - 10415, /* Vendor */ - "Active-APN", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Error-Diagnostic */ - { - struct dict_avp_data data = { - 1614, /* Code */ - 10415, /* Vendor */ - "Error-Diagnostic", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Error-Diagnostic)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Ext-PDP-Address */ - { - struct dict_avp_data data = { - 1621, /* Code */ - 10415, /* Vendor */ - "Ext-PDP-Address", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Address_type, NULL); - }; - - /* UE-SRVCC-Capability */ - { - struct dict_avp_data data = { - 1615, /* Code */ - 10415, /* Vendor */ - "UE-SRVCC-Capability", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/UE-SRVCC-Capability)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MPS-Priority */ - { - struct dict_avp_data data = { - 1616, /* Code */ - 10415, /* Vendor */ - "MPS-Priority", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* VPLMN-LIPA-Allowed */ - { - struct dict_avp_data data = { - 1617, /* Code */ - 10415, /* Vendor */ - "VPLMN-LIPA-Allowed", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/VPLMN-LIPA-Allowed)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* LIPA-Permission */ - { - struct dict_avp_data data = { - 1618, /* Code */ - 10415, /* Vendor */ - "LIPA-Permission", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/LIPA-Permission)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Subscribed-Periodic-RAU-TAU-Timer */ - { - struct dict_avp_data data = { - 1619, /* Code */ - 10415, /* Vendor */ - "Subscribed-Periodic-RAU-TAU-Timer", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Ext-PDP-Type */ - { - struct dict_avp_data data = { - 1620, /* Code */ - 10415, /* Vendor */ - "Ext-PDP-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SIPTO-Permission */ - { - struct dict_avp_data data = { - 1613, /* Code */ - 10415, /* Vendor */ - "SIPTO-Permission", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SIPTO-Permission)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MDT-Configuration */ - { - struct dict_avp_data data = { - 1622, /* Code */ - 10415, /* Vendor */ - "MDT-Configuration", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Job-Type */ - { - struct dict_avp_data data = { - 1623, /* Code */ - 10415, /* Vendor */ - "Job-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Job-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Area-Scope */ - { - struct dict_avp_data data = { - 1624, /* Code */ - 10415, /* Vendor */ - "Area-Scope", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* List-Of-Measurements */ - { - struct dict_avp_data data = { - 1625, /* Code */ - 10415, /* Vendor */ - "List-Of-Measurements", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Reporting-Trigger */ - { - struct dict_avp_data data = { - 1626, /* Code */ - 10415, /* Vendor */ - "Reporting-Trigger", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Report-Interval */ - { - struct dict_avp_data data = { - 1627, /* Code */ - 10415, /* Vendor */ - "Report-Interval", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Report-Interval)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Report-Amount */ - { - struct dict_avp_data data = { - 1628, /* Code */ - 10415, /* Vendor */ - "Report-Amount", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Report-Amount)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Event-Threshold-RSRP */ - { - struct dict_avp_data data = { - 1629, /* Code */ - 10415, /* Vendor */ - "Event-Threshold-RSRP", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Event-Threshold-RSRQ */ - { - struct dict_avp_data data = { - 1630, /* Code */ - 10415, /* Vendor */ - "Event-Threshold-RSRQ", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Logging-Interval */ - { - struct dict_avp_data data = { - 1631, /* Code */ - 10415, /* Vendor */ - "Logging-Interval", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Logging-Interval)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Logging-Duration */ - { - struct dict_avp_data data = { - 1632, /* Code */ - 10415, /* Vendor */ - "Logging-Duration", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Logging-Duration)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Relay-Node-Indicator */ - { - struct dict_avp_data data = { - 1633, /* Code */ - 10415, /* Vendor */ - "Relay-Node-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Relay-Node-Indicator)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* MDT-User-Consent */ - { - struct dict_avp_data data = { - 1634, /* Code */ - 10415, /* Vendor */ - "MDT-User-Consent", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/MDT-User-Consent)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* PUR-Flags */ - { - struct dict_avp_data data = { - 1635, /* Code */ - 10415, /* Vendor */ - "PUR-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Subscribed-VSRVCC */ - { - struct dict_avp_data data = { - 1636, /* Code */ - 10415, /* Vendor */ - "Subscribed-VSRVCC", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subscribed-VSRVCC)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Equivalent-PLMN-List */ - { - struct dict_avp_data data = { - 1637, /* Code */ - 10415, /* Vendor */ - "Equivalent-PLMN-List", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* CLR-Flags */ - { - struct dict_avp_data data = { - 1638, /* Code */ - 10415, /* Vendor */ - "CLR-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* UVR-Flags */ - { - struct dict_avp_data data = { - 1639, /* Code */ - 10415, /* Vendor */ - "UVR-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* UVA-Flags */ - { - struct dict_avp_data data = { - 1640, /* Code */ - 10415, /* Vendor */ - "UVA-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* VPLMN-CSG-Subscription-Data */ - { - struct dict_avp_data data = { - 1641, /* Code */ - 10415, /* Vendor */ - "VPLMN-CSG-Subscription-Data", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Time-Zone */ - { - struct dict_avp_data data = { - 1642, /* Code */ - 10415, /* Vendor */ - "Time-Zone", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* A-MSISDN */ - { - struct dict_avp_data data = { - 1643, /* Code */ - 10415, /* Vendor */ - "A-MSISDN", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MME-Number-for-MT-SMS */ - { - struct dict_avp_data data = { - 1645, /* Code */ - 10415, /* Vendor */ - "MME-Number-for-MT-SMS", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SMS-Register-Request */ - { - struct dict_avp_data data = { - 1648, /* Code */ - 10415, /* Vendor */ - "SMS-Register-Request", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/SMS-Register-Request)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Local-Time-Zone */ - { - struct dict_avp_data data = { - 1649, /* Code */ - 10415, /* Vendor */ - "Local-Time-Zone", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Daylight-Saving-Time */ - { - struct dict_avp_data data = { - 1650, /* Code */ - 10415, /* Vendor */ - "Daylight-Saving-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Daylight-Saving-Time)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Subscription-Data-Flags */ - { - struct dict_avp_data data = { - 1654, /* Code */ - 10415, /* Vendor */ - "Subscription-Data-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Measurement-Period-UMTS */ - { - struct dict_avp_data data = { - 1655, /* Code */ - 10415, /* Vendor */ - "Measurement-Period-UMTS", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Measurement-Period-UMTS)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Measurement-Period-LTE */ - { - struct dict_avp_data data = { - 1656, /* Code */ - 10415, /* Vendor */ - "Measurement-Period-LTE", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Measurement-Period-LTE)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Collection-Period-RRM-LTE */ - { - struct dict_avp_data data = { - 1657, /* Code */ - 10415, /* Vendor */ - "Collection-Period-RRM-LTE", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Collection-Period-RRM-LTE)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Collection-Period-RRM-UMTS */ - { - struct dict_avp_data data = { - 1658, /* Code */ - 10415, /* Vendor */ - "Collection-Period-RRM-UMTS", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Collection-Period-RRM-UMTS)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Positioning-Method */ - { - struct dict_avp_data data = { - 1659, /* Code */ - 10415, /* Vendor */ - "Positioning-Method", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Measurement-Quantity */ - { - struct dict_avp_data data = { - 1660, /* Code */ - 10415, /* Vendor */ - "Measurement-Quantity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Event-Threshold-Event-1F */ - { - struct dict_avp_data data = { - 1661, /* Code */ - 10415, /* Vendor */ - "Event-Threshold-Event-1F", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Event-Threshold-Event-1I */ - { - struct dict_avp_data data = { - 1662, /* Code */ - 10415, /* Vendor */ - "Event-Threshold-Event-1I", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* 3GPP 29.329-b50 (11.5.0 2012.12.21) */ - /* User-Identity */ - { - struct dict_avp_data data = { - 700, /* Code */ - 10415, /* Vendor */ - "User-Identity", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* MSISDN */ - { - struct dict_avp_data data = { - 701, /* Code */ - 10415, /* Vendor */ - "MSISDN", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Name conflict with 29.229 User-Data (606), renamed */ - /* User-Data-29.329 */ - { - struct dict_avp_data data = { - 702, /* Code */ - 10415, /* Vendor */ - "User-Data-29.329", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Data-Reference */ - { - struct dict_avp_data data = { - 703, /* Code */ - 10415, /* Vendor */ - "Data-Reference", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Data-Reference)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Service-Indication */ - { - struct dict_avp_data data = { - 704, /* Code */ - 10415, /* Vendor */ - "Service-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Subs-Req-Type */ - { - struct dict_avp_data data = { - 705, /* Code */ - 10415, /* Vendor */ - "Subs-Req-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Subs-Req-Type)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Requested-Domain */ - { - struct dict_avp_data data = { - 706, /* Code */ - 10415, /* Vendor */ - "Requested-Domain", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Requested-Domain)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Current-Location */ - { - struct dict_avp_data data = { - 707, /* Code */ - 10415, /* Vendor */ - "Current-Location", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Current-Location)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Identity-Set */ - { - struct dict_avp_data data = { - 708, /* Code */ - 10415, /* Vendor */ - "Identity-Set", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Identity-Set)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Expiry-Time */ - { - struct dict_avp_data data = { - 709, /* Code */ - 10415, /* Vendor */ - "Expiry-Time", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* Send-Data-Indication */ - { - struct dict_avp_data data = { - 710, /* Code */ - 10415, /* Vendor */ - "Send-Data-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Send-Data-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* in 29.229 */ - /* Server-Name */ - /* Supported-Features */ - /* Feature-List-ID */ - /* Feature-List */ - /* Supported-Applications */ - /* Public-Identity */ - /* DSAI-Tag */ - { - struct dict_avp_data data = { - 711, /* Code */ - 10415, /* Vendor */ - "DSAI-Tag", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* in 29.229 */ - /* Wildcarded-Public-Identity */ - /* Wildcarded-IMPU */ - { - struct dict_avp_data data = { - 636, /* Code */ - 10415, /* Vendor */ - "Wildcarded-IMPU", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* in 29.229 */ - /* Session-Priority */ - /* One-Time-Notification */ - { - struct dict_avp_data data = { - 712, /* Code */ - 10415, /* Vendor */ - "One-Time-Notification", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/One-Time-Notification)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Requested-Nodes */ - { - struct dict_avp_data data = { - 713, /* Code */ - 10415, /* Vendor */ - "Requested-Nodes", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Serving-Node-Indication */ - { - struct dict_avp_data data = { - 714, /* Code */ - 10415, /* Vendor */ - "Serving-Node-Indication", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(3GPP/Serving-Node-Indication)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* Repository-Data-ID */ - { - struct dict_avp_data data = { - 715, /* Code */ - 10415, /* Vendor */ - "Repository-Data-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Sequence-Number */ - { - struct dict_avp_data data = { - 716, /* Code */ - 10415, /* Vendor */ - "Sequence-Number", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* UDR-Flags */ - { - struct dict_avp_data data = { - 719, /* Code */ - 10415, /* Vendor */ - "UDR-Flags", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* OMA DDS Charging_Data V1.0 20110201-A */ - /* Application-Server-Id */ - { - struct dict_avp_data data = { - 2101, /* Code */ - 10415, /* Vendor */ - "Application-Server-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Application-Service-Type */ - { - struct dict_avp_data data = { - 2102, /* Code */ - 10415, /* Vendor */ - "Application-Service-Type", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Application-Session-Id */ - { - struct dict_avp_data data = { - 2103, /* Code */ - 10415, /* Vendor */ - "Application-Session-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Content-ID */ - { - struct dict_avp_data data = { - 2116, /* Code */ - 10415, /* Vendor */ - "Content-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* Content-provider-ID */ - { - struct dict_avp_data data = { - 2117, /* Code */ - 10415, /* Vendor */ - "Content-provider-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* DCD-Information */ - { - struct dict_avp_data data = { - 2115, /* Code */ - 10415, /* Vendor */ - "DCD-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Delivery-Status */ - { - struct dict_avp_data data = { - 2104, /* Code */ - 10415, /* Vendor */ - "Delivery-Status", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* IM-Information */ - { - struct dict_avp_data data = { - 2110, /* Code */ - 10415, /* Vendor */ - "IM-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Number-Of-Messages-Successfully-Exploded */ - { - struct dict_avp_data data = { - 2111, /* Code */ - 10415, /* Vendor */ - "Number-Of-Messages-Successfully-Exploded", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Number-Of-Messages-Successfully-Sent */ - { - struct dict_avp_data data = { - 2112, /* Code */ - 10415, /* Vendor */ - "Number-Of-Messages-Successfully-Sent", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Service-Generic-Information */ - { - struct dict_avp_data data = { - 1256, /* Code */ - 10415, /* Vendor */ - "Service-Generic-Information", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Total-Number-Of-Messages-Exploded */ - { - struct dict_avp_data data = { - 2113, /* Code */ - 10415, /* Vendor */ - "Total-Number-Of-Messages-Exploded", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* Total-Number-Of-Messages-Sent */ - { - struct dict_avp_data data = { - 2114, /* Code */ - 10415, /* Vendor */ - "Total-Number-Of-Messages-Sent", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - - - - - /*****************************************************/ - /* end of generated data, rules below added manually */ - /*****************************************************/ + /*==================================================================*/ + /* Create AVPs via generated add_avps() */ + /*==================================================================*/ + extern int add_avps(); + CHECK_FCT( add_avps() ); - - /* 3GPP2-BSID */ - { - struct dict_avp_data data = { - 9010, /* Code */ - 5535, /* Vendor */ - "3GPP2-BSID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ /* XXX: guessed */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; + /*==================================================================*/ + /* Rules section */ + /*==================================================================*/ - /* 29.212 */ + /*==================================================================*/ + /* 3GPP TS 29.212 V15.9.0 (2019-12) */ + /*==================================================================*/ { struct dict_object *rule_avp; @@ -10276,9 +365,9 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Priority-Level" }, RULE_REQUIRED, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Pre-emption-Capability" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Pre-emption-Vulnerability" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Priority-Level", RULE_REQUIRED, -1, 1 }, + { 10415, "Pre-emption-Capability", RULE_OPTIONAL, -1, 1 }, + { 10415, "Pre-emption-Vulnerability", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10291,20 +380,29 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "QoS-Class-Identifier" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Max-Requested-Bandwidth-UL" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Max-Requested-Bandwidth-DL" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Guaranteed-Bitrate-UL" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Guaranteed-Bitrate-DL" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Bearer-Identifier" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Allocation-Retention-Priority" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "APN-Aggregate-Max-Bitrate-UL" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "APN-Aggregate-Max-Bitrate-DL" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "QoS-Class-Identifier", RULE_OPTIONAL, -1, 1 }, + { 10415, "Max-Requested-Bandwidth-UL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Max-Requested-Bandwidth-DL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Extended-Max-Requested-BW-UL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Extended-Max-Requested-BW-DL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Guaranteed-Bitrate-UL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Guaranteed-Bitrate-DL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Extended-GBR-UL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Extended-GBR-DL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Bearer-Identifier", RULE_OPTIONAL, -1, 1 }, + { 10415, "Allocation-Retention-Priority", RULE_OPTIONAL, -1, 1 }, + { 10415, "APN-Aggregate-Max-Bitrate-UL", RULE_OPTIONAL, -1, 1 }, + { 10415, "APN-Aggregate-Max-Bitrate-DL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Extended-APN-AMBR-UL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Extended-APN-AMBR-DL", RULE_OPTIONAL, -1, 1 }, + { 10415, "Conditional-APN-Aggregate-Max-Bitrate", RULE_OPTIONAL, -1, -1 }, }; PARSE_loc_rules(rules, rule_avp); } - /* 32.299 */ + /*==================================================================*/ + /* 3GPP TS 32.299 V15.7.0 (2019-06) */ + /*==================================================================*/ { /* additional allowed AVPs */ @@ -10312,8 +410,8 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Credit-Control-Request", &ccr); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "AoC-Request-Type"}, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Service-Information"}, RULE_OPTIONAL, -1, 1 }, + { 10415, "AoC-Request-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Service-Information", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, ccr); } @@ -10324,9 +422,9 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Credit-Control-Answer", &ccr); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Low-Balance-Indication"}, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Remaining-Balance"}, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Service-Information"}, RULE_OPTIONAL, -1, 1 }, + { 10415, "Low-Balance-Indication", RULE_OPTIONAL, -1, 1 }, + { 10415, "Remaining-Balance", RULE_OPTIONAL, -1, 1 }, + { 10415, "Service-Information", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, ccr); } @@ -10339,8 +437,8 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Domain-Name" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-IMSI-MCC-MNC" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Domain-Name", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-IMSI-MCC-MNC", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10353,8 +451,9 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Application-Server" }, RULE_REQUIRED, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Application-Provided-Called-Party-Address" }, RULE_OPTIONAL, -1, -1 }, + { 10415, "Application-Server", RULE_OPTIONAL, -1, 1 }, + { 10415, "Application-Provided-Called-Party-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "Status-AS-Code", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10367,10 +466,10 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Interface-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Interface-Text" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Interface-Port" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Interface-Type" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Interface-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "Interface-Text", RULE_OPTIONAL, -1, 1 }, + { 10415, "Interface-Port", RULE_OPTIONAL, -1, 1 }, + { 10415, "Interface-Type", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10383,12 +482,12 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Envelope-Start-Time" }, RULE_REQUIRED, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Envelope-End-Time" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 0, .avp_name = "CC-Total-Octets" }, RULE_REQUIRED, -1, 1 }, - { { .avp_vendor = 0, .avp_name = "CC-Input-Octets" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 0, .avp_name = "CC-Output-Octets" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 0, .avp_name = "CC-Service-Specific-Units" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Envelope-Start-Time", RULE_REQUIRED, -1, 1 }, + { 10415, "Envelope-End-Time", RULE_OPTIONAL, -1, 1 }, + { 0, "CC-Total-Octets", RULE_REQUIRED, -1, 1 }, + { 0, "CC-Input-Octets", RULE_OPTIONAL, -1, 1 }, + { 0, "CC-Output-Octets", RULE_OPTIONAL, -1, 1 }, + { 0, "CC-Service-Specific-Units", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10401,9 +500,9 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "SIP-Method" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Event" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Expires" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "SIP-Method", RULE_OPTIONAL, -1, 1 }, + { 10415, "Event", RULE_OPTIONAL, -1, 1 }, + { 10415, "Expires", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10416,47 +515,58 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Event-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Role-Of-Node" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Node-Functionality" }, RULE_REQUIRED, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "User-Session-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Outgoing-Session-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Session-Priority" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Calling-Party-Address" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Called-Party-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Called-Asserted-Identity" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Number-Portability-Routing-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Carrier-Select-Routing-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Alternate-Charged-Party-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Requested-Party-Address" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Associated-URI" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Time-Stamps" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Application-Server-Information" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Inter-Operator-Identifier" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Transit-IOI-List" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "IMS-Charging-Identifier" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SDP-Session-Description" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "SDP-Media-Component" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Served-Party-IP-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Server-Capabilities" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Trunk-Group-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Bearer-Service" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Service-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Service-Specific-Info" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Message-Body" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Cause-Code" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Access-Network-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Early-Media-Description" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "IMS-Communication-Service-Identifier" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "IMS-Application-Reference-Identifier" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Online-Charging-Flag" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Real-Time-Tariff-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Account-Expiration" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Initial-IMS-Charging-Identifier" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "NNI-Information" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "From-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "IMS-Emergency-Indicator" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Access-Transfer-Information" }, RULE_OPTIONAL, -1, -1 }, + { 10415, "Event-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Role-Of-Node", RULE_OPTIONAL, -1, 1 }, + { 10415, "Node-Functionality", RULE_REQUIRED, -1, 1 }, + { 10415, "User-Session-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "Outgoing-Session-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "Session-Priority", RULE_OPTIONAL, -1, 1 }, + { 10415, "Calling-Party-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "Called-Party-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "Called-Asserted-Identity", RULE_OPTIONAL, -1, -1 }, + { 10415, "Number-Portability-Routing-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "Carrier-Select-Routing-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "Alternate-Charged-Party-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "Requested-Party-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "Associated-URI", RULE_OPTIONAL, -1, -1 }, + { 10415, "Time-Stamps", RULE_OPTIONAL, -1, 1 }, + { 10415, "Application-Server-Information", RULE_OPTIONAL, -1, -1 }, + { 10415, "Inter-Operator-Identifier", RULE_OPTIONAL, -1, -1 }, + { 10415, "Transit-IOI-List", RULE_OPTIONAL, -1, 1 }, + { 10415, "IMS-Charging-Identifier", RULE_OPTIONAL, -1, 1 }, + { 10415, "SDP-Session-Description", RULE_OPTIONAL, -1, -1 }, + { 10415, "SDP-Media-Component", RULE_OPTIONAL, -1, -1 }, + { 10415, "Served-Party-IP-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "Server-Capabilities", RULE_OPTIONAL, -1, 1 }, + { 10415, "Trunk-Group-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "Bearer-Service", RULE_OPTIONAL, -1, 1 }, + { 10415, "Service-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "Service-Specific-Info", RULE_OPTIONAL, -1, -1 }, + { 10415, "Message-Body", RULE_OPTIONAL, -1, -1 }, + { 10415, "Cause-Code", RULE_OPTIONAL, -1, 1 }, + { 10415, "Reason-Header", RULE_OPTIONAL, -1, -1 }, + { 10415, "Access-Network-Information", RULE_OPTIONAL, -1, -1 }, + { 10415, "Cellular-Network-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "Early-Media-Description", RULE_OPTIONAL, -1, -1 }, + { 10415, "IMS-Communication-Service-Identifier",RULE_OPTIONAL, -1, 1 }, + { 10415, "IMS-Application-Reference-Identifier",RULE_OPTIONAL, -1, 1 }, + { 10415, "Online-Charging-Flag", RULE_OPTIONAL, -1, 1 }, + { 10415, "Real-Time-Tariff-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "Account-Expiration", RULE_OPTIONAL, -1, 1 }, + { 10415, "Initial-IMS-Charging-Identifier", RULE_OPTIONAL, -1, 1 }, + { 10415, "NNI-Information", RULE_OPTIONAL, -1, -1 }, + { 10415, "From-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "IMS-Emergency-Indicator", RULE_OPTIONAL, -1, 1 }, + { 10415, "IMS-Visited-Network-Identifier", RULE_OPTIONAL, -1, 1 }, + { 10415, "Access-Network-Info-Change", RULE_OPTIONAL, -1, -1 }, + { 10415, "Access-Transfer-Information", RULE_OPTIONAL, -1, -1 }, + { 10415, "Related-IMS-Charging-Identifier", RULE_OPTIONAL, -1, 1 }, + { 10415, "Related-IMS-Charging-Identifier-Node",RULE_OPTIONAL, -1, 1 }, + { 10415, "Route-Header-Received", RULE_OPTIONAL, -1, 1 }, + { 10415, "Route-Header-Transmitted", RULE_OPTIONAL, -1, 1 }, + { 10415, "Instance-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "TAD-Identifier", RULE_OPTIONAL, -1, 1 }, + { 10415, "FE-Identifier-List", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10469,8 +579,8 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Class-Identifier" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Token-Text" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Class-Identifier", RULE_OPTIONAL, -1, 1 }, + { 10415, "Token-Text", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10483,26 +593,26 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Originator-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Recipient-Address" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Submission-Time" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "MM-Content-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Priority" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Message-ID" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Message-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Message-Size" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Message-Class" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Delivery-Report-Requested" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Read-Reply-Report-Requested" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "MMBox-Storage-Requested" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Applic-ID" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Reply-Applic-ID" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Aux-Applic-Info" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Content-Class" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "DRM-Content" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Adaptations" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "VASP-ID" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "VAS-ID" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Originator-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "Recipient-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "Submission-Time", RULE_OPTIONAL, -1, 1 }, + { 10415, "MM-Content-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Priority", RULE_OPTIONAL, -1, 1 }, + { 10415, "Message-ID", RULE_OPTIONAL, -1, 1 }, + { 10415, "Message-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Message-Size", RULE_OPTIONAL, -1, 1 }, + { 10415, "Message-Class", RULE_OPTIONAL, -1, 1 }, + { 10415, "Delivery-Report-Requested", RULE_OPTIONAL, -1, 1 }, + { 10415, "Read-Reply-Report-Requested", RULE_OPTIONAL, -1, 1 }, + { 10415, "MMBox-Storage-Requested", RULE_OPTIONAL, -1, 1 }, + { 10415, "Applic-ID", RULE_OPTIONAL, -1, 1 }, + { 10415, "Reply-Applic-ID", RULE_OPTIONAL, -1, 1 }, + { 10415, "Aux-Applic-Info", RULE_OPTIONAL, -1, 1 }, + { 10415, "Content-Class", RULE_OPTIONAL, -1, 1 }, + { 10415, "DRM-Content", RULE_OPTIONAL, -1, 1 }, + { 10415, "Adaptations", RULE_OPTIONAL, -1, 1 }, + { 10415, "VASP-ID", RULE_OPTIONAL, -1, 1 }, + { 10415, "VAS-ID", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10517,21 +627,21 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Time-Quota-Threshold" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Volume-Quota-Threshold" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Unit-Quota-Threshold" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Quota-Holding-Time" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Quota-Consumption-Time" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Reporting-Reason" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Trigger" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "PS-Furnish-Charging-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Refund-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "AF-Correlation-Information" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Envelope" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Envelope-Reporting" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Time-Quota-Mechanism" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Service-Specific-Info" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "QoS-Information" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Time-Quota-Threshold", RULE_OPTIONAL, -1, 1 }, + { 10415, "Volume-Quota-Threshold", RULE_OPTIONAL, -1, 1 }, + { 10415, "Unit-Quota-Threshold", RULE_OPTIONAL, -1, 1 }, + { 10415, "Quota-Holding-Time", RULE_OPTIONAL, -1, 1 }, + { 10415, "Quota-Consumption-Time", RULE_OPTIONAL, -1, 1 }, + { 10415, "Reporting-Reason", RULE_OPTIONAL, -1, -1 }, + { 10415, "Trigger", RULE_OPTIONAL, -1, 1 }, + { 10415, "PS-Furnish-Charging-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "Refund-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "AF-Correlation-Information", RULE_OPTIONAL, -1, -1 }, + { 10415, "Envelope", RULE_OPTIONAL, -1, -1 }, + { 10415, "Envelope-Reporting", RULE_OPTIONAL, -1, 1 }, + { 10415, "Time-Quota-Mechanism", RULE_OPTIONAL, -1, 1 }, + { 10415, "Service-Specific-Info", RULE_OPTIONAL, -1, -1 }, + { 10415, "QoS-Information", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10544,10 +654,10 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Quota-Consumption-Time" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Time-Quota-Mechanism" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Envelope-Reporting" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 0, .avp_name = "Multiple-Services-Credit-Control" }, RULE_OPTIONAL, -1, -1 }, + { 10415, "Quota-Consumption-Time", RULE_OPTIONAL, -1, 1 }, + { 10415, "Time-Quota-Mechanism", RULE_OPTIONAL, -1, 1 }, + { 10415, "Envelope-Reporting", RULE_OPTIONAL, -1, 1 }, + { 0, "Multiple-Services-Credit-Control", RULE_OPTIONAL, -1, -1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10560,9 +670,9 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Data", RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Domain", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10575,10 +685,10 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Interface-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Interface-Text" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Interface-Port" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Interface-Type" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Interface-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "Interface-Text", RULE_OPTIONAL, -1, 1 }, + { 10415, "Interface-Port", RULE_OPTIONAL, -1, 1 }, + { 10415, "Interface-Type", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10591,9 +701,9 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Data", RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Domain", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10606,9 +716,9 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Id" }, RULE_REQUIRED, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "PS-Free-Format-Data" }, RULE_REQUIRED, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "PS-Append-Free-Format-Data" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-Charging-Id", RULE_REQUIRED, -1, 1 }, + { 10415, "PS-Free-Format-Data", RULE_REQUIRED, -1, 1 }, + { 10415, "PS-Append-Free-Format-Data", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10621,52 +731,80 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "PDN-Connection-Charging-ID" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Node-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-PDP-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "PDP-Address" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "PDP-Address-Prefix-Length" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Dynamic-Address-Flag" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Dynamic-Address-Flag-Extension" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "QoS-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SGSN-Address" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "GGSN-Address" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "SGW-Address" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "CG-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Serving-Node-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SGW-Change" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-IMSI-MCC-MNC" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "IMSI-Unauthenticated-Flag" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-GGSN-MCC-MNC" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-NSAPI" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 0, .avp_name = "Called-Station-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-Session-Stop-Indicator" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-Selection-Mode" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Characteristics" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Charging-Characteristics-Selection-Mode" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-SGSN-MCC-MNC" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-MS-TimeZone" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Charging-Rule-Base-Name" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-User-Location-Info" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "User-CSG-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 5535, .avp_name = "3GPP2-BSID" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-RAT-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "PS-Furnish-Charging-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "PDP-Context-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Offline-Charging" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Traffic-Data-Volumes" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Service-Data-Container" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 0, .avp_name = "User-Equipment-Info" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Terminal-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Start-Time" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Stop-Time" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Change-Condition" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Diagnostics" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Low-Priority-Indicator" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "MME-Number-for-MT-SMS" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "MME-Name" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "MME-Realm" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Supported-Features", RULE_OPTIONAL, -1, -1 }, + { 10415, "3GPP-Charging-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "PDN-Connection-Charging-ID", RULE_OPTIONAL, -1, 1 }, + { 10415, "Node-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-PDP-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "PDP-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "PDP-Address-Prefix-Length", RULE_OPTIONAL, -1, 1 }, + { 10415, "Dynamic-Address-Flag", RULE_OPTIONAL, -1, 1 }, + { 10415, "Dynamic-Address-Flag-Extension", RULE_OPTIONAL, -1, 1 }, + { 10415, "QoS-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "SGSN-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "GGSN-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "TDF-IP-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "SGW-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "EPDG-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "CG-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "Serving-Node-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "SGW-Change", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-IMSI-MCC-MNC", RULE_OPTIONAL, -1, 1 }, + { 10415, "IMSI-Unauthenticated-Flag", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-GGSN-MCC-MNC", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-NSAPI", RULE_OPTIONAL, -1, 1 }, + { 0, "Called-Station-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-Session-Stop-Indicator", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-Selection-Mode", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-Charging-Characteristics", RULE_OPTIONAL, -1, 1 }, + { 10415, "Charging-Characteristics-Selection-Mode", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-SGSN-MCC-MNC", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-MS-TimeZone", RULE_OPTIONAL, -1, 1 }, + { 10415, "Charging-Rule-Base-Name", RULE_OPTIONAL, -1, 1 }, + { 10415, "ADC-Rule-Base-Name", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-User-Location-Info", RULE_OPTIONAL, -1, 1 }, + { 10415, "User-Location-Info-Time", RULE_OPTIONAL, -1, 1 }, + { 10415, "User-CSG-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "Presence-Reporting-Area-Information", RULE_OPTIONAL, -1, -1 }, + { 5535, "3GPP2-BSID", RULE_OPTIONAL, -1, 1 }, + { 10415, "TWAN-User-Location-Info", RULE_OPTIONAL, -1, 1 }, + { 10415, "UWAN-User-Location-Info", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-RAT-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "PS-Furnish-Charging-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "PDP-Context-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Offline-Charging", RULE_OPTIONAL, -1, 1 }, + { 10415, "Traffic-Data-Volumes", RULE_OPTIONAL, -1, -1 }, + { 10415, "Service-Data-Container", RULE_OPTIONAL, -1, -1 }, + { 0, "User-Equipment-Info", RULE_OPTIONAL, -1, 1 }, + { 10415, "Terminal-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "Start-Time", RULE_OPTIONAL, -1, 1 }, + { 10415, "Stop-Time", RULE_OPTIONAL, -1, 1 }, + { 10415, "Change-Condition", RULE_OPTIONAL, -1, 1 }, + { 10415, "Diagnostics", RULE_OPTIONAL, -1, 1 }, + { 10415, "Low-Priority-Indicator", RULE_OPTIONAL, -1, 1 }, + { 10415, "NBIFOM-Mode", RULE_OPTIONAL, -1, 1 }, + { 10415, "NBIFOM-Support", RULE_OPTIONAL, -1, 1 }, + { 10415, "MME-Number-for-MT-SMS", RULE_OPTIONAL, -1, 1 }, + { 10415, "MME-Name", RULE_OPTIONAL, -1, 1 }, + { 10415, "MME-Realm", RULE_OPTIONAL, -1, 1 }, +#if 0 /* TODO: ETSI ES 283 034 */ + { 13019, "Logical-Access-ID", RULE_OPTIONAL, -1, 1 }, + { 13019, "Physical-Access-ID", RULE_OPTIONAL, -1, 1 }, +#endif + { 10415, "Fixed-User-Location-Info", RULE_OPTIONAL, -1, 1 }, + { 10415, "CN-Operator-Selection-Entity", RULE_OPTIONAL, -1, 1 }, + { 10415, "Enhanced-Diagnostics", RULE_OPTIONAL, -1, 1 }, + { 10415, "SGi-PtP-Tunnelling-Method", RULE_OPTIONAL, -1, 1 }, + { 10415, "CP-CIoT-EPS-Optimisation-Indicator", RULE_OPTIONAL, -1, 1 }, + { 10415, "UNI-PDU-CP-Only-Flag", RULE_OPTIONAL, -1, 1 }, + { 10415, "Serving-PLMN-Rate-Control", RULE_OPTIONAL, -1, 1 }, + { 10415, "APN-Rate-Control", RULE_OPTIONAL, -1, 1 }, + { 10415, "Charging-Per-IP-CAN-Session-Indicator", RULE_OPTIONAL, -1, 1 }, + { 10415, "RRC-Cause-Counter", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-PS-Data-Off-Status", RULE_OPTIONAL, -1, 1 }, + { 10415, "SCS-AS-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "Unused-Quota-Timer", RULE_OPTIONAL, -1, 1 }, + { 10415, "RAN-Secondary-RAT-Usage-Report", RULE_OPTIONAL, -1, -1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10679,10 +817,10 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Addressee-Type" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Data", RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Domain", RULE_OPTIONAL, -1, 1 }, + { 10415, "Addressee-Type", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10695,11 +833,11 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Destination-Interface" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Recipient-Address" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Recipient-Received-Address" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Recipient-SCCP-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SM-Protocol-ID" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Destination-Interface", RULE_OPTIONAL, -1, 1 }, + { 10415, "Recipient-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "Recipient-Received-Address", RULE_OPTIONAL, -1, -1 }, + { 10415, "Recipient-SCCP-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "SM-Protocol-ID", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10712,9 +850,9 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Address-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Address-Data" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Address-Domain" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Data", RULE_OPTIONAL, -1, 1 }, + { 10415, "Address-Domain", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10727,16 +865,16 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "SDP-Media-Name" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SDP-Media-Description" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Local-GW-Inserted-Indication" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "IP-Realm-Default-Indication" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Transcoder-Inserted-Indication" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Media-Initiator-Flag" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Media-Initiator-Party" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "3GPP-Charging-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Access-Network-Charging-Identifier-Value" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SDP-Type" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "SDP-Media-Name", RULE_OPTIONAL, -1, 1 }, + { 10415, "SDP-Media-Description", RULE_OPTIONAL, -1, -1 }, + { 10415, "Local-GW-Inserted-Indication", RULE_OPTIONAL, -1, 1 }, + { 10415, "IP-Realm-Default-Indication", RULE_OPTIONAL, -1, 1 }, + { 10415, "Transcoder-Inserted-Indication", RULE_OPTIONAL, -1, 1 }, + { 10415, "Media-Initiator-Flag", RULE_OPTIONAL, -1, 1 }, + { 10415, "Media-Initiator-Party", RULE_OPTIONAL, -1, 1 }, + { 10415, "3GPP-Charging-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "Access-Network-Charging-Identifier-Value", RULE_OPTIONAL, -1, 1 }, + { 10415, "SDP-Type", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10749,20 +887,25 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 0, .avp_name = "Subscription-Id" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "AoC-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "PS-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "WLAN-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "IMS-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "MMS-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "LCS-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "PoC-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "MBMS-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SMS-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "MMTel-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Service-Generic-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "IM-Information" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "DCD-Information" }, RULE_OPTIONAL, -1, 1 }, + { 0, "Subscription-Id", RULE_OPTIONAL, -1, -1 }, + { 10415, "AoC-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "PS-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "IMS-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "MMS-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "LCS-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "PoC-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "MBMS-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "SMS-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "VCS-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "MMTel-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "ProSe-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "Service-Generic-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "IM-Information", RULE_OPTIONAL, -1, 1 }, + { 10415, "DCD-Information", RULE_OPTIONAL, -1, 1 }, +#if 0 /* TODO: oneM2M TS-0004 */ + { 45687, "M2M-Information", RULE_OPTIONAL, -1, 1 }, +#endif + { 10415, "CPDT-Information", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10775,22 +918,27 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "SMS-Node" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Client-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Originator-SCCP-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SMSC-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Data-Coding-Scheme" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SM-Discharge-Time" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SM-Message-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Originator-Interface" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SM-Protocol-ID" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Reply-Path-Requested" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SM-Status" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SM-User-Data-Header" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Number-Of-Messages-Sent" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Recipient-Info" }, RULE_OPTIONAL, -1, -1 }, - { { .avp_vendor = 10415, .avp_name = "Originator-Received-Address" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SM-Service-Type" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "SMS-Node", RULE_OPTIONAL, -1, 1 }, + { 10415, "Client-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "Originator-SCCP-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "SMSC-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "Data-Coding-Scheme", RULE_OPTIONAL, -1, 1 }, + { 10415, "SM-Discharge-Time", RULE_OPTIONAL, -1, 1 }, + { 10415, "SM-Message-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Originator-Interface", RULE_OPTIONAL, -1, 1 }, + { 10415, "SM-Protocol-ID", RULE_OPTIONAL, -1, 1 }, + { 10415, "Reply-Path-Requested", RULE_OPTIONAL, -1, 1 }, + { 10415, "SM-Status", RULE_OPTIONAL, -1, 1 }, + { 10415, "SM-User-Data-Header", RULE_OPTIONAL, -1, 1 }, + { 10415, "Number-Of-Messages-Sent", RULE_OPTIONAL, -1, 1 }, + { 10415, "Recipient-Info", RULE_OPTIONAL, -1, -1 }, + { 10415, "Originator-Received-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "SM-Service-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "SMS-Result", RULE_OPTIONAL, -1, 1 }, + { 10415, "SM-Device-Trigger-Indicator", RULE_OPTIONAL, -1, 1 }, + { 10415, "MTC-IWF-Address", RULE_OPTIONAL, -1, 1 }, + { 10415, "Application-Port-Identifier", RULE_OPTIONAL, -1, 1 }, + { 10415, "External-Identifier", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10803,8 +951,8 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Time-Quota-Type" }, RULE_REQUIRED, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Base-Time-Interval" }, RULE_REQUIRED, -1, 1 }, + { 10415, "Time-Quota-Type", RULE_REQUIRED, -1, 1 }, + { 10415, "Base-Time-Interval", RULE_REQUIRED, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10817,10 +965,10 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "SIP-Request-Timestamp" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SIP-Response-Timestamp" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SIP-Request-Timestamp-Fraction" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "SIP-Response-Timestamp-Fraction" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "SIP-Request-Timestamp", RULE_OPTIONAL, -1, 1 }, + { 10415, "SIP-Response-Timestamp", RULE_OPTIONAL, -1, 1 }, + { 10415, "SIP-Request-Timestamp-Fraction", RULE_OPTIONAL, -1, 1 }, + { 10415, "SIP-Response-Timestamp-Fraction", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10835,13 +983,16 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Reporting-Reason" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Event-Charging-TimeStamp" }, RULE_OPTIONAL, -1, -1 }, + { 10415, "Reporting-Reason", RULE_OPTIONAL, -1, 1 }, + { 10415, "Event-Charging-TimeStamp", RULE_OPTIONAL, -1, -1 }, }; PARSE_loc_rules(rules, rule_avp); } - /* OMA */ + /*==================================================================*/ + /* OMA DDS Charging_Data V1.0 20110201-A */ + /*==================================================================*/ + { struct dict_object *rule_avp; struct dict_avp_request vpa; @@ -10850,8 +1001,8 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Content-ID" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Content-provider-ID" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Content-ID", RULE_OPTIONAL, -1, 1 }, + { 10415, "Content-provider-ID", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10863,10 +1014,10 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Total-Number-Of-Messages-Sent" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Total-Number-Of-Messages-Exploded" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Number-Of-Messages-Successfully-Sent" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Number-Of-Messages-Successfully-Exploded" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Total-Number-Of-Messages-Sent", RULE_OPTIONAL, -1, 1 }, + { 10415, "Total-Number-Of-Messages-Exploded", RULE_OPTIONAL, -1, 1 }, + { 10415, "Number-Of-Messages-Successfully-Sent", RULE_OPTIONAL, -1, 1 }, + { 10415, "Number-Of-Messages-Successfully-Exploded", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } @@ -10878,14 +1029,14 @@ static int dict_dcca_3gpp_entry(char * conffile) CHECK_dict_search(DICT_AVP, AVP_BY_NAME_AND_VENDOR, &vpa, &rule_avp); struct local_rules_definition rules[] = { - { { .avp_vendor = 10415, .avp_name = "Application-Server-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Application-Service-Type" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Application-Session-Id" }, RULE_OPTIONAL, -1, 1 }, - { { .avp_vendor = 10415, .avp_name = "Delivery-Status" }, RULE_OPTIONAL, -1, 1 }, + { 10415, "Application-Server-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "Application-Service-Type", RULE_OPTIONAL, -1, 1 }, + { 10415, "Application-Session-Id", RULE_OPTIONAL, -1, 1 }, + { 10415, "Delivery-Status", RULE_OPTIONAL, -1, 1 }, }; PARSE_loc_rules(rules, rule_avp); } - + LOG_D( "Extension 'Dictionary definitions for DCCA 3GPP' initialized"); return 0; } diff --git a/extensions/dict_dcca_3gpp/dict_dcca_3gpp.csv b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.csv new file mode 100644 index 0000000..ff45102 --- /dev/null +++ b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.csv @@ -0,0 +1,2421 @@ +Attribute Name,AVP Code,Section defined,Value Type,MUST,MAY,SHOULD NOT,MUST NOT
+@vendor,10415,,,,,,
+,,,,,,,
+@standard,3GPP TS 29.061,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.061 V15.5.0 (2018-12),,,,,,,
+# Interworking between the Public Land Mobile Network (PLMN),,,,,,,
+# supporting packet based services and,,,,,,,
+# Packet Data Networks (PDN),,,,,,,
+# ,,,,,,,
+# From 3GPP 29061-f50.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.061 Table 9a: Gi/Sgi specific AVPs,,,,,,,
+#,,,,,,,
+# Note: 3GPP TS 29.061 is unclear and inconsistent about M.,,,,,,,
+"# For this reason, other sources are assumed more trustworthy.",,,,,,,
+#=,,,,,,,
+#,,,,,,,
+# Fix: 3GPP-IMSI (1) changed to Must M.,,,,,,,
+3GPP-IMSI,1,16.4.7,UTF8String,"M,V",P,,
+"# Fix: 3GPP-Charging-Id (2) type changed from OctetString to Unsigned32,",,,,,,,
+# per 3GPP TS 29.061 clause 16.4.7.2/2 and packet dumps.,,,,,,,
+3GPP-Charging-Id,2,16.4.7,Unsigned32,"M,V",P,,
+# Fix: 3GPP-PDP-Type (3) changed to Must M.,,,,,,,
+3GPP-PDP-Type,3,16.4.7,Enumerated,"M,V",P,,
+3GPP-CG-Address,4,16.4.7,OctetString,V,P,,M
+# Fix: 3GPP-GPRS-Negotiated-QoS-Profile (5) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-GPRS-Negotiated-QoS-Profile,5,16.4.7,UTF8String,"M,V",P,,
+3GPP-SGSN-Address,6,16.4.7,OctetString,V,P,,M
+3GPP-GGSN-Address,7,16.4.7,OctetString,V,P,,M
+# Fix: 3GPP-IMSI-MCC-MNC (8) changed to Must M per packet dumps.,,,,,,,
+3GPP-IMSI-MCC-MNC,8,16.4.7,UTF8String,"M,V",P,,
+# Fix: 3GPP-GGSN-MCC-MNC (9) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-GGSN-MCC-MNC,9,16.4.7,UTF8String,"M,V",P,,
+# Fix: 3GPP-NSAPI (10) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-NSAPI,10,16.4.7,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 Table 9a does not define,,,,,,,
+# 3GPP-Session-Stop-Indicator (11) even when it is referenced,,,,,,,
+# by other 3GPP Diameter AVPs including PS-Information (874).,,,,,,,
+# ,,,,,,,
+# Fix: Add 3GPP-Session-Stop-Indicator (11) OctetString.,,,,,,,
+3GPP-Session-Stop-Indicator,11,16.4.7,OctetString,V,P,,M
+# Fix: 3GPP-Selection-Mode (12) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-Selection-Mode,12,16.4.7,UTF8String,"M,V",P,,
+# Fix: 3GPP-Charging-Characteristics (13) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-Charging-Characteristics,13,16.4.7,UTF8String,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# 3GPP-CG-IPv6-Address (14) to 3GPP-CG-Ipv6-Address.,,,,,,,
+# ,,,,,,,
+# Fix: 3GPP-CG-Ipv6-Address (14) changed to Must M per contrib/3gpp.,,,,,,,
+# Change-1.4.0: 3GPP-CG-IPv6-Address (14) renamed to 3GPP-CG-Ipv6-Address (14).,,,,,,,
+3GPP-CG-Ipv6-Address,14,16.4.7,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# 3GPP-SGSN-IPv6-Address (15) to 3GPP-SGSN-Ipv6-Address.,,,,,,,
+# ,,,,,,,
+# Fix: 3GPP-SGSN-Ipv6-Address (15) changed to Must M per contrib/3gpp.,,,,,,,
+# Change-1.4.0: 3GPP-SGSN-IPv6-Address (15) renamed to 3GPP-SGSN-Ipv6-Address (15).,,,,,,,
+3GPP-SGSN-Ipv6-Address,15,16.4.7,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# 3GPP-GGSN-IPv6-Address (16) to 3GPP-GGSN-Ipv6-Address.,,,,,,,
+# ,,,,,,,
+# Fix: 3GPP-GGSN-Ipv6-Address (16) changed to Must M per contrib/3gpp.,,,,,,,
+# Change-1.4.0: 3GPP-GGSN-IPv6-Address (16) renamed to 3GPP-GGSN-Ipv6-Address (16).,,,,,,,
+3GPP-GGSN-Ipv6-Address,16,16.4.7,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# 3GPP-IPv6-DNS-Servers (17) to 3GPP-Ipv6-DNS-Servers.,,,,,,,
+# ,,,,,,,
+# Fix: 3GPP-Ipv6-DNS-Servers (17) changed to Must M per contrib/3gpp.,,,,,,,
+# Change-1.4.0: 3GPP-IPv6-DNS-Servers (17) renamed to 3GPP-Ipv6-DNS-Servers (17).,,,,,,,
+3GPP-Ipv6-DNS-Servers,17,16.4.7,OctetString,"M,V",P,,
+# Fix: 3GPP-SGSN-MCC-MNC (18) changed to Must M per contrib/3gpp.,,,,,,,
+3GPP-SGSN-MCC-MNC,18,16.4.7,UTF8String,"M,V",P,,
+# Fix: 3GPP-IMEISV (20) changed to Must M.,,,,,,,
+3GPP-IMEISV,20,16.4.7,OctetString,"M,V",P,,
+# Fix: 3GPP-RAT-Type (21) changed to Must M.,,,,,,,
+3GPP-RAT-Type,21,16.4.7,OctetString,"M,V",P,,
+# Fix: 3GPP-User-Location-Info (22) changed to Must M.,,,,,,,
+3GPP-User-Location-Info,22,16.4.7,OctetString,"M,V",P,,
+# Fix: 3GPP-MS-TimeZone (23) changed to Must M.,,,,,,,
+3GPP-MS-TimeZone,23,16.4.7,OctetString,"M,V",P,,
+3GPP-CAMEL-Charging-Info,24,16.4.7,OctetString,V,P,,M
+3GPP-Packet-Filter,25,16.4.7,OctetString,V,P,,M
+3GPP-Negotiated-DSCP,26,16.4.7,OctetString,V,P,,M
+3GPP-Allocate-IP-Type,27,16.4.7,OctetString,V,P,,M
+# Note: 3GPP TS 29.061 Table 9a does not define,,,,,,,
+# External-Identifier (28) for Diameter; it is RADIUS only.,,,,,,,
+# 3GPP TS 29.061 Table 9b refers to 3GPP TS 29.336,,,,,,,
+# for External-Identifier (3111).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: External-Identifier (28) OctetString replaced by External-Identifier (3111) UTF8String.,,,,,,,
+#,,,,,,,
+TWAN-Identifier,29,16.4.7,OctetString,V,P,,M
+3GPP-User-Location-Info-Time,30,16.4.7,OctetString,V,P,,M
+3GPP-Secondary-RAT-Usage,31,16.4.7,OctetString,V,P,,M
+#=,,,,,,,
+# 3GPP TS 29.061 Table 10: Gmb specific AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+TMGI,900,17.7.2,OctetString,"M,V",P,,
+Required-MBMS-Bearer-Capabilities,901,17.7.3,UTF8String,"M,V",P,,
+MBMS-StartStop-Indication,902,17.7.5,Enumerated,"M,V",P,,
+MBMS-Service-Area,903,17.7.6,OctetString,"M,V",P,,
+MBMS-Session-Duration,904,17.7.7,OctetString,"M,V",P,,
+Alternative-APN,905,17.7.8,UTF8String,"M,V",P,,
+MBMS-Service-Type,906,17.7.9,Enumerated,"M,V",P,,
+MBMS-2G-3G-Indicator,907,17.7.10,Enumerated,"M, V",P,,
+MBMS-Session-Identity,908,17.7.11,OctetString,"M,V",P,,
+RAI,909,17.7.12,UTF8String,"M, V",P,,
+Additional-MBMS-Trace-Info,910,17.7.13,OctetString,"M,V",P,,
+MBMS-Time-To-Data-Transfer,911,17.7.14,OctetString,"M,V",P,,
+MBMS-Session-Repetition-Number,912,17.7.15,OctetString,"M,V",P,,
+MBMS-Required-QoS,913,17.7.16,UTF8String,"M,V",P,,
+MBMS-Counting-Information,914,17.7.17,Enumerated,"M,V",P,,
+MBMS-User-Data-Mode-Indication,915,17.7.18,Enumerated,"M,V",P,,
+MBMS-GGSN-Address,916,17.7.19,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# MBMS-GGSN-IPv6-Address (917) to MBMS-GGSN-Ipv6-Address.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: MBMS-GGSN-IPv6-Address (917) renamed to MBMS-GGSN-Ipv6-Address (917).,,,,,,,
+MBMS-GGSN-Ipv6-Address,917,17.7.20,OctetString,"M,V",P,,
+MBMS-BMSC-SSM-IP-Address,918,17.7.21,OctetString,"M,V",P,,
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# MBMS-BMSC-SSM-IPv6-Address (919) to MBMS-BMSC-SSM-Ipv6-Address.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: MBMS-BMSC-SSM-IPv6-Address (919) renamed to MBMS-BMSC-SSM-Ipv6-Address (919).,,,,,,,
+MBMS-BMSC-SSM-Ipv6-Address,919,17.7.22,OctetString,"M,V",P,,
+MBMS-Flow-Identifier,920,17.7.23,OctetString,"M,V",P,,
+CN-IP-Multicast-Distribution,921,17.7.24,Enumerated,"M,V",P,,
+MBMS-HC-Indicator,922,17.7.25,Enumerated,"M,V",P,,
+#=,,,,,,,
+# 3GPP TS 29.061 Table 20.5a.1: SGmb specific AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+MBMS-Access-Indicator,923,20.5a.1,Enumerated,"M,V",P,,
+# Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IP-Address (3522).,,,,,,,
+# 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IP-Address (924).,,,,,,,
+# 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IP-Address (3522).,,,,,,,
+MBMS-GW-SSM-IP-Address,924,20.5a.2,OctetString,V,P,,M
+# Note: 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address.,,,,,,,
+# Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IPv6-Address (3523).,,,,,,,
+# 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IPv6-Address (925).,,,,,,,
+# 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address.,,,,,,,
+# 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IPv6-Address (3523).,,,,,,,
+MBMS-GW-SSM-IPv6-Address,925,20.5a.3,OctetString,V,P,,M
+MBMS-BMSC-SSM-UDP-Port,926,20.5a.4,OctetString,V,P,,M
+MBMS-GW-UDP-Port,927,20.5a.5,OctetString,V,P,,M
+MBMS-GW-UDP-Port-Indicator,928,20.5a.6,Enumerated,V,P,,M
+MBMS-Data-Transfer-Start,929,20.5a.7,Unsigned64,V,P,,M
+MBMS-Data-Transfer-Stop,930,20.5a.8,Unsigned64,V,P,,M
+# Note: 3GPP TS 29.061 Table 20.5a.1 row MBMS-Flag (931) has,,,,,,,
+"# incorrect name and should be ""MBMS-Flags"" per clause 20.5a.9.",,,,,,,
+# ,,,,,,,
+# Fix: MBMS-Flag (931) renamed to MBMS-Flags (931).,,,,,,,
+MBMS-Flags,931,20.5a.9,Unsigned32,V,P,,M
+Restart-Counter,932,20.5a.10,Unsigned32,V,P,,M
+Diagnostic-Info,933,20.5a.11,Unsigned32,V,P,,M
+MBMS-Cell-List,934,20.5a.12,OctetString,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.109,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.109 V15.0.0 (2017-06),,,,,,,
+# Generic Authentication Architecture (GAA);,,,,,,,
+# Zh and Zn Interfaces based on the Diameter protocol;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29109-f00.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.109 Table 6.1: New Diameter Multimedia Application AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+GBA-UserSecSettings,400,6.3.1.1,OctetString,"M, V",,,
+Transaction-Identifier,401,6.3.1.2,OctetString,"M, V",,,
+NAF-Id,402,6.3.1.3,OctetString,"M, V",,,
+GAA-Service-Identifier,403,6.3.1.4,OctetString,"M, V",,,
+Key-ExpiryTime,404,6.3.1.5,Time,"M, V",,,
+ME-Key-Material,405,6.3.1.6,OctetString,"M, V",,,
+UICC-Key-Material,406,6.3.1.7,OctetString,"M, V",,,
+# Note: 3GPP TS 29.109 Table 6.1 row GBA_U-Awareness-Indicator (407),,,,,,,
+# has an underscore in the name (contrary to RFC 6733 section 4.1).,,,,,,,
+# ,,,,,,,
+# Fix: GBA_U-Awareness-Indicator (407) renamed to GBA-U-Awareness-Indicator (407).,,,,,,,
+GBA-U-Awareness-Indicator,407,6.3.1.8,Enumerated,"M, V",,,
+BootstrapInfoCreationTime,408,6.3.1.9,Time,"M, V",,,
+GUSS-Timestamp,409,6.3.1.10,Time,V,,,M
+GBA-Type,410,6.3.1.11,Enumerated,"M, V",,,
+UE-Id,411,6.3.1.12,OctetString,"M, V",,,
+UE-Id-Type,412,6.3.1.13,Enumerated,"M, V",,,
+UICC-App-Label,413,6.3.1.14,OctetString,"M, V",,,
+UICC-ME,414,6.3.1.15,Enumerated,"M, V",,,
+Requested-Key-Lifetime,415,6.3.1.16,Time,"M, V",,,
+Private-Identity-Request,416,6.3.1.17,Enumerated,"M, V",,,
+GBA-Push-Info,417,6.3.1.18,OctetString,"M, V",,,
+NAF-SA-Identifier,418,6.3.1.19,OctetString,"M, V",,,
+Security-Feature-Request,419,6.3.1.20,OctetString,"M,V",,,
+Security-Feature-Response,420,6.3.1.21,OctetString,"M,V",,,
+,,,,,,,
+@standard,3GPP TS 29.128,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.128 V15.6.0 (2019-09),,,,,,,
+# Mobility Management Entity (MME) and Serving GPRS Support,,,,,,,
+# Node (SGSN) interfaces for interworking with packet data,,,,,,,
+# networks and applications,,,,,,,
+# ,,,,,,,
+# From 3GPP 29128-f60.docx,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.128 Table 6.4.1-1: T6a/T6b specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Communication-Failure-Information,4300,6.4.4,Grouped,"M,V",,,
+Cause-Type,4301,6.4.5,Unsigned32,"M,V",,,
+S1AP-Cause,4302,6.4.6,Unsigned32,"M,V",,,
+RANAP-Cause,4303,6.4.7,Unsigned32,"M,V",,,
+BSSGP-Cause,4309,6.4.8,Unsigned32,"M,V",,,
+GMM-Cause,4304,6.4.9,Unsigned32,"M,V",,,
+SM-Cause,4305,6.4.10,Unsigned32,"M,V",,,
+Number-Of-UE-Per-Location-Configuration,4306,6.4.11,Grouped,"M,V",,,
+Number-Of-UE-Per-Location-Report,4307,6.4.12,Grouped,"M,V",,,
+UE-Count,4308,6.4.13,Unsigned32,"M,V",,,
+Connection-Action,4314,6.4.18,Unsigned32,"M,V",,,
+Non-IP-Data,4315,6.4.19,OctetString,"M,V",,,
+Serving-PLMN-Rate-Control,4310,6.4.21,Grouped,"M,V",,,
+Uplink-Rate-Limit,4311,6.4.23,Unsigned32,"M,V",,,
+Downlink-Rate-Limit,4312,6.4.22,Unsigned32,"M,V",,,
+Extended-PCO,4313,6.4.26,OctetString,"M,V",,,
+SCEF-Wait-Time,4316,6.4.24,Time,"M,V",,,
+CMR-Flags,4317,6.4.25,Unsigned32,"M,V",,,
+RRC-Cause-Counter,4318,6.4.27,Grouped,"M,V",,,
+Counter-Value,4319,6.4.28,Unsigned32,"M,V",,,
+RRC-Counter-Timestamp,4320,6.4.29,Time,"M,V",,,
+TDA-Flags,4321,6.4.31,Unsigned32,V,,,M
+Idle-Status-Indication,4322,6.4.32,Grouped,V,,,M
+Idle-Status-Timestamp,4323,6.4.33,Time,V,,,M
+Active-Time,4324,6.4.34,Unsigned32,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.140,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.140 V7.0.0 (2007-06),,,,,,,
+# MM10 interface based on Diameter protocol;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29140-700.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.140 Table 6.3.1: Diameter MM10 Application AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Served-User-Identity,1100,6.3.1,Grouped,"M,V",,,
+VASP-ID,1101,6.3.3,UTF8String,"M,V",,,
+VAS-ID,1102,6.3.4,UTF8String,"M,V",,,
+Trigger-Event,1103,6.3.5,Enumerated,"M,V",,,
+Sender-Address,1104,6.3.7,UTF8String,"M,V",,,
+Initial-Recipient-Address,1105,6.3.8,Grouped,"M,V",,,
+Result-Recipient-Address,1106,6.3.9,Grouped,"M,V",,,
+# Note: Name conflict with 3GPP TS 29.329 Sequence-Number (716),,,,,,,
+# and 3GPP TS 29.283 Sequence-Number (4512).,,,,,,,
+# 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107).,,,,,,,
+# 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716).,,,,,,,
+# 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512).,,,,,,,
+# ,,,,,,,
+# Fix: Sequence-Number (1107) renamed to Sequence-Number-29.140 (1107).,,,,,,,
+Sequence-Number-29.140,1107,6.3.10,Unsigned32,"M,V",,,
+# Note: Name conflict with 3GPP TS 32.299 Recipient-Address (1201);,,,,,,,
+# 3GPP TS 29.140 V6.1.0 (2005-06) allocated Recipient-Address (1108).,,,,,,,
+# 3GPP TS 32.299 V6.4.0 (2005-09) CR 0028 added Recipient-Address (1201).,,,,,,,
+# ,,,,,,,
+# Fix: Recipient-Address (1108) renamed to Recipient-Address-29.140 (1108).,,,,,,,
+Recipient-Address-29.140,1108,6.3.11,UTF8String,"M,V",,,
+Routeing-Address,1109,6.3.12,UTF8String,"M,V",,,
+Originating-Interface,1110,6.3.13,Enumerated,"M,V",,,
+Delivery-Report,1111,6.3.14,Enumerated,"M,V",,,
+Read-Reply,1112,6.3.15,Enumerated,"M,V",,,
+Sender-Visibility,1113,6.3.16,Enumerated,"M,V",,,
+Service-Key,1114,6.3.17,UTF8String,"M,V",,,
+Billing-Information,1115,6.3.18,UTF8String,"M,V",,,
+# Note: Name conflict with 3GPP TS 32.299 V11.6.0 Status (2702).,,,,,,,
+# 3GPP TS 32.299 V11.10.0 (2013-12) CR 0566 renamed,,,,,,,
+# Status (2702) to Status-Code (2702).,,,,,,,
+# 3GPP TS 32.299 V11.14.0 (2014-12) CR 0617 renamed,,,,,,,
+# Status-Code (2702) to Status-AS-Code (2702).,,,,,,,
+# ,,,,,,,
+# TODO: rename back to Status ?,,,,,,,
+# Fix: Status (1116) renamed to Status-29.140 (1116).,,,,,,,
+Status-29.140,1116,6.3.19,Grouped,"M,V",,,
+Status-Code,1117,6.3.20,UTF8String,"M,V",,,
+Status-Text,1118,6.3.21,UTF8String,"M,V",,,
+Routeing-Address-Resolution,1119,6.3.22,Enumerated,"M,V",,,
+,,,,,,,
+@standard,3GPP TS 29.153,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.153 V15.1.0 (2019-09),,,,,,,
+# Service capability exposure functionality over Ns,,,,,,,
+# reference point,,,,,,,
+# ,,,,,,,
+# From 3GPP 29153-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.153 Table 5.3.1.1: Ns specific Diameter AVPs ,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Network-Congestion-Area-Report,4101,5.3.2,Grouped,"M,V",P,,
+Ns-Request-Type,4102,5.3.3,Unsigned32,"M,V",P,,
+,,,,,,,
+@standard,3GPP TS 29.154,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.154 V15.3.0 (2019-09),,,,,,,
+# Service capability exposure functionality over,,,,,,,
+# Nt reference point,,,,,,,
+# ,,,,,,,
+# From 3GPP 29154-f30.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.154 Table 5.3.1.1: Nt specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Network-Area-Info-List,4201,5.3.2,OctetString,"M,V",P,,
+Number-Of-UEs,4209,5.3.10,Unsigned32,"M,V",P,,
+Reference-Id,4202,5.3.3,OctetString,"M,V",P,,
+Transfer-Request-Type,4203,5.3.4,Unsigned32,"M,V",P,,
+# Note: Name conflict with 3GPP TS 29.345 Time-Window (3818).,,,,,,,
+# Time-Window (3818) in 3GPP TS 29.345 V12.1.0 (2014-12) predates,,,,,,,
+# Time-Window (4204) in 3GPP TS 29.154 V13.1.0 (2016-03).,,,,,,,
+# ,,,,,,,
+# Fix: Time-Window (4204) renamed to Time-Window-29.154 (4204).,,,,,,,
+Time-Window-29.154,4204,5.3.5,Grouped,"M,V",P,,
+Transfer-End-Time,4205,5.3.6,Time,"M,V",P,,
+Transfer-Policy,4207,5.3.8,Grouped,"M,V",P,,
+Transfer-Policy-Id,4208,5.3.9,Unsigned32,"M,V",P,,
+Transfer-Start-Time,4206,5.3.7,Time,"M,V",P,,
+#=,,,,,,,
+# 3GPP TS 29.154 Table A.6.3.1-1: Nta specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Access-Network-Reports,4210,A.6.3.2,Grouped,"M,V",P,,
+Event-Configuration,4211,A.6.3.3,Grouped,"M,V",P,,
+Event-Configuration-State,4212,A.6.3.4,Unsigned32,"M,V",P,,
+Event-Configuration-Status,4213,A.6.3.5,Grouped,"M,V",P,,
+Event-Reporting-Results,4214,A.6.3.6,Unsigned32,"M,V",P,,
+Event-Reports,4215,A.6.3.7,Grouped,"M,V",P,,
+Extended-SCEF-Reference-ID,4216,A.6.3.8,Unsigned64,"M,V",P,,
+,,,,,,,
+@standard,3GPP TS 29.172,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.172 V15.2.0 (2019-12),,,,,,,
+# Location Services (LCS);,,,,,,,
+# Evolved Packet Core (EPC) LCS Protocol (ELP) between the,,,,,,,
+# Gateway Mobile Location Centre (GMLC) and the,,,,,,,
+# Mobile Management Entity (MME);,,,,,,,
+# SLg interface,,,,,,,
+# ,,,,,,,
+# From 3GPP 29172-f20.docx,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.172 Table 7.4.1-1: Diameter ELP Application AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+SLg-Location-Type,2500,7.4.2,Enumerated,"M, V",,,
+LCS-EPS-Client-Name,2501,7.4.3,Grouped,"M, V",,,
+LCS-Requestor-Name,2502,7.4.4,Grouped,"M, V",,,
+LCS-Priority,2503,7.4.5,Unsigned32,"M, V",,,
+LCS-QoS,2504,7.4.6,Grouped,"M, V",,,
+Horizontal-Accuracy,2505,7.4.7,Unsigned32,"M, V",,,
+Vertical-Accuracy,2506,7.4.8,Unsigned32,"M, V",,,
+Vertical-Requested,2507,7.4.9,Enumerated,"M, V",,,
+Velocity-Requested,2508,7.4.10,Enumerated,"M, V",,,
+Response-Time,2509,7.4.11,Enumerated,"M, V",,,
+Supported-GAD-Shapes,2510,7.4.12,Unsigned32,"M, V",,,
+LCS-Codeword,2511,7.4.13,UTF8String,"M, V",,,
+LCS-Privacy-Check,2512,7.4.14,Enumerated,"M, V",,,
+Accuracy-Fulfilment-Indicator,2513,7.4.15,Enumerated,"M, V",,,
+Age-Of-Location-Estimate,2514,7.4.16,Unsigned32,"M, V",,,
+Velocity-Estimate,2515,7.4.17,OctetString,"M, V",,,
+EUTRAN-Positioning-Data,2516,7.4.18,OctetString,"M, V",,,
+ECGI,2517,7.4.19,OctetString,"M, V",,,
+Location-Event,2518,7.4.20,Enumerated,"M, V",,,
+Pseudonym-Indicator,2519,7.4.21,Enumerated,"M, V",,,
+LCS-Service-Type-ID,2520,7.4.22,Unsigned32,"M, V",,,
+LCS-Privacy-Check-Non-Session,2521,7.4.23,Grouped,"M, V",,,
+LCS-Privacy-Check-Session,2522,7.4.24,Grouped,"M, V",,,
+LCS-QoS-Class,2523,7.4.27,Enumerated,"M, V",,,
+GERAN-Positioning-Info,2524,7.4.29,Grouped,V,,,M
+GERAN-Positioning-Data,2525,7.4.30,OctetString,V,,,M
+GERAN-GANSS-Positioning-Data,2526,7.4.31,OctetString,V,,,M
+UTRAN-Positioning-Info,2527,7.4.32,Grouped,V,,,M
+UTRAN-Positioning-Data,2528,7.4.33,OctetString,V,,,M
+UTRAN-GANSS-Positioning-Data,2529,7.4.34,OctetString,V,,,M
+LRR-Flags,2530,7.4.35,Unsigned32,V,,,M
+LCS-Reference-Number,2531,7.4.37,OctetString,V,,,M
+Deferred-Location-Type,2532,7.4.36,Unsigned32,V,,,M
+Area-Event-Info,2533,7.4.38,Grouped,V,,,M
+Area-Definition,2534,7.4.39,Grouped,V,,,M
+Area,2535,7.4.40,Grouped,V,,,M
+Area-Type,2536,7.4.41,Unsigned32,V,,,M
+Area-Identification,2537,7.4.42,Grouped,V,,,M
+Occurrence-Info,2538,7.4.43,Enumerated,V,,,M
+Interval-Time,2539,7.4.44,Unsigned32,V,,,M
+Periodic-LDR-Information,2540,7.4.45,Grouped,V,,,M
+Reporting-Amount,2541,7.4.46,Unsigned32,V,,,M
+Reporting-Interval,2542,7.4.47,Unsigned32,V,,,M
+Reporting-PLMN-List,2543,7.4.48,Grouped,V,,,M
+PLMN-ID-List,2544,7.4.49,Grouped,V,,,M
+PLR-Flags,2545,7.4.52,Unsigned32,V,,,M
+PLA-Flags,2546,7.4.53,Unsigned32,V,,,M
+Deferred-MT-LR-Data,2547,7.4.54,Grouped,V,,,M
+Termination-Cause,2548,7.4.55,Unsigned32,V,,,M
+LRA-Flags,2549,7.4.56,Unsigned32,V,,,M
+Periodic-Location-Support-Indicator,2550,7.4.50,Enumerated,V,,,M
+Prioritized-List-Indicator,2551,7.4.51,Enumerated,V,,,M
+ESMLC-Cell-Info,2552,7.4.57,Grouped,V,,,M
+Cell-Portion-ID,2553,7.4.58,Unsigned32,V,,,M
+1xRTT-RCID,2554,7.4.59,OctetString,V,,,M
+Delayed-Location-Reporting-Data,2555,7.4.60,Grouped,V,,,M
+Civic-Address,2556,7.4.61,UTF8String,V,,,M
+Barometric-Pressure,2557,7.4.62,Unsigned32,V,,,M
+UTRAN-Additional-Positioning-Data,2558,7.4.63,OctetString,V,,,M
+Motion-Event-Info,2559,7.4.64,Grouped,V,,,M
+Linear-Distance,2560,7.4.65,Unsigned32,V,,,M
+Maximum-Interval,2561,7.4.66,Unsigned32,V,,,M
+Sampling-Interval,2562,7.4.67,Unsigned32,V,,,M
+Reporting-Duration,2563,7.4.68,Unsigned32,V,,,M
+Reporting-Location-Requirements,2564,7.4.69,Unsigned32,V,,,M
+Additional-Area,2565,7.4.70,Grouped,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.173,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.173 V15.0.0 (2018-06),,,,,,,
+# Location Services (LCS);,,,,,,,
+# Diameter-based SLh interface for Control Plane LCS,,,,,,,
+# ,,,,,,,
+# From 3GPP 29173-f00.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.173 Table 6.4.1/1: SLh specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+LMSI,2400,6.4.2,OctetString,"M,V",,,
+Serving-Node,2401,6.4.3,Grouped,"M,V",,,
+MME-Name,2402,6.4.4,DiameterIdentity,"M,V",,,
+MSC-Number,2403,6.4.5,OctetString,"M,V",,,
+LCS-Capabilities-Sets,2404,6.4.6,Unsigned32,"M,V",,,
+GMLC-Address,2405,6.4.7,Address,"M,V",,,
+Additional-Serving-Node,2406,6.4.8,Grouped,"M,V",,,
+PPR-Address,2407,6.4.9,Address,"M,V",,,
+MME-Realm,2408,6.4.12,DiameterIdentity,V,,,M
+SGSN-Name,2409,6.4.13,DiameterIdentity,V,,,M
+SGSN-Realm,2410,6.4.14,DiameterIdentity,V,,,M
+RIA-Flags,2411,6.4.15,Unsigned32,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.209,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.209 V6.8.0 (2011-09),,,,,,,
+# Policy control over Gq interface,,,,,,,
+# ,,,,,,,
+# From 3GPP 29209-680.doc,,,,,,,
+# ,,,,,,,
+# Replaced by 3GPP TS 29.214.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.209 Table 6.5.1: Gq specific Diameter AVPs,,,,,,,
+# Note: Only AVPs not provided by 3GPP TS 29.214.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Authorization-Token,506,6.5.7,OctetString,"M,V",P,,
+Flow-Grouping,508,6.5.9,Grouped,"M,V",P,,
+,,,,,,,
+@standard,3GPP TS 29.210,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.210 V6.7.0 (2006-12),,,,,,,
+# Charging rule provisioning over Gx interface,,,,,,,
+# ,,,,,,,
+# From 3GPP 29210-670.doc,,,,,,,
+# ,,,,,,,
+# Replaced by 3GPP TS 29.212.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.210 Table 5.2: Gx specific Diameter AVPs,,,,,,,
+# Note: Only AVPs not provided by 3GPP TS 29.212.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+PDP-Session-Operation,1015,5.2.21,Enumerated,"M,V",P,,
+,,,,,,,
+@standard,3GPP TS 29.212,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.212 V15.9.0 (2019-12),,,,,,,
+# Policy and Charging Control (PCC); Reference points,,,,,,,
+# ,,,,,,,
+# From 3GPP 29212-f90.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.212 Table 5.3.0.1: Gx specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+# Change-1.4.0: ADC-Revalidation-Time (2801) Time removed in 3GPP TS 29.212 V12.1.0 (2013-06).,,,,,,,
+#,,,,,,,
+# Note: Name conflict with 3GPP TS 32.299 3GPP-PS-Data-Off-Status (4406).,,,,,,,
+# 3GPP TS 29.212 V14.3.0 (2017-03) CR 1559 added 3GPP-PS-Data-Off-Status (2847).,,,,,,,
+# 3GPP TS 32.299 V14.3.0 (2017-03) CR 0760 added 3GPP-PS-Data-Off-Status (4406).,,,,,,,
+3GPP-PS-Data-Off-Status,2847,5.3.133,Enumerated,V,P,,M
+Access-Availability-Change-Reason,2833,5.3.121,Unsigned32,V,P,,M
+Access-Network-Charging-Identifier-Gx,1022,5.3.22,Grouped,"M,V",P,,
+Allocation-Retention-Priority,1034,5.3.32,Grouped,V,P,,M
+AN-GW-Address,1050,5.3.49,Address,V,P,,M
+AN-GW-Status,2811,5.3.100,Enumerated,V,P,,M
+APN-Aggregate-Max-Bitrate-DL,1040,5.3.39,Unsigned32,V,P,,M
+APN-Aggregate-Max-Bitrate-UL,1041,5.3.40,Unsigned32,V,P,,M
+Application-Detection-Information,1098,5.3.91,Grouped,V,P,,M
+Bearer-Control-Mode,1023,5.3.23,Enumerated,"M,V",P,,
+Bearer-Identifier,1020,5.3.20,OctetString,"M,V",P,,
+Bearer-Operation,1021,5.3.21,Enumerated,"M,V",P,,
+Bearer-Usage,1000,5.3.1,Enumerated,"M,V",P,,
+Charging-Correlation-Indicator,1073,5.3.67,Enumerated,V,P,,M
+Charging-Rule-Base-Name,1004,5.3.5,UTF8String,"M,V",P,,
+Charging-Rule-Definition,1003,5.3.4,Grouped,"M,V",P,,
+Charging-Rule-Install,1001,5.3.2,Grouped,"M,V",P,,
+Charging-Rule-Name,1005,5.3.6,OctetString,"M,V",P,,
+Charging-Rule-Remove,1002,5.3.3,Grouped,"M,V",P,,
+Charging-Rule-Report,1018,5.3.18,Grouped,"M,V",P,,
+CoA-Information,1039,5.3.37,Grouped,V,P,,M
+CoA-IP-Address,1035,5.3.33,Address,V,P,,M
+Conditional-APN-Aggregate-Max-Bitrate,2818,5.3.105,Grouped,V,P,,M
+Conditional-Policy-Information,2840,5.3.128,Grouped,V,P,,M
+Credit-Management-Status,1082,5.3.102,Unsigned32,V,P,,M
+CSG-Information-Reporting,1071,5.3.64,Enumerated,V,P,,M
+Default-Access,2829,5.3.120,Enumerated,V,P,,M
+Default-Bearer-Indication,2844,5.3.132,Enumerated,V,P,,M
+Default-EPS-Bearer-QoS,1049,5.3.48,Grouped,V,P,,M
+Default-QoS-Information,2816,5.3.103,Grouped,V,P,,M
+Default-QoS-Name,2817,5.3.104,UTF8String,V,P,,M
+Event-Report-Indication,1033,5.3.30,Grouped,V,P,,M
+Event-Trigger,1006,5.3.7,Enumerated,"M,V",P,,
+Execution-Time,2839,5.3.127,Time,V,P,,M
+Extended-APN-AMBR-DL,2848,5.3.134,Unsigned32,V,P,,M
+Extended-APN-AMBR-UL,2849,5.3.135,Unsigned32,V,P,,M
+Extended-GBR-DL,2850,5.3.136,Unsigned32,V,P,,M
+Extended-GBR-UL,2851,5.3.137,Unsigned32,V,P,,M
+Flow-Direction,1080,5.3.65,Enumerated,V,P,,M
+Flow-Information,1058,5.3.53,Grouped,V,P,,M
+Flow-Label,1057,5.3.52,OctetString,V,P,,M
+Fixed-User-Location-Info,2825,5.3.112,Grouped,V,P,,M
+Guaranteed-Bitrate-DL,1025,5.3.25,Unsigned32,"M,V",P,,
+Guaranteed-Bitrate-UL,1026,5.3.26,Unsigned32,"M,V",P,,
+# Note: HeNB-BBF-FQDN (2803) UTF8String removed in 3GPP TS 29.212 V11.8.0 (2013-03).,,,,,,,
+#,,,,,,,
+HeNB-Local-IP-Address,2804,5.3.95,Address,V,P,,M
+IP-CAN-Session-Charging-Scope,2827,5.3.114,Enumerated,V,P,,M
+IP-CAN-Type,1027,5.3.27,Enumerated,"M,V",P,,
+# Note: 3GPP TS 29.212 Table 5.3.0.1 row Max-PLR-DL (2852),,,,,,,
+# incorrectly lists type as Unsigned32 instead of Float32.,,,,,,,
+# 3GPP TS 29.212 clause 5.3.138 uses Float32.,,,,,,,
+# ,,,,,,,
+# Fix: Max-PLR-DL (2852) type changed from Float32 to Unsigned32.,,,,,,,
+Max-PLR-DL,2852,5.3.138,Unsigned32,V,P,,M
+# Note: 3GPP TS 29.212 Table 5.3.0.1 row Max-PLR-UL (2853),,,,,,,
+# incorrectly lists type as Unsigned32 instead of Float32.,,,,,,,
+# 3GPP TS 29.212 clause 5.3.139 uses Float32.,,,,,,,
+# ,,,,,,,
+# Fix: Max-PLR-UL (2853) type changed from Float32 to Unsigned32.,,,,,,,
+Max-PLR-UL,2853,5.3.139,Unsigned32,V,P,,M
+Metering-Method,1007,5.3.8,Enumerated,"M,V",P,,
+Monitoring-Flags,2828,5.3.115,Unsigned32,V,,,M
+Monitoring-Key,1066,5.3.59,OctetString,V,P,,M
+Mute-Notification,2809,5.3.98,Enumerated,V,P,,M
+Monitoring-Time,2810,5.3.99,Time,V,P,,M
+NBIFOM-Mode,2830,5.3.117,Enumerated,V,P,,M
+NBIFOM-Support,2831,5.3.116,Enumerated,V,P,,M
+NetLoc-Access-Support,2824,5.3.111,Unsigned32,V,P,,M
+Network-Request-Support,1024,5.3.24,Enumerated,"M,V",P,,
+Offline,1008,5.3.9,Enumerated,"M,V",P,,
+Online,1009,5.3.10,Enumerated,"M,V",P,,
+Packet-Filter-Content,1059,5.3.54,IPFilterRule,V,P,,M
+Packet-Filter-Identifier,1060,5.3.55,OctetString,V,P,,M
+Packet-Filter-Information,1061,5.3.56,Grouped,V,P,,M
+Packet-Filter-Operation,1062,5.3.57,Enumerated,V,P,,M
+Packet-Filter-Usage,1072,5.3.66,Enumerated,V,P,,M
+PCC-Rule-Status,1019,5.3.19,Enumerated,"M,V",P,,
+# Note: 3GPP TS 29.212 Table 5.3.0.1 row PDN-Connection-ID (1065),,,,,,,
+"# missing M, assume MUST NOT.",,,,,,,
+# ,,,,,,,
+# Change-1.4.0: PDN-Connection-ID (1065) flag M MUST NOT.,,,,,,,
+PDN-Connection-ID,1065,5.3.58,OctetString,V,P,,M
+PRA-Install,2845,5.3.130,Grouped,V,P,,M
+PRA-Remove,2846,5.3.131,Grouped,V,P,,M
+Precedence,1010,5.3.11,Unsigned32,"M,V",P,,
+Pre-emption-Capability,1047,5.3.46,Enumerated,V,P,,M
+Pre-emption-Vulnerability,1048,5.3.47,Enumerated,V,P,,M
+Presence-Reporting-Area-Elements-List,2820,5.3.107,OctetString,V,P,,M
+Presence-Reporting-Area-Identifier,2821,5.3.108,OctetString,V,P,,M
+Presence-Reporting-Area-Information,2822,5.3.109,Grouped,V,P,,M
+Presence-Reporting-Area-Node,2855,5.3.141,Unsigned32,V,P,,M
+Presence-Reporting-Area-Status,2823,5.3.110,Unsigned32,V,P,,M
+Priority-Level,1046,5.3.45,Unsigned32,V,P,,M
+# Note: 3GPP TS 29.212 Table 5.3.0.1 row PS-to-CS-Session-Continuity (1099),,,,,,,
+"# missing M, assume MUST NOT.",,,,,,,
+# ,,,,,,,
+# Change-1.4.0: PS-to-CS-Session-Continuity (1099) flag M MUST NOT.,,,,,,,
+PS-to-CS-Session-Continuity,1099,5.3.84,Enumerated,V,P,,M
+QoS-Class-Identifier,1028,5.3.17,Enumerated,"M,V",P,,
+QoS-Information,1016,5.3.16,Grouped,"M,V",P,,
+QoS-Negotiation,1029,5.3.28,Enumerated,"M,V",P,,
+QoS-Upgrade,1030,5.3.29,Enumerated,"M,V",P,,
+RAN-NAS-Release-Cause,2819,5.3.106,OctetString,V,P,,M
+RAN-Rule-Support,2832,5.3.122,Unsigned32,V,P,,M
+RAT-Type,1032,5.3.31,Enumerated,V,P,,M
+Redirect-Information,1085,5.3.82,Grouped,V,P,,M
+Redirect-Support,1086,5.3.83,Enumerated,V,P,,M
+Removal-Of-Access,2842,5.3.126,Enumerated,V,P,,M
+Reporting-Level,1011,5.3.12,Enumerated,"M,V",P,,
+Resource-Allocation-Notification,1063,5.3.50,Enumerated,V,P,,M
+Resource-Release-Notification,2841,5.3.125,Enumerated,V,P,,M
+Revalidation-Time,1042,5.3.41,Time,"M,V",P,,
+Routing-Filter,1078,5.3.72,Grouped,V,P,,M
+Routing-IP-Address,1079,5.3.73,Address,V,P,,M
+Routing-Rule-Definition,1076,5.3.70,Grouped,V,P,,M
+Routing-Rule-Identifier,1077,5.3.71,OctetString,V,P,,M
+Routing-Rule-Install,1081,5.3.68,Grouped,V,P,,M
+Routing-Rule-Remove,1075,5.3.69,Grouped,V,P,,M
+Routing-Rule-Failure-Code,2834,5.3.119,Unsigned32,V,P,,M
+Routing-Rule-Report,2835,5.3.118,Grouped,V,P,,M
+Rule-Activation-Time,1043,5.3.42,Time,"M,V",P,,
+Rule-Deactivation-Time,1044,5.3.43,Time,"M,V",P,,
+Rule-Failure-Code,1031,5.3.38,Enumerated,"M,V",P,,
+Security-Parameter-Index,1056,5.3.51,OctetString,V,P,,M
+Session-Release-Cause,1045,5.3.44,Enumerated,"M,V",P,,
+TCP-Source-Port,2843,5.3.129,Unsigned32,V,P,,M
+TDF-Information,1087,5.3.78,Grouped,V,P,,M
+TDF-Application-Identifier,1088,5.3.77,OctetString,V,P,,M
+TDF-Application-Instance-Identifier,2802,5.3.92,OctetString,V,P,,M
+TDF-Destination-Host,1089,5.3.80,DiameterIdentity,V,P,,M
+TDF-Destination-Realm,1090,5.3.79,DiameterIdentity,V,P,,M
+TDF-IP-Address,1091,5.3.81,Address,V,P,,M
+TFT-Filter,1012,5.3.13,IPFilterRule,"M,V",P,,
+TFT-Packet-Filter-Information,1013,5.3.14,Grouped,"M,V",P,,
+Traffic-Steering-Policy-Identifier-DL,2836,5.3.123,OctetString,V,P,,M
+Traffic-Steering-Policy-Identifier-UL,2837,5.3.124,OctetString,V,P,,M
+ToS-Traffic-Class,1014,5.3.15,OctetString,"M,V",P,,
+Tunnel-Header-Filter,1036,5.3.34,IPFilterRule,V,P,,M
+Tunnel-Header-Length,1037,5.3.35,Unsigned32,V,P,,M
+Tunnel-Information,1038,5.3.36,Grouped,V,P,,M
+UDP-Source-Port,2806,5.3.97,Unsigned32,V,P,,M
+UE-Local-IP-Address,2805,5.3.96,Address,V,P,,M
+UE-Status,2854,5.3.140,Unsigned32,V,P,,M
+Usage-Monitoring-Information,1067,5.3.60,Grouped,V,P,,M
+Usage-Monitoring-Level,1068,5.3.61,Enumerated,V,P,,M
+Usage-Monitoring-Report,1069,5.3.62,Enumerated,V,P,,M
+Usage-Monitoring-Support,1070,5.3.63,Enumerated,V,P,,M
+User-Location-Info-Time,2812,5.3.101,Time,V,P,,M
+PCSCF-Restoration-Indication,2826,5.3.113,Unsigned32,V,P,,M
+#=,,,,,,,
+# 3GPP TS 29.212 Table 5a.3.0.1: Gxx specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+QoS-Rule-Install,1051,5a.3.1,Grouped,"M,V",P,,
+QoS-Rule-Remove,1052,5a.3.2,Grouped,"M,V",P,,
+QoS-Rule-Definition,1053,5a.3.3,Grouped,"M,V",P,,
+QoS-Rule-Name,1054,5a.3.4,OctetString,"M,V",P,,
+QoS-Rule-Base-Name,1074,5a.3.7,UTF8String,V,P,,M
+QoS-Rule-Report,1055,5a.3.5,Grouped,"M,V",P,,
+Session-Linking-Indicator,1064,5a.3.6,Enumerated,"M,V",P,,
+#=,,,,,,,
+# 3GPP TS 29.212 Table 5b.3.0.1: Sd specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+# Change-1.4.0: ADC-Rule-Base-Name (1095) flag M MUST.,,,,,,,
+ADC-Rule-Base-Name,1095,5b.3.4,UTF8String,"M,V",P,,
+# Change-1.4.0: ADC-Rule-Definition (1094) flag M MUST.,,,,,,,
+ADC-Rule-Definition,1094,5b.3.3,Grouped,"M,V",P,,
+# Change-1.4.0: ADC-Rule-Install (1092) flag M MUST.,,,,,,,
+ADC-Rule-Install,1092,5b.3.1,Grouped,"M,V",P,,
+# Change-1.4.0: ADC-Rule-Name (1096) flag M MUST.,,,,,,,
+ADC-Rule-Name,1096,5b.3.5,OctetString,"M,V",P,,
+# Change-1.4.0: ADC-Rule-Remove (1093) flag M MUST.,,,,,,,
+ADC-Rule-Remove,1093,5b.3.2,Grouped,"M,V",P,,
+# Change-1.4.0: ADC-Rule-Report (1097) flag M MUST.,,,,,,,
+ADC-Rule-Report,1097,5b.3.6,Grouped,"M,V",P,,
+#=,,,,,,,
+# 3GPP TS 29.212 Table 5c.3.1.1: St specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Request-Type,2838,5c.3.2,Unsigned32,"M,V",P,,
+#=,,,,,,,
+# 3GPP TS 29.212 Table E.6.3.1.1: S15 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+CS-Service-Qos-Request-Identifier,2807,E.6.3.2,OctetString,"M, V",P,,
+CS-Service-QoS-Request-Operation,2808,E.6.3.3,Enumerated,"M, V",P,,
+CS-Service-Resource-Report,2813,E.6.3.6,Grouped,"M, V",P,,
+CS-Service-Resource-Failure-Cause,2814,E.6.3.5,Enumerated,"M, V",P,,
+CS-Service-Resource-Result-Operation,2815,E.6.3.4,Enumerated,"M, V",P,,
+,,,,,,,
+@standard,3GPP TS 29.214,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.214 V15.7.0 (2019-09),,,,,,,
+# Policy and Charging Control over Rx reference point,,,,,,,
+# ,,,,,,,
+# From 3GPP 29214-f70.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.214 Table 5.3.0.1: Rx specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Abort-Cause,500,5.3.1,Enumerated,"M,V",P,,
+Access-Network-Charging-Address,501,5.3.2,Address,"M,V",P,,
+Access-Network-Charging-Identifier,502,5.3.3,Grouped,"M,V",P,,
+Access-Network-Charging-Identifier-Value,503,5.3.4,OctetString,"M,V",P,,
+Acceptable-Service-Info,526,5.3.24,Grouped,"M,V",P,,
+AF-Application-Identifier,504,5.3.5,OctetString,"M,V",P,,
+AF-Charging-Identifier,505,5.3.6,OctetString,"M,V",P,,
+AF-Requested-Data,551,5.3.50,Unsigned32,V,P,,M
+AF-Signalling-Protocol,529,5.3.26,Enumerated,V,P,,M
+Application-Service-Provider-Identity,532,5.3.29,UTF8String,V,P,,M
+Codec-Data,524,5.3.7,OctetString,"M,V",P,,
+Content-Version,552,5.3.49,Unsigned64,V,P,,M
+Extended-Max-Requested-BW-DL,554,5.3.52,Unsigned32,V,P,,M
+Extended-Max-Requested-BW-UL,555,5.3.53,Unsigned32,V,P,,M
+Extended-Max-Supported-BW-DL,556,5.3.54,Unsigned32,V,P,,M
+Extended-Max-Supported-BW-UL,557,5.3.55,Unsigned32,V,P,,M
+Extended-Min-Desired-BW-DL,558,5.3.56,Unsigned32,V,P,,M
+Extended-Min-Desired-BW-UL,559,5.3.57,Unsigned32,V,P,,M
+Extended-Min-Requested-BW-DL,560,5.3.58,Unsigned32,V,P,,M
+Extended-Min-Requested-BW-UL,561,5.3.59,Unsigned32,V,P,,M
+Flow-Description,507,5.3.8,IPFilterRule,"M,V",P,,
+Flow-Number,509,5.3.9,Unsigned32,"M,V",P,,
+Flows,510,5.3.10,Grouped,"M,V",P,,
+Flow-Status,511,5.3.11,Enumerated,"M,V",P,,
+Flow-Usage,512,5.3.12,Enumerated,"M,V",P,,
+GCS-Identifier,538,5.3.36,OctetString,V,P,,M
+# Note: 3GPP TS 29.214 Table 5.3.0.1 row IMS-Content-Identifier (563),,,,,,,
+"# missing M, assume MUST NOT.",,,,,,,
+# ,,,,,,,
+# Fix: IMS-Content-Identifier (563) flag M MUST NOT.,,,,,,,
+IMS-Content-Identifier,563,5.3.60,OctetString,V,P,,M
+# Note: 3GPP TS 29.214 Table 5.3.0.1 row IMS-Content (564),,,,,,,
+"# missing M, assume MUST NOT.",,,,,,,
+# ,,,,,,,
+# Fix: IMS-Content (564) flag M MUST NOT.,,,,,,,
+IMS-Content-Type,564,5.3.61,Enumerated,V,P,,M
+IP-Domain-Id,537,5.3.35,OctetString,V,P,,M
+Max-Requested-Bandwidth-DL,515,5.3.14,Unsigned32,"M,V",P,,
+Max-Requested-Bandwidth-UL,516,5.3.15,Unsigned32,"M,V",P,,
+Max-Supported-Bandwidth-DL,543,5.3.41,Unsigned32,V,P,,M
+Max-Supported-Bandwidth-UL,544,5.3.42,Unsigned32,V,P,,M
+MCPTT-Identifier,547,5.3.45,OctetString,V,P,,M
+MCVideo-Identifier,562,5.3.45a,OctetString,V,P,,M
+Media-Component-Description,517,5.3.16,Grouped,"M,V",P,,
+Media-Component-Number,518,5.3.17,Unsigned32,"M,V",P,,
+Media-Component-Status,549,5.3.48,Unsigned32,V,P,,M
+Media-Sub-Component,519,5.3.18,Grouped,"M,V",P,,
+Media-Type,520,5.3.19,Enumerated,"M,V",P,,
+MPS-Identifier,528,5.3.30,OctetString,V,P,,M
+Min-Desired-Bandwidth-DL,545,5.3.43,Unsigned32,V,P,,M
+Min-Desired-Bandwidth-UL,546,5.3.44,Unsigned32,V,P,,M
+Min-Requested-Bandwidth-DL,534,5.3.32,Unsigned32,V,P,,M
+Min-Requested-Bandwidth-UL,535,5.3.33,Unsigned32,V,P,,M
+Priority-Sharing-Indicator,550,5.3.47,Enumerated,V,P,,M
+Pre-emption-Control-Info,553,5.3.51,Unsigned32,V,P,,M
+Required-Access-Info,536,5.3.34,Enumerated,V,P,,M
+Retry-Interval,541,5.3.39,Unsigned32,V,P,,M
+Rx-Request-Type,533,5.3.31,Enumerated,V,P,,M
+RR-Bandwidth,521,5.3.20,Unsigned32,"M,V",P,,
+RS-Bandwidth,522,5.3.21,Unsigned32,"M,V",P,,
+Service-Authorization-Info,548,5.3.46,Unsigned32,V,P,,M
+Service-URN,525,5.3.23,OctetString,"M,V",P,,
+Service-Info-Status,527,5.3.25,Enumerated,"M,V",P,,
+Sharing-Key-DL,539,5.3.37,Unsigned32,V,P,,M
+Sharing-Key-UL,540,5.3.38,Unsigned32,V,P,,M
+Specific-Action,513,5.3.13,Enumerated,"M,V",P,,
+SIP-Forking-Indication,523,5.3.22,Enumerated,"M,V",P,,
+Sponsor-Identity,531,5.3.28,UTF8String,V,P,,M
+Sponsored-Connectivity-Data,530,5.3.27,Grouped,V,P,,M
+Sponsoring-Action,542,5.3.40,Enumerated,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.215,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.215 V15.2.0 (2019-09),,,,,,,
+# Policy and Charging Control (PCC) over S9 reference point;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29215-f20.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.215 Table 5.3.0.1: S9 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+DRA-Deployment,2206,5.3.7,Enumerated,V,P,,M
+Multiple-BBERF-Action,2204,5.3.6,Enumerated,"M,V",P,,
+Subsession-Decision-Info,2200,5.3.1,Grouped,"M,V",P,,
+Subsession-Enforcement-Info,2201,5.3.2,Grouped,"M,V",P,,
+Subsession-Id,2202,5.3.3,Unsigned32,"M,V",P,,
+Subsession-Operation,2203,5.3.4,Enumerated,"M,V",P,,
+DRA-Binding,2208,5.3.x,Enumerated,V,P,,M
+#=,,,,,,,
+# 3GPP TS 29.215 Table A.7.3.1.1: S9a specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+PCRF-Address,2207,A.7.3.1.1,DiameterIdentity,"V,M",P,,
+#=,,,,,,,
+# 3GPP TS 29.215 Table A.8.3.1.1: S9a* specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+UE-Local-IPv6-Prefix,2205,A.8.3.1,OctetString,"V,M",P,,
+,,,,,,,
+@standard,3GPP TS 29.217,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.217 V15.1.0 (2019-09),,,,,,,
+# Policy and Charging Control (PCC);,,,,,,,
+# Congestion reporting over Np reference point,,,,,,,
+# ,,,,,,,
+# From 3GPP 29217-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.217 Table 5.3.1.1: Np specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Aggregated-Congestion-Info,4000,5.3.2,Grouped,"V, M",P,,
+Aggregated-RUCI-Report,4001,5.3.3,Grouped,"V, M",P,,
+Congestion-Level-Definition,4002,5.3.4,Grouped,V,P,,M
+Congestion-Level-Range,4003,5.3.5,Unsigned32,V,P,,M
+Congestion-Level-Set-Id,4004,5.3.6,Unsigned32,V,P,,M
+Congestion-Level-Value,4005,5.3.7,Unsigned32,"V, M",P,,
+Congestion-Location-Id,4006,5.3.8,Grouped,V,P,,M
+Conditional-Restriction,4007,5.3.9,Unsigned32,V,P,,M
+eNodeB-Id,4008,5.3.10,OctetString,"V, M",P,,
+IMSI-List,4009,5.3.11,OctetString,"V, M",P,,
+RCAF-Id,4010,5.3.12,DiameterIdentity,"V, M",P,,
+Reporting-Restriction,4011,5.3.13,Unsigned32,V,P,,M
+RUCI-Action,4012,5.3.14,Unsigned32,V,P,,M
+Extended-eNodeB-Id,4013,5.3.15,OctetString,"V, ",P,,M
+,,,,,,,
+@standard,3GPP TS 29.219,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.219 V15.3.0 (2019-09),,,,,,,
+# Policy and Charging Control: Spending Limit Reporting over,,,,,,,
+# Sy reference point,,,,,,,
+# ,,,,,,,
+# From 3GPP 29219-f30.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.219 Table 5.3.0.1: Sy specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Pending-Policy-Counter-Information,2905,5.3.5,Grouped,"M,V",P,,
+Pending-Policy-Counter-Change-Time,2906,5.3.6,Time,"M,V",P,,
+Policy-Counter-Identifier,2901,5.3.1,UTF8String,"M,V",P,,
+Policy-Counter-Status,2902,5.3.2,UTF8String,"M,V",P,,
+Policy-Counter-Status-Report,2903,5.3.3,Grouped,"M,V",P,,
+SL-Request-Type,2904,5.3.4,Enumerated,"M,V",P,,
+SN-Request-Type,2907,5.3.7,Unsigned32,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.229,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.229 V15.2.0 (2019-09),,,,,,,
+# Cx and Dx interfaces based on the Diameter protocol;,,,,,,,
+# Protocol details,,,,,,,
+# ,,,,,,,
+# From 3GPP 29229-f20.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.229 Table 6.3.1: Diameter Multimedia Application AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Visited-Network-Identifier,600,6.3.1,OctetString,"M, V",,,
+Public-Identity,601,6.3.2,UTF8String,"M, V",,,
+Server-Name,602,6.3.3,UTF8String,"M, V",,,
+Server-Capabilities,603,6.3.4,Grouped,"M, V",,,
+Mandatory-Capability,604,6.3.5,Unsigned32,"M, V",,,
+Optional-Capability,605,6.3.6,Unsigned32,"M, V",,,
+# Note: Name conflict with 3GPP TS 29.329 User-Data (702).,,,,,,,
+# 3GPP TS 29.229 V6.2.0 (2004-09) allocated User-Data (606).,,,,,,,
+# 3GPP TS 29.329 V6.2.0 (2004-09) allocated User-Data (702).,,,,,,,
+User-Data,606,6.3.7,OctetString,"M, V",,,
+SIP-Number-Auth-Items,607,6.3.8,Unsigned32,"M, V",,,
+SIP-Authentication-Scheme,608,6.3.9,UTF8String,"M, V",,,
+SIP-Authenticate,609,6.3.10,OctetString,"M, V",,,
+SIP-Authorization,610,6.3.11,OctetString,"M, V",,,
+SIP-Authentication-Context,611,6.3.12,OctetString,"M, V",,,
+SIP-Auth-Data-Item,612,6.3.13,Grouped,"M, V",,,
+SIP-Item-Number,613,6.3.14,Unsigned32,"M, V",,,
+Server-Assignment-Type,614,6.3.15,Enumerated,"M, V",,,
+Deregistration-Reason,615,6.3.16,Grouped,"M, V",,,
+Reason-Code,616,6.3.17,Enumerated,"M, V",,,
+Reason-Info,617,6.3.18,UTF8String,"M, V",,,
+Charging-Information,618,6.3.19,Grouped,"M, V",,,
+Primary-Event-Charging-Function-Name,619,6.3.20,DiameterURI,"M, V",,,
+Secondary-Event-Charging-Function-Name,620,6.3.21,DiameterURI,"M, V",,,
+Primary-Charging-Collection-Function-Name,621,6.3.22,DiameterURI,"M, V",,,
+Secondary-Charging-Collection-Function-Name,622,6.3.23,DiameterURI,"M, V",,,
+User-Authorization-Type,623,6.3.24,Enumerated,"M, V",,,
+User-Data-Already-Available,624,6.3.26,Enumerated,"M, V",,,
+Confidentiality-Key,625,6.3.27,OctetString,"M, V",,,
+Integrity-Key,626,6.3.28,OctetString,"M, V",,,
+# Note: User-Data-Request-Type (627) removed in 3GPP TS 29.229 V6.5.0 (2005-06).,,,,,,,
+#,,,,,,,
+Supported-Features,628,6.3.29,Grouped,V,M,,
+Feature-List-ID,629,6.3.30,Unsigned32,V,,,M
+Feature-List,630,6.3.31,Unsigned32,V,,,M
+Supported-Applications,631,6.3.32,Grouped,V,,,M
+Associated-Identities,632,6.3.33,Grouped,V,,,M
+Originating-Request,633,6.3.34,Enumerated,"M,V",,,
+Wildcarded-Public-Identity,634,6.3.35,UTF8String,V,,,M
+SIP-Digest-Authenticate,635,6.3.36,Grouped,V,,,M
+Wildcarded-IMPU,636,6.3.43,UTF8String,V,,,M
+UAR-Flags,637,6.3.44,Unsigned32,V,,,M
+Loose-Route-Indication,638,6.3.45,Enumerated,V,,,M
+SCSCF-Restoration-Info,639,6.3.46,Grouped,V,,,M
+Path,640,6.3.47,OctetString,V,,,M
+Contact,641,6.3.48,OctetString,V,,,M
+Subscription-Info,642,6.3.49,Grouped,V,,,M
+Call-ID-SIP-Header,643,6.3.49.1,OctetString,V,,,M
+From-SIP-Header,644,6.3.49.2,OctetString,V,,,M
+To-SIP-Header,645,6.3.49.3,OctetString,V,,,M
+Record-Route,646,6.3.49.4,OctetString,V,,,M
+Associated-Registered-Identities,647,6.3.50,Grouped,V,,,M
+Multiple-Registration-Indication,648,6.3.51,Enumerated,V,,,M
+Restoration-Info,649,6.3.52,Grouped,V,,,M
+Session-Priority,650,6.3.56,Enumerated,V,,,M
+Identity-with-Emergency-Registration,651,6.3.57,Grouped,V,,,M
+Priviledged-Sender-Indication,652,6.3.58,Enumerated,V,,,M
+LIA-Flags,653,6.3.59,Unsigned32,V,,,M
+Initial-CSeq-Sequence-Number,654,6.3.62,Unsigned32,V,,,M
+SAR-Flags,655,6.3.63,Unsigned32,V,,,M
+Allowed-WAF-WWSF-Identities,656,6.3.64,Grouped,V,,,M
+WebRTC-Authentication-Function-Name,657,6.3.65,UTF8String,V,,,M
+WebRTC-Web-Server-Function-Name,658,6.3.66,UTF8String,V,,,M
+RTR-Flags,659,6.3.69,Unsigned32,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.234,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.234 V11.2.0 (2013-06),,,,,,,
+# 3GPP system to Wireless Local Area Network (WLAN),,,,,,,
+# interworking;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29234-b20.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.234 Table 10.1.1: Diameter Multimedia Application AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+3GPP-WLAN-APN-Id,100,10.1.15,OctetString,"M, V",,,
+Authentication-Method,300,10.1.5,Enumerated,"M, V",,,
+Authentication-Information-SIM,301,10.1.6,OctetString,"M, V",,,
+Authorization-Information-SIM,302,10.1.7,OctetString,"M,V",,,
+WLAN-User-Data,303,10.1.8,Grouped,"M, V",,,
+Charging-Data,304,10.1.10,Grouped,"M, V",,,
+WLAN-Access,305,10.1.11,Enumerated,"M, V",,,
+WLAN-3GPP-IP-Access,306,10.1.12,Enumerated,"M, V",,,
+APN-Authorized,307,10.1.14,Grouped,"M, V",,,
+# Note: APN-Id (308) OctetString removed in 3GPP TS 29.234 V6.5.0 (2005-12).,,,,,,,
+#,,,,,,,
+APN-Barring-Type,309,10.1.16,Enumerated,"M, V",,,
+WLAN-Direct-IP-Access,310,10.1.17,Enumerated,"M, V",,,
+Session-Request-Type,311,10.1.23,Enumerated,"M, V",,,
+Routing-Policy,312,10.1.24,IPFilterRule,"M, V",,,
+Max-Requested-Bandwidth,313,10.1.26,OctetString,"M, V",,,
+Charging-Characteristics,314,10.1.27,Integer32,"M, V",,,
+Charging-Nodes,315,10.1.28,Grouped,"M, V",,,
+Primary-OCS-Charging-Function-Name,316,10.1.29,DiameterIdentity,"M, V",,,
+Secondary-OCS-Charging-Function-Name,317,10.1.30,DiameterIdentity,"M, V",,,
+# Note: 3GPP TS 29.273 from Release 12 now defines 3GPP-AAA-Server-Name (318).,,,,,,,
+# ,,,,,,,
+Maximum-Number-Accesses,319,10.1.38,Unsigned32,"M, V",,,
+,,,,,,,
+@standard,3GPP TS 29.272,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.272 V15.10.0 (2019-12),,,,,,,
+# Mobility Management Entity (MME),,,,,,,
+# and Serving GPRS Support Node (SGSN) related interfaces,,,,,,,
+# based on Diameter protocol,,,,,,,
+# ,,,,,,,
+# From 3GPP 29272-fa0.docx,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+"# 3GPP TS 29.272 Table 7.3.1/1: S6a/S6d, S7a/S7d and S13/S13' specific DiameterAVPs",,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Subscription-Data,1400,7.3.2,Grouped,"M,V",,,
+Terminal-Information,1401,7.3.3,Grouped,"M,V",,,
+IMEI,1402,7.3.4,UTF8String,"M,V",,,
+Software-Version,1403,7.3.5,UTF8String,"M,V",,,
+QoS-Subscribed,1404,7.3.77,OctetString,"M,V",,,
+ULR-Flags,1405,7.3.7,Unsigned32,"M,V",,,
+ULA-Flags,1406,7.3.8,Unsigned32,"M,V",,,
+Visited-PLMN-Id,1407,7.3.9,OctetString,"M,V",,,
+Requested-EUTRAN-Authentication-Info,1408,7.3.11,Grouped,"M,V",,,
+Requested-UTRAN-GERAN-Authentication-Info,1409,7.3.12,Grouped,"M,V",,,
+Number-Of-Requested-Vectors,1410,7.3.14,Unsigned32,"M,V",,,
+Re-Synchronization-Info,1411,7.3.15,OctetString,"M,V",,,
+Immediate-Response-Preferred,1412,7.3.16,Unsigned32,"M,V",,,
+Authentication-Info,1413,7.3.17,Grouped,"M,V",,,
+E-UTRAN-Vector,1414,7.3.18,Grouped,"M,V",,,
+UTRAN-Vector,1415,7.3.19,Grouped,"M,V",,,
+GERAN-Vector,1416,7.3.20,Grouped,"M,V",,,
+Network-Access-Mode,1417,7.3.21,Enumerated,"M,V",,,
+HPLMN-ODB,1418,7.3.22,Unsigned32,"M,V",,,
+Item-Number,1419,7.3.23,Unsigned32,"M,V",,,
+Cancellation-Type,1420,7.3.24,Enumerated,"M,V",,,
+DSR-Flags,1421,7.3.25,Unsigned32,"M,V",,,
+DSA-Flags,1422,7.3.26,Unsigned32,"M,V",,,
+Context-Identifier,1423,7.3.27,Unsigned32,"M,V",,,
+Subscriber-Status,1424,7.3.29,Enumerated,"M,V",,,
+Operator-Determined-Barring,1425,7.3.30,Unsigned32,"M,V",,,
+Access-Restriction-Data,1426,7.3.31,Unsigned32,"M,V",,,
+APN-OI-Replacement,1427,7.3.32,UTF8String,"M,V",,,
+All-APN-Configurations-Included-Indicator,1428,7.3.33,Enumerated,"M,V",,,
+APN-Configuration-Profile,1429,7.3.34,Grouped,"M,V",,,
+APN-Configuration,1430,7.3.35,Grouped,"M,V",,,
+EPS-Subscribed-QoS-Profile,1431,7.3.37,Grouped,"M,V",,,
+VPLMN-Dynamic-Address-Allowed,1432,7.3.38,Enumerated,"M,V",,,
+STN-SR,1433,7.3.39,OctetString,"M,V",,,
+Alert-Reason,1434,7.3.83,Enumerated,"M,V",,,
+AMBR,1435,7.3.41,Grouped,"M,V",,,
+CSG-Subscription-Data,1436,7.3.78,Grouped,"M,V",,,
+CSG-Id,1437,7.3.79,Unsigned32,"M,V",,,
+PDN-GW-Allocation-Type,1438,7.3.44,Enumerated,"M,V",,,
+Expiration-Date,1439,7.3.80,Time,"M,V",,,
+RAT-Frequency-Selection-Priority-ID,1440,7.3.46,Unsigned32,"M,V",,,
+IDA-Flags,1441,7.3.47,Unsigned32,"M,V",,,
+PUA-Flags,1442,7.3.48,Unsigned32,"M,V",,,
+NOR-Flags,1443,7.3.49,Unsigned32,"M,V",,,
+User-Id,1444,7.3.50,UTF8String,V,,,M
+Equipment-Status,1445,7.3.51,Enumerated,"M,V",,,
+Regional-Subscription-Zone-Code,1446,7.3.52,OctetString,"M,V",,,
+RAND,1447,7.3.53,OctetString,"M,V",,,
+XRES,1448,7.3.54,OctetString,"M,V",,,
+AUTN,1449,7.3.55,OctetString,"M,V",,,
+KASME,1450,7.3.56,OctetString,"M,V",,,
+Trace-Collection-Entity,1452,7.3.98,Address,"M,V",,,
+Kc,1453,7.3.59,OctetString,"M,V",,,
+SRES,1454,7.3.60,OctetString,"M,V",,,
+PDN-Type,1456,7.3.62,Enumerated,"M,V",,,
+Roaming-Restricted-Due-To-Unsupported-Feature,1457,7.3.81,Enumerated,"M,V",,,
+Trace-Data,1458,7.3.63,Grouped,"M,V",,,
+Trace-Reference,1459,7.3.64,OctetString,"M,V",,,
+Trace-Depth,1462,7.3.67,Enumerated,"M,V",,,
+Trace-NE-Type-List,1463,7.3.68,OctetString,"M,V",,,
+Trace-Interface-List,1464,7.3.69,OctetString,"M,V",,,
+Trace-Event-List,1465,7.3.70,OctetString,"M,V",,,
+OMC-Id,1466,7.3.71,OctetString,"M,V",,,
+GPRS-Subscription-Data,1467,7.3.72,Grouped,"M,V",,,
+Complete-Data-List-Included-Indicator,1468,7.3.73,Enumerated,"M,V",,,
+PDP-Context,1469,7.3.74,Grouped,"M,V",,,
+PDP-Type,1470,7.3.75,OctetString,"M,V",,,
+3GPP2-MEID,1471,7.3.6,OctetString,"M,V",,,
+Specific-APN-Info,1472,7.3.82,Grouped,"M,V",,,
+LCS-Info,1473,7.3.84,Grouped,"M,V",,,
+GMLC-Number,1474,7.3.85,OctetString,"M,V",,,
+LCS-PrivacyException,1475,7.3.86,Grouped,"M,V",,,
+SS-Code,1476,7.3.87,OctetString,"M,V",,,
+# Note: 3GPP TS 29.272 V12.5.0 (2014-06) Table 7.3.1/1,,,,,,,
+# changed row SS-Status (1477) to be OctetString instead of Grouped.,,,,,,,
+# Clause 7.3.88 already described SS-Status (1147) as OctetString.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: SS-Status (1477) type changed from Grouped to OctetString.,,,,,,,
+SS-Status,1477,7.3.88,OctetString,"M,V",,,
+Notification-To-UE-User,1478,7.3.89,Enumerated,"M,V",,,
+External-Client,1479,7.3.90,Grouped,"M,V",,,
+Client-Identity,1480,7.3.91,OctetString,"M,V",,,
+GMLC-Restriction,1481,7.3.92,Enumerated,"M,V",,,
+PLMN-Client,1482,7.3.93,Enumerated,"M,V",,,
+Service-Type,1483,7.3.94,Grouped,"M,V",,,
+ServiceTypeIdentity,1484,7.3.95,Unsigned32,"M,V",,,
+MO-LR,1485,7.3.96,Grouped,"M,V",,,
+Teleservice-List,1486,7.3.99,Grouped,"M,V",,,
+TS-Code,1487,7.3.100,OctetString,"M,V",,,
+# Note: 3GPP TS 29.272 V12.4.0 (2014-03) renamed,,,,,,,
+# Call-Barring-Infor-List (1488) to Call-Barring-Info (1488).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: Call-Barring-Infor-List (1488) renamed to Call-Barring-Info (1488).,,,,,,,
+Call-Barring-Info,1488,7.3.101,Grouped,"M,V",,,
+SGSN-Number,1489,7.3.102,OctetString,"M,V",,,
+IDR-Flags,1490,7.3.103,Unsigned32,"M,V",,,
+ICS-Indicator,1491,7.3.104,Enumerated,V,,,M
+IMS-Voice-Over-PS-Sessions-Supported,1492,7.3.106,Enumerated,V,,,M
+Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions,1493,7.3.107,Enumerated,V,,,M
+Last-UE-Activity-Time,1494,7.3.108,Time,V,,,M
+EPS-User-State,1495,7.3.110,Grouped,V,,,M
+EPS-Location-Information,1496,7.3.111,Grouped,V,,,M
+MME-User-State,1497,7.3.112,Grouped,V,,,M
+SGSN-User-State,1498,7.3.113,Grouped,V,,,M
+User-State,1499,7.3.114,Enumerated,V,,,M
+# Note: 3GPP TS 29.272 Table 7.3.1/1 row MME-Location-Information (1600),,,,,,,
+# incorrectly has a space instead of hyphen in the name.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: MME-LocationInformation (1600) renamed to MME-Location-Information(1600).,,,,,,,
+MME-Location-Information,1600,7.3.115,Grouped,V,,,M
+SGSN-Location-Information,1601,7.3.116,Grouped,V,,,M
+E-UTRAN-Cell-Global-Identity,1602,7.3.117,OctetString,V,,,M
+Tracking-Area-Identity,1603,7.3.118,OctetString,V,,,M
+Cell-Global-Identity,1604,7.3.119,OctetString,V,,,M
+Routing-Area-Identity,1605,7.3.120,OctetString,V,,,M
+Location-Area-Identity,1606,7.3.121,OctetString,V,,,M
+Service-Area-Identity,1607,7.3.122,OctetString,V,,,M
+Geographical-Information,1608,7.3.123,OctetString,V,,,M
+Geodetic-Information,1609,7.3.124,OctetString,V,,,M
+Current-Location-Retrieved,1610,7.3.125,Enumerated,V,,,M
+Age-Of-Location-Information,1611,7.3.126,Unsigned32,V,,,M
+Active-APN,1612,7.3.127,Grouped,V,,,M
+Error-Diagnostic,1614,7.3.128,Enumerated,V,,,M
+Ext-PDP-Address,1621,7.3.129,Address,V,,,M
+UE-SRVCC-Capability,1615,7.3.130,Enumerated,V,,,M
+MPS-Priority,1616,7.3.131,Unsigned32,V,,,M
+VPLMN-LIPA-Allowed,1617,7.3.132,Enumerated,V,,,M
+LIPA-Permission,1618,7.3.133,Enumerated,V,,,M
+Subscribed-Periodic-RAU-TAU-Timer,1619,7.3.134,Unsigned32,V,,,M
+Ext-PDP-Type,1620,7.3.75A,OctetString,V,,,M
+SIPTO-Permission,1613,7.3.135,Enumerated,V,,,M
+MDT-Configuration,1622,7.3.136,Grouped,V,,,M
+Job-Type,1623,7.3.137,Enumerated,V,,,M
+Area-Scope,1624,7.3.138,Grouped,V,,,M
+List-Of-Measurements,1625,7.3.139,Unsigned32,V,,,M
+Reporting-Trigger,1626,7.3.140,Unsigned32,V,,,M
+Report-Interval,1627,7.3.141,Enumerated,V,,,M
+Report-Amount,1628,7.3.142,Enumerated,V,,,M
+Event-Threshold-RSRP,1629,7.3.143,Unsigned32,V,,,M
+Event-Threshold-RSRQ,1630,7.3.144,Unsigned32,V,,,M
+Logging-Interval,1631,7.3.145,Enumerated,V,,,M
+Logging-Duration,1632,7.3.146,Enumerated,V,,,M
+Relay-Node-Indicator,1633,7.3.147,Enumerated,V,,,M
+MDT-User-Consent,1634,7.3.148,Enumerated,V,,,M
+PUR-Flags,1635,7.3.149,Unsigned32,V,,,M
+Subscribed-VSRVCC,1636,7.3.150,Enumerated,V,,,M
+Equivalent-PLMN-List,1637,7.3.151,Grouped,V,,,M
+CLR-Flags,1638,7.3.152,Unsigned32,V,,,M
+UVR-Flags,1639,7.3.153,Unsigned32,"M,V",,,
+UVA-Flags,1640,7.3.154,Unsigned32,"M,V",,,
+VPLMN-CSG-Subscription-Data,1641,7.3.155,Grouped,"M,V",,,
+Time-Zone,1642,7.3.163,UTF8String,V,,,M
+A-MSISDN,1643,7.3.157,OctetString,V,,,M
+MME-Number-for-MT-SMS,1645,7.3.159,OctetString,V,,,M
+SMS-Register-Request,1648,7.3.162,Enumerated,V,,,M
+Local-Time-Zone,1649,7.3.156,Grouped,V,,,M
+Daylight-Saving-Time,1650,7.3.164,Enumerated,V,,,M
+Subscription-Data-Flags,1654,7.3.165,Unsigned32,V,,,M
+# Note: 3GPP TS 29.272 V12.9.0 (2015-12) changed AVP code of,,,,,,,
+# Measurement-Period-LTE (1655) from 1656.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: Measurement-Period-LTE (1656) code changed to Measurement-Period-LTE (1655).,,,,,,,
+Measurement-Period-LTE,1655,7.3.166,Enumerated,V,,,M
+# Note: 3GPP TS 29.272 V12.9.0 (2015-12) changed AVP code of,,,,,,,
+# Measurement-Period-UMTS (1656) from 1655.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: Measurement-Period-UMTS (1655) code changed to Measurement-Period-UMTS (1656).,,,,,,,
+Measurement-Period-UMTS,1656,7.3.167,Enumerated,V,,,M
+Collection-Period-RRM-LTE,1657,7.3.168,Enumerated,V,,,M
+Collection-Period-RRM-UMTS,1658,7.3.169,Enumerated,V,,,M
+Positioning-Method,1659,7.3.170,OctetString,V,,,M
+Measurement-Quantity,1660,7.3.171,OctetString,V,,,M
+Event-Threshold-Event-1F,1661,7.3.172,Integer32,V,,,M
+Event-Threshold-Event-1I,1662,7.3.173,Integer32,V,,,M
+Restoration-Priority,1663,7.3.174,Unsigned32,V,,,M
+SGs-MME-Identity,1664,7.3.175,UTF8String,V,,,M
+SIPTO-Local-Network-Permission,1665,7.3.176,Unsigned32,V,,,M
+Coupled-Node-Diameter-ID,1666,7.3.177,DiameterIdentity,V,,,M
+WLAN-offloadability,1667,7.3.181,Grouped,V,,,M
+WLAN-offloadability-EUTRAN,1668,7.3.182,Unsigned32,V,,,M
+WLAN-offloadability-UTRAN,1669,7.3.183,Unsigned32,V,,,M
+Reset-ID,1670,7.3.184,OctetString,V,,,M
+MDT-Allowed-PLMN-Id,1671,7.3.185,OctetString,V,,,M
+Adjacent-PLMNs,1672,7.3.186,Grouped,V,,,M
+Adjacent-Access-Restriction-Data,1673,7.3.187,Grouped,V,,,M
+DL-Buffering-Suggested-Packet-Count,1674,7.3.188,Integer32,V,,,M
+IMSI-Group-Id,1675,7.3.189,Grouped,V,,,M
+Group-Service-Id,1676,7.3.190,Unsigned32,V,,,M
+Group-PLMN-Id,1677,7.3.191,OctetString,V,,,M
+Local-Group-Id,1678,7.3.192,OctetString,V,,,M
+AIR-Flags,1679,7.3.201,Unsigned32,V,,,M
+UE-Usage-Type,1680,7.3.202,Unsigned32,V,,,M
+Non-IP-PDN-Type-Indicator,1681,7.3.204,Enumerated,V,,,M
+Non-IP-Data-Delivery-Mechanism,1682,7.3.205,Unsigned32,V,,,M
+# Note: 3GPP TS 29.272 Table 7.3.1/1 row Additional-Context-ID (1683) has,,,,,,,
+"# incorrect name and should be ""Additional-Context-Identifier"" per clause 7.3.206.",,,,,,,
+# ,,,,,,,
+# Fix: Additional-Context-ID (1683) renamed to Additional-Context-Identifier (1683).,,,,,,,
+Additional-Context-Identifier,1683,7.3.206,Unsigned32,V,,,M
+SCEF-Realm,1684,7.3.207,DiameterIdentity,V,,,M
+Subscription-Data-Deletion,1685,7.3.208,Grouped,V,,,M
+# Note: 3GPP TS 29.272 Table 7.3.1/1 row Preferred-Data-Mode (1686),,,,,,,
+"# incorrectly has value type Grouped instead of Unsigned32,",,,,,,,
+# conflicting with clause 7.3.209.,,,,,,,
+# ,,,,,,,
+# Fix: Preferred-Data-Mode (1686) type changed from Grouped to Unsigned32.,,,,,,,
+Preferred-Data-Mode,1686,7.3.209,Unsigned32,V,,,M
+Emergency-Info,1687,7.3.210,Grouped,V,,,M
+V2X-Subscription-Data,1688,7.3.212,Grouped,V,,,M
+V2X-Permission,1689,7.3.213,Unsigned32,V,,,M
+PDN-Connection-Continuity,1690,7.3.214,Unsigned32,V,,,M
+eDRX-Cycle-Length,1691,7.3.215,Grouped,V,,,M
+eDRX-Cycle-Length-Value,1692,7.3.216,OctetString,V,,,M
+UE-PC5-AMBR,1693,7.3.217,Unsigned32,V,,,M
+MBSFN-Area,1694,7.3.219,Grouped,V,,,M
+MBSFN-Area-ID,1695,7.3.220,Unsigned32,V,,,M
+Carrier-Frequency,1696,7.3.221,Unsigned32,V,,,M
+RDS-Indicator,1697,7.3.222,Enumerated,V,,,M
+Service-Gap-Time,1698,7.3.223,Unsigned32,V,,,M
+Aerial-UE-Subscription-Information,1699,7.3.224,Unsigned32,V,,,M
+Broadcast-Location-Assistance-Data-Types,1700,7.3.225,Unsigned64,V,,,M
+Paging-Time-Window,1701,7.3.226,Grouped,V,,,M
+Operation-Mode,1702,7.3.227,Unsigned32,V,,,M
+Paging-Time-Window-Length,1703,7.3.228,OctetString,V,,,M
+Core-Network-Restrictions,1704,7.3.230,Unsigned32,V,,,M
+eDRX-Related-RAT,1705,7.3.229,Grouped,V,,,M
+Interworking-5GS-Indicator,1706,7.3.231,Enumerated,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.273,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 V15.4.0 (2019-09),,,,,,,
+# Evolved Packet System (EPS);,,,,,,,
+# 3GPP EPS AAA interfaces,,,,,,,
+# ,,,,,,,
+# From 3GPP 29273-f40.docx,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 5.2.3.1/1: Diameter STa AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+ANID,1504,5.2.3.7,UTF8String,"M,V",,,P
+AN-Trusted,1503,5.2.3.9,Enumerated,"M,V",,,P
+MIP-FA-RK,1506,5.2.3.12,OctetString,"M,V",,,P
+MIP-FA-RK-SPI,1507,5.2.3.13,Unsigned32,"M,V",,,P
+Full-Network-Name,1516,5.2.3.14,OctetString,V,,,"M,P"
+Short-Network-Name,1517,5.2.3.15,OctetString,V,,,"M,P"
+WLAN-Identifier,1509,5.2.3.18,Grouped,V,,,"M,P"
+AAA-Failure-Indication,1518,8.2.3.21,Unsigned32,V,,,"M,P"
+Transport-Access-Type,1519,5.2.3.19,Enumerated,V,,,"M,P"
+DER-Flags,1520,5.2.3.20,Unsigned32,V,,,"M,P"
+DEA-Flags,1521,5.2.3.21,Unsigned32,V,,,"M,P"
+SSID,1524,5.2.3.22,UTF8String,V,,,"M,P"
+HESSID,1525,5.2.3.23,UTF8String,V,,,"M,P"
+Access-Network-Info,1526,5.2.3.24,Grouped,V,,,"M,P"
+TWAN-Connection-Mode,1527,5.2.3.25,Unsigned32,V,,,"M,P"
+TWAN-Connectivity-Parameters,1528,5.2.3.26,Grouped,V,,,"M,P"
+Connectivity-Flags,1529,5.2.3.27,Unsigned32,V,,,"M,P"
+TWAN-PCO,1530,5.2.3.28,OctetString,V,,,"M,P"
+TWAG-CP-Address,1531,5.2.3.29,Address,V,,,"M,P"
+TWAG-UP-Address,1532,5.2.3.30,UTF8String,V,,,"M,P"
+TWAN-S2a-Failure-Cause,1533,5.2.3.31,Unsigned32,V,,,"M,P"
+SM-Back-Off-Timer,1534,5.2.3.32,Unsigned32,V,,,"M,P"
+WLCP-Key,1535,5.2.3.33,OctetString,V,,,"M,P"
+Emergency-Services,1538,7.2.3.4,Unsigned32,V,,,"M,P"
+IMEI-Check-In-VPLMN-Result,1540,5.2.3.35,Unsigned32,V,,,"M,P"
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 6.2.3.1/1: Diameter SWd AVPs,,,,,,,
+# ,,,,,,,
+# Note: No AVPs are first defined in this table.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 7.2.3.1/1: Diameter SWm AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Trace-Info,1505,8.2.3.1.3,Grouped,V,,,"M,P"
+AAR-Flags,1539,7.2.3.5,Unsigned32,V,,,"M,P"
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 8.2.3.0/1: Diameter SWx AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Non-3GPP-User-Data,1500,8.2.3.1,Grouped,"M,V",,,P
+Non-3GPP-IP-Access,1501,8.2.3.3,Enumerated,"M,V",,,P
+Non-3GPP-IP-Access-APN,1502,8.2.3.4,Enumerated,"M,V",,,P
+PPR-Flags,1508,8.2.3.17,Unsigned32,V,,,"M,P"
+TWAN-Default-APN-Context-Id,1512,8.2.3.18,Unsigned32,V,,,"M,P"
+TWAN-Access-Info,1510,8.2.3.19,Grouped,V,,,"M,P"
+Access-Authorization-Flags,1511,8.2.3.20,Unsigned32,V,,,"M,P"
+3GPP-AAA-Server-Name,318,8.2.3.24,DiameterIdentity,"M, V",,,P
+ERP-Authorization,1541,8.2.3.27,Unsigned32,V,,,"M,P"
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 9.2.3.1.1/1: Diameter S6b AVPs for DSMIPv6,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+RAR-Flags,1522,9.2.3.1.5,Unsigned32,V,,,"M,P"
+# Note: Trust-Relationship-Update (1515) Enumerated removed in 3GPP TS 29.273 V11.4.0 (2012-12).,,,,,,,
+#,,,,,,,
+DER-S6b-Flags,1523,9.2.3.7,Unsigned32,V,,,"M,P"
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 9.2.3.2.1/1: Diameter S6b AVPs for PMIPv6 or GTPv2,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Origination-Time-Stamp,1536,9.2.3.2.6,Unsigned64,V,,,"M,P"
+Maximum-Wait-Time,1537,9.2.3.2.7,Unsigned32,V,,,"M,P"
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.273 Table 9.2.3.6.1/1: Diameter S6b AVPs for MIPv4 FACoA,,,,,,,
+# ,,,,,,,
+# Note: No AVPs are first defined in this table.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+,,,,,,,
+@standard,3GPP TS 29.283,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.283 V15.1.0 (2019-09),,,,,,,
+# Diameter Data Management Applications,,,,,,,
+# ,,,,,,,
+# From 3GPP 29283-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+"# 3GPP TS 29.283 Table 7.3.1-1: MCPTT-2, MCVideo-2, MCData-2 and CSC-13 specific Diameter AVPs",,,,,,,
+#=,,,,,,,
+#,,,,,,,
+MCPTT-ID,4500,7.3.2,UTF8String,"M, V",,,
+Data-Identification,4501,7.3.3,Grouped,"M, V",,,
+Data-Identification-Prefix,4502,7.3.11,Unsigned32,"M,V",,,
+Data-Identification-Flags,4503,7.3.12,Unsigned64,"M,V",,,
+DPR-Flags,4504,7.3.13,Unsigned32,"M,V",,,
+DPA-Flags,4505,7.3.14,Unsigned32,"M,V",,,
+DUR-Flags,4506,7.3.15,Unsigned32,"M,V",,,
+DUA-Flags,4507,7.3.16,Unsigned32,"M,V",,,
+NDR-Flags,4508,7.3.17,Unsigned32,"M,V",,,
+NDA-Flags,4509,7.3.18,Unsigned32,"M,V",,,
+User-Data-Id,4510,7.3.19,Unsigned32,"M,V",,,
+MC-Service-User-Profile-Data,4511,7.3.20,Grouped,"M,V",,,
+# Note: Name conflict with 3GPP TS 29.140 Sequence-Number (1107).,,,,,,,
+# and 3GPP TS 29.329 Sequence-Number (716).,,,,,,,
+# 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107).,,,,,,,
+# 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716).,,,,,,,
+# 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512).,,,,,,,
+# ,,,,,,,
+# Fix: Sequence-Number (4512) renamed to Sequence-Number-29.283 (4512).,,,,,,,
+Sequence-Number-29.283,4512,7.3.21,Unsigned32,"M,V",,,
+Data,4513,7.3.22,Grouped,"M,V",,,
+MCVideo-ID,4514,7.3.24,UTF8String,V,,,M
+MCData-ID,4515,7.3.25,UTF8String,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.329,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.329 V15.2.0 (2019-09),,,,,,,
+# Sh Interface based on the Diameter protocol;,,,,,,,
+# Protocol details,,,,,,,
+# ,,,,,,,
+# From 3GPP 29329-f20.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.329 Table 6.3.1: Table 6.3.1: Diameter Multimedia Application AVPs,,,,,,,
+# ,,,,,,,
+# Note: AVPs referenced from other sources are not added here.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+User-Identity,700,6.3.1,Grouped,"M, V",,,
+MSISDN,701,6.3.2,OctetString,"M, V",,,
+# Note: Name conflict with 3GPP TS 29.229 User-Data (606).,,,,,,,
+# 3GPP TS 29.229 V6.2.0 (2004-09) allocated User-Data (606).,,,,,,,
+# 3GPP TS 29.329 V6.2.0 (2004-09) allocated User-Data (702).,,,,,,,
+# ,,,,,,,
+# Fix: User-Data (702) renamed to User-Data-29.329 (702).,,,,,,,
+User-Data-29.329,702,6.3.3,OctetString,"M, V",,,
+Data-Reference,703,6.3.4,Enumerated,"M, V",,,
+Service-Indication,704,6.3.5,OctetString,"M, V",,,
+Subs-Req-Type,705,6.3.6,Enumerated,"M, V",,,
+Requested-Domain,706,6.3.7,Enumerated,"M, V",,,
+Current-Location,707,6.3.8,Enumerated,"M, V",,,
+Identity-Set,708,6.3.10,Enumerated,V,,,M
+Expiry-Time,709,6.3.16,Time,V,,,M
+Send-Data-Indication,710,6.3.17,Enumerated,V,,,M
+DSAI-Tag,711,6.3.18,OctetString,"M, V",,,
+One-Time-Notification,712,6.3.22,Enumerated,V,,,M
+Requested-Nodes,713,6.3.7A,Unsigned32,V,,,M
+Serving-Node-Indication,714,6.3.23,Enumerated,V,,,M
+Repository-Data-ID,715,6.3.24,Grouped,V,,,M
+# Note: Name conflict with 3GPP TS 29.140 Sequence-Number (1107),,,,,,,
+# and 3GPP TS 29.283 Sequence-Number (4512).,,,,,,,
+# 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107).,,,,,,,
+# 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716).,,,,,,,
+# 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512).,,,,,,,
+Sequence-Number,716,6.3.25,Unsigned32,V,,,M
+Pre-paging-Supported,717,6.3.26,Enumerated,V,,,M
+Local-Time-Zone-Indication,718,6.3.27,Enumerated,V,,,M
+UDR-Flags,719,6.3.28,Unsigned32,V,,,M
+Call-Reference-Info,720,6.3.29,Grouped,V,,,M
+Call-Reference-Number,721,6.3.30,OctetString,V,,,M
+AS-Number,722,6.3.31,OctetString,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.336,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.336 V15.7.0 (2019-09),,,,,,,
+# Home Subscriber Server (HSS) diameter interfaces for,,,,,,,
+# interworking with packet data networks and applications,,,,,,,
+# ,,,,,,,
+# From 3GPP 29336-f70.docx,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.336 Table 6.4.1/1: S6m/S6n specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+IP-SM-GW-Number,3100,6.4.14,OctetString,"M,V",,,
+IP-SM-GW-Name,3101,6.4.15,DiameterIdentity,"M,V",,,
+User-Identifier,3102,6.4.2,Grouped,"M,V",,,
+Service-ID,3103,6.4.3,Enumerated,"M,V",,,
+SCS-Identity,3104,6.4.4,OctetString,"M,V",,,
+Service-Parameters,3105,6.4.5,Grouped,"M,V",,,
+T4-Parameters,3106,6.4.6,Grouped,"M,V",,,
+Service-Data,3107,6.4.7,Grouped,"M,V",,,
+T4-Data,3108,6.4.8,Grouped,"M,V",,,
+HSS-Cause,3109,6.4.9,Unsigned32,"M,V",,,
+SIR-Flags,3110,6.4.10,Unsigned32,"M,V",,,
+# Note: 3GPP TS 29.061 External-Identifier (28) OctetString replaced by,,,,,,,
+# 3GPP TS 29.336 External-Identifier (3111) UTF8String.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: External-Identifier (28) OctetString replaced by External-Identifier (3111) UTF8String.,,,,,,,
+External-Identifier,3111,6.4.11,UTF8String,"M,V",,,
+IP-SM-GW-Realm,3112,6.4.18,DiameterIdentity,"M,V",,,
+#=,,,,,,,
+# 3GPP TS 29.336 Table 8.4.1-1: S6t specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+AESE-Communication-Pattern,3113,8.4.25,Grouped,"M,V",,,
+Communication-Pattern-Set,3114,8.4.26,Grouped,"M,V",,,
+Periodic-Communication-Indicator,3115,8.4.27,Unsigned32,"M,V",,,
+Communication-Duration-Time,3116,8.4.28,Unsigned32,"M,V",,,
+# Note: 3GPP TS 29.336 Table 8.4.1-1 row Periodic-time (3117) has,,,,,,,
+"# incorrect name and should be ""Periodic-Time"" per majority use.",,,,,,,
+# ,,,,,,,
+# Fix: Periodic-time (3117) renamed to Periodic-Time (931).,,,,,,,
+Periodic-Time,3117,8.4.29,Unsigned32,"M,V",,,
+Scheduled-Communication-Time,3118,8.4.30,Grouped,"M,V",,,
+Stationary-Indication,3119,8.4.31,Unsigned32,"M,V",,,
+AESE-Communication-Pattern-Config-Status,3120,8.4.32,Grouped,"M,V",,,
+AESE-Error-Report,3121,8.4.33,Grouped,"M,V",,,
+Monitoring-Event-Configuration,3122,8.4.2,Grouped,"M,V",,,
+Monitoring-Event-Report,3123,8.4.3,Grouped,"M,V",,,
+SCEF-Reference-ID,3124,8.4.4,Unsigned32,"M,V",,,
+SCEF-ID,3125,8.4.5,DiameterIdentity,"M,V",,,
+SCEF-Reference-ID-for-Deletion,3126,8.4.6,Unsigned32,"M,V",,,
+Monitoring-Type,3127,8.4.7,Unsigned32,"M,V",,,
+Maximum-Number-of-Reports,3128,8.4.8,Unsigned32,"M,V",,,
+UE-Reachability-Configuration,3129,8.4.9,Grouped,"M,V",,,
+Monitoring-Duration,3130,8.4.10,Time,"M,V",,,
+Maximum-Detection-Time,3131,8.4.11,Unsigned32,"M,V",,,
+Reachability-Type,3132,8.4.12,Unsigned32,"M,V",,,
+Maximum-Latency,3133,8.4.13,Unsigned32,"M,V",,,
+Maximum-Response-Time,3134,8.4.14,Unsigned32,"M,V",,,
+Location-Information-Configuration,3135,8.4.15,Grouped,"M,V",,,
+MONTE-Location-Type,3136,8.4.16,Unsigned32,"M,V",,,
+Accuracy,3137,8.4.17,Unsigned32,"M,V",,,
+Association-Type,3138,8.4.18,Unsigned32,"M,V",,,
+Roaming-Information,3139,8.4.19,Unsigned32,"M,V",,,
+Reachability-Information,3140,8.4.20,Unsigned32,"M,V",,,
+IMEI-Change,3141,8.4.22,Unsigned32,"M,V",,,
+Monitoring-Event-Config-Status,3142,8.4.24,Grouped,"M,V",,,
+Supported-Services,3143,8.4.40,Grouped,"M,V",,,
+Supported-Monitoring-Events,3144,8.4.41,Unsigned64,"M,V",,,
+CIR-Flags,3145,8.4.39,Unsigned32,"M,V",,,
+Service-Result,3146,8.4.37,Grouped,"M,V",,,
+Service-Result-Code,3147,8.4.38,Unsigned32,"M,V",,,
+Reference-ID-Validity-Time,3148,8.4.42,Time,"M,V",,,
+Event-Handling,3149,8.4.43,Unsigned32,"M,V",,,
+NIDD-Authorization-Request,3150,8.4.44,Grouped,"M,V",,,
+NIDD-Authorization-Response,3151,8.4.45,Grouped,"M,V",,,
+Service-Report,3152,8.4.47,Grouped,"M,V",,,
+Node-Type,3153,8.4.48,Unsigned32,"M,V",,,
+S6t-HSS-Cause,3154,8.4.50,Unsigned32,"M,V",,,
+Enhanced-Coverage-Restriction,3155,8.4.51,Grouped,V,,,M
+Enhanced-Coverage-Restriction-Data,3156,8.4.52,Grouped,V,,,M
+Restricted-PLMN-List,3157,8.4.53,Grouped,V,,,M
+Allowed-PLMN-List,3158,8.4.54,Grouped,V,,,M
+Requested-Validity-Time,3159,8.4.55,Time,V,,,M
+Granted-Validity-Time,3160,8.4.56,Time,V,,,M
+NIDD-Authorization-Update,3161,8.4.57,Grouped,V,,,M
+Loss-Of-Connectivity-Reason,3162,8.4.58,Unsigned32,V,,,M
+Group-Reporting-Guard-Timer,3163,8.4.59,Unsigned32,V,,,M
+CIA-Flags,3164,8.4.60,Unsigned32,V,,,M
+Group-Monitoring-Event-Report,3165,8.4.61,Grouped,V,,,M
+Group-Monitoring-Event-Report-Item,3166,8.4.62,Grouped,V,,,M
+RIR-Flags,3167,8.4.63,Unsigned32,V,,,M
+Type-Of-External-Identifier,3168,8.4.64,Unsigned32,V,,,M
+APN-Validity-Time,3169,8.4.65,Grouped,V,,,M
+Suggested-Network-Configuration,3170,8.4.66,Grouped,V,,,M
+Monitoring-Event-Report-Status,3171,8.4.67,Grouped,V,,,M
+PLMN-ID-Requested,3172,8.4.68,Enumerated,V,,,M
+AdditionalIdentifiers,3173,8.4.69,Grouped,V,,,M
+NIR-Flags,3174,8.4.70,Unsigned32,V,,,M
+Reporting-Time-Stamp,3175,8.4.71,Time,V,,,M
+NIA-Flags,3176,8.4.72,Unsigned32,V,,,M
+Group-User-Identifier,3177,8.4.73,Grouped,V,,,M
+MTC-Provider-Info,3178,8.4.74,Grouped,V,,,M
+MTC-Provider-ID,3179,8.4.75,UTF8String,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.337,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.337 V15.0.0 (2018-06),,,,,,,
+# Diameter-based T4 interface for communications with packet,,,,,,,
+# data networks and applications,,,,,,,
+# ,,,,,,,
+# From 3GPP 29337-f00.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.337 Table 6.3.1/1: T4 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+SM-Delivery-Outcome-T4,3200,6.3.1,Enumerated,"M, V",,,
+Absent-Subscriber-Diagnostic-T4,3201,6.3.2,Enumerated,"M, V",,,
+Trigger-Action,3202,6.3.6,Unsigned32,V,,,M
+MTC-Error-Diagnostic,3203,6.3.7,Unsigned32,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.338,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.338 V15.1.0 (2018-12),,,,,,,
+# Diameter based protocols to support,,,,,,,
+# Short Message Service (SMS) capable,,,,,,,
+# Mobile Management Entities (MMEs),,,,,,,
+# ,,,,,,,
+# From 3GPP 29338-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.338 Table 5.3.3.1/1: S6c specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+SM-RP-MTI,3308,5.3.3.2,Enumerated,"M, V",,,
+SM-RP-SMEA,3309,5.3.3.3,OctetString,"M, V",,,
+SRR-Flags,3310,5.3.3.4,Unsigned32,"M, V",,,
+SM-Delivery-Not-Intended,3311,5.3.3.5,Enumerated,"M, V",,,
+MWD-Status,3312,5.3.3.8,Unsigned32,"M, V",,,
+MME-Absent-User-Diagnostic-SM,3313,5.3.3.9,Unsigned32,"M, V",,,
+MSC-Absent-User-Diagnostic-SM,3314,5.3.3.10,Unsigned32,"M, V",,,
+SGSN-Absent-User-Diagnostic-SM,3315,5.3.3.11,Unsigned32,"M, V",,,
+SM-Delivery-Outcome,3316,5.3.3.14,Grouped,"M, V",,,
+MME-SM-Delivery-Outcome,3317,5.3.3.15,Grouped,"M, V",,,
+MSC-SM-Delivery-Outcome,3318,5.3.3.16,Grouped,"M, V",,,
+SGSN-SM-Delivery-Outcome,3319,5.3.3.17,Grouped,"M, V",,,
+IP-SM-GW-SM-Delivery-Outcome,3320,5.3.3.18,Grouped,"M, V",,,
+SM-Delivery-Cause,3321,5.3.3.19,Enumerated,"M, V",,,
+Absent-User-Diagnostic-SM,3322,5.3.3.20,Unsigned32,"M, V",,,
+RDR-Flags,3323,5.3.3.21,Unsigned32,V,,,M
+Maximum-UE-Availability-Time,3329,5.3.3.22,Time,V,,,M
+SMS-GMSC-Alert-Event,3333,5.3.3.23,Unsigned32,V,,,M
+#=,,,,,,,
+# 3GPP TS 29.338 Table 6.3.3.1/1: SGd/Gdd specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+SC-Address,3300,6.3.3.2,OctetString,"M, V",,,
+SM-RP-UI,3301,6.3.3.3,OctetString,"M, V",,,
+TFR-Flags,3302,6.3.3.4,Unsigned32,"M, V",,,
+SM-Delivery-Failure-Cause,3303,6.3.3.5,Grouped,"M, V",,,
+SM-Enumerated-Delivery-Failure-Cause,3304,6.3.3.6,Enumerated,"M, V",,,
+SM-Diagnostic-Info,3305,6.3.3.7,OctetString,"M, V",,,
+SM-Delivery-Timer,3306,6.3.3.10,Unsigned32,"M, V",,,
+SM-Delivery-Start-Time,3307,6.3.3.11,Time,"M, V",,,
+SMSMI-Correlation-ID,3324,6.3.3.13,Grouped,V,,,M
+# Note: 3GPP TS 29.338 Table 6.3.3.1/1 row HSS-ID (3325),,,,,,,
+# incorrectly lists type as OctetString instead of UTF8String.,,,,,,,
+# 3GPP TS 29.338 clause 6.3.3.14 uses UTF8String.,,,,,,,
+# ,,,,,,,
+# Fix: HSS-ID (3325) type changed from OctetString to UTF8String.,,,,,,,
+HSS-ID,3325,6.3.3.14,UTF8String,V,,,M
+Originating-SIP-URI,3326,6.3.3.15,UTF8String,V,,,M
+Destination-SIP-URI,3327,6.3.3.16,UTF8String,V,,,M
+OFR-Flags,3328,6.3.3.12,Unsigned32,V,,,M
+Maximum-Retransmission-Time,3330,6.3.3.17,Time,V,,,M
+Requested-Retransmission-Time,3331,6.3.3.18,Time,V,,,M
+SMS-GMSC-Address,3332,6.3.3.19,OctetString,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.343,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.343 V15.1.0 (2019-09),,,,,,,
+# Proximity-services (ProSe) function to,,,,,,,
+# ProSe application server aspects (PC2);,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29343-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.343 Table 6.4.1-1: PC2 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Origin-App-Layer-User-Id,3600,6.4.2,UTF8String,"M,V",P,,
+Target-App-Layer-User-Id,3601,6.4.3,UTF8String,"M,V",P,,
+ProSe-Function-ID,3602,6.4.4,OctetString,"M,V",P,,
+ProSe-Request-Type,3603,6.4.5,Unsigned32,"M,V",P,,
+PDUID,3604,6.4.6,OctetString,V,P,,M
+Application-Data,3605,6.4.7,UTF8String,V,P,,M
+Allowed-Suffixes-Number,3606,6.4.8,Unsigned32,V,P,,M
+Monitor-Target,3607,6.4.9,Grouped,V,P,,M
+ProSe-Code-Suffix-Mask,3608,6.4.10,Grouped,V,P,,M
+Suffix-Code,3609,6.4.11,OctetString,V,P,,M
+Suffix-Mask,3610,6.4.12,OctetString,V,P,,M
+Banned-User-Target,3611,6.4.17,Grouped,V,P,,M
+Metadata-Indicator,3612,6.4.18,Unsigned32,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.344,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.344 V15.1.0 (2019-09),,,,,,,
+# Proximity-services (ProSe) Function to Home Subscriber,,,,,,,
+# Server (HSS) aspects;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29344-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.344 Table 6.3.1-1: PC4a specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+ProSe-Subscription-Data,3701,6.3.2,Grouped,"M,V",,,
+ProSe-Permission,3702,6.3.3,Unsigned32,"M,V",,,
+ProSe-Allowed-PLMN,3703,6.3.4,Grouped,"M,V",,,
+ProSe-Direct-Allowed,3704,6.3.5,Unsigned32,"M,V",,,
+UPR-Flags,3705,6.3.6,Unsigned32,"M,V",,,
+PNR-Flags,3706,6.3.7,Unsigned32,"M,V",,,
+ProSe-Initial-Location-Information,3707,6.3.9,Grouped,"M,V",,,
+# Note: 3GPP TS 29.344 Table 6.3.1-1 missing Authorized-Discovery-Range.,,,,,,,
+# Present in 3GPP TS 29.344 clause 6.3.13 and 3GPP TS 29.230 Table 7.1.,,,,,,,
+# ,,,,,,,
+# Fix: Add Authorized-Discovery-Range (3708) Unsigned32.,,,,,,,
+Authorized-Discovery-Range,3708,6.3.13,Unsigned32,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.345,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.345 V15.1.0 (2019-09),,,,,,,
+# Inter-Proximity-services (ProSe) Function signalling aspects;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29345-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.345 Table 6.3.1-1: PC6/PC7 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+App-Layer-User-Id,3801,6.3.2,UTF8String,"M, V",,,
+# Note: 3GPP TS 29.345 Table 6.3.1-1 row Assistance-info (3802) has,,,,,,,
+"# incorrect name and should be ""Assistance-Info"" per clause 6.3.3.",,,,,,,
+# ,,,,,,,
+# Fix: Assistance-info (3802) renamed to Assistance-Info (3802).,,,,,,,
+Assistance-Info,3802,6.3.3,Grouped,"M, V",,,
+Assistance-Info-Validity-Timer,3803,6.3.4,Unsigned32,"M, V",,,
+Discovery-Type,3804,6.3.5,Unsigned32,"M, V",,,
+Filter-Id,3805,6.3.9,OctetString,"M, V",,,
+MAC-Address,3806,6.3.11,UTF8String,"M, V",,,
+Match-Report,3807,6.3.12,Grouped,"M, V",,,
+Operating-Channel,3808,6.3.14,Unsigned32,"M, V",,,
+P2P-Features,3809,6.3.15,Unsigned32,"M, V",,,
+ProSe-App-Code,3810,6.3.16,OctetString,"M, V",,,
+ProSe-App-Id,3811,6.3.17,UTF8String,"M, V",,,
+ProSe-App-Mask,3812,6.3.18,OctetString,"M, V",,,
+ProSe-Discovery-Filter,3813,6.3.20,Grouped,"M, V",,,
+PRR-Flags,3814,6.3.21,Unsigned32,"M, V",,,
+ProSe-Validity-Timer,3815,6.3.22,Unsigned32,"M, V",,,
+Requesting-EPUID,3816,6.3.23,UTF8String,"M, V",,,
+Targeted-EPUID,3817,6.3.26,UTF8String,"M, V",,,
+# Note: Name conflict with 3GPP TS 29.154 Time-Window (4204).,,,,,,,
+# Time-Window (3818) in 3GPP TS 29.345 V12.1.0 (2014-12) predates,,,,,,,
+# Time-Window (4204) in 3GPP TS 29.154 V13.1.0 (2016-03).,,,,,,,
+Time-Window,3818,6.3.27,Unsigned32,"M, V",,,
+WiFi-P2P-Assistance-Info,3819,6.3.30,Grouped,"M, V",,,
+WLAN-Assistance-Info,3820,6.3.31,Grouped,"M, V",,,
+WLAN-Link-Layer-Id,3821,6.3.32,OctetString,"M, V",,,
+WLAN-Link-Layer-Id-List,3822,6.3.33,Grouped,"M, V",,,
+Location-Update-Trigger,3823,6.3.42,Grouped,"M,V",,,
+Location-Update-Event-Type,3824,6.3.43,Unsigned32,"M,V",,,
+Change-Of-Area-Type,3825,6.3.44,Grouped,"M,V",,,
+Location-Update-Event-Trigger,3826,6.3.45,Unsigned32,"M,V",,,
+Report-Cardinality,3827,6.3.46,Enumerated,"M,V",,,
+Minimum-Interval-Time,3828,6.3.47,Unsigned32,"M,V",,,
+Periodic-Location-Type,3829,6.3.48,Grouped,"M,V",,,
+Location-Report-Interval-Time,3830,6.3.49,Unsigned32,"M,V",,,
+Total-Number-Of-Reports,3831,6.3.50,Unsigned32,"M,V",,,
+Validity-Time-Announce,3832,6.3.36,Unsigned32,"M, V",,,
+Validity-Time-Monitor,3833,6.3.37,Unsigned32,"M, V",,,
+Validity-Time-Communication,3834,6.3.38,Unsigned32,"M, V",,,
+ProSe-App-Code-Info,3835,6.3.39,Grouped,"M, V",,,
+MIC,3836,6.3.40,OctetString,"M, V",,,
+UTC-based-Counter,3837,6.3.41,Unsigned32,"M, V",,,
+ProSe-Match-Refresh-Timer,3838,6.3.52,Unsigned32,"M, V",,,
+ProSe-Metadata-Index-Mask,3839,6.3.60,OctetString,V,,,M
+App-Identifier,3840,6.3.61,Grouped,V,,,M
+OS-ID,3841,6.3.62,OctetString,V,,,M
+OS-App-ID,3842,6.3.63,UTF8String,V,,,M
+Requesting-RPAUID,3843,6.3.64,UTF8String,V,,,M
+Target-RPAUID,3844,6.3.65,UTF8String,V,,,M
+Target-PDUID,3845,6.3.66,OctetString,V,,,M
+ProSe-Restricted-Code,3846,6.3.67,OctetString,V,,,M
+ProSe-Restricted-Code-Suffix-Range,3847,6.3.68,OctetString,V,,,M
+Beginning-Suffix,3848,6.3.69,OctetString,V,,,M
+Ending-Suffix,3849,6.3.70,OctetString,V,,,M
+Discovery-Entry-ID,3850,6.3.59,Unsigned32,V,,,M
+Match-Timestamp,3851,6.3.71,Time,V,,,M
+PMR-Flags,3852,6.3.57,Unsigned32,"M,V",,,
+ProSe-Application-Metadata,3853,6.3.58,UTF8String,"M,V",,,
+Discovery-Auth-Request,3854,6.3.53,Grouped,"M, V",,,
+Discovery-Auth-Response,3855,6.3.54,Grouped,"M, V",,,
+Match-Request,3856,6.3.55,Grouped,"M, V",,,
+Match-Report-Info,3857,6.3.56,Grouped,"M, V",,,
+Banned-RPAUID,3858,6.3.73,UTF8String,V,,,M
+Banned-PDUID,3859,6.3.74,OctetString,V,,,M
+Code-Receiving-Security-Material,3860,6.3.75,Grouped,V,,,M
+Code-Sending-Security-Material,3861,6.3.76,Grouped,V,,,M
+DUSK,3862,6.3.77,OctetString,V,,,M
+DUIK,3863,6.3.78,OctetString,V,,,M
+DUCK,3864,6.3.79,OctetString,V,,,M
+# Note: 3GPP TS 29.345 Table 6.3.1-1 row MIC-Check-indicator (3865) has,,,,,,,
+"# incorrect name and should be ""MIC-Check-Indicator"" per clause 6.3.80.",,,,,,,
+# ,,,,,,,
+# Fix: MIC-Check-indicator (3865) renamed to MIC-Check-Indicator (3865).,,,,,,,
+MIC-Check-Indicator,3865,6.3.80,Unsigned32,V,,,M
+Encrypted-Bitmask,3866,6.3.81,OctetString,V,,,M
+ProSe-App-Code-Suffix-Range,3867,6.3.82,OctetString,V,,,M
+PC5-tech,3868,6.3.84,OctetString,V,,,M
+,,,,,,,
+@standard,3GPP TS 29.368,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.368 V15.1.0 (2019-09),,,,,,,
+# Tsp interface protocol between the MTC Interworking Function,,,,,,,
+# (MTC-IWF) and Service Capability Server (SCS),,,,,,,
+# ,,,,,,,
+# From 3GPP 29368-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.368 Table 6.4.1.1: Tsp specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Device-Action,3001,6. 4.2,Grouped,"M,V",P,,
+Device-Notification,3002,6.4.3,Grouped,"M,V",P,,
+Trigger-Data,3003,6.4.4,Grouped,"M,V",P,,
+Payload,3004,6.4.5,OctetString,"M,V",P,,
+Action-Type,3005,6.4.6,Enumerated,"M,V",P,,
+Priority-Indication,3006,6.4.7,Enumerated,"M,V",P,,
+Reference-Number,3007,6.4.8,Unsigned32,"M,V",P,,
+Request-Status,3008,6.4.9,Enumerated,"M,V",P,,
+Delivery-Outcome,3009,6.4.10,Enumerated,"M,V",P,,
+Application-Port-Identifier,3010,6.4.11,Unsigned32,"M,V",P,,
+Old-Reference-Number,3011,6.4.12,Unsigned32,V,P,,M
+Feature-Supported-In-Final-Target,3012,6.4.13,Unsigned32,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.388,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.388 V15.1.0 (2019-09),,,,,,,
+# V2X Control Function to Home Subscriber Server (HSS),,,,,,,
+# aspects (V4);,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29388-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.388 Table 6.3.1-1: V4 specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+V2X-PC5-Allowed-PLMN,4600,6.3.3,Grouped,"M,V",,,
+V2X-Update-Flags,4601,6.3.4,Unsigned32,"M,V",,,
+V2X-Notify-Flags,4602,6.3.5,Unsigned32,"M,V",,,
+,,,,,,,
+@standard,3GPP TS 29.389,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.389 V15.1.0 (2019-09),,,,,,,
+# Inter-V2X Control Function Signalling aspects (V6);,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29389-f10.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.389 Table 6.3.1-1: V6 specific Diameter AVPs,,,,,,,
+# ,,,,,,,
+# Fix: All AVPs were missing M and V; assume MUST for both.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+V2X-Authorization-Data,4700,6.3.2,Grouped,"M,V",,,
+V2X-Permission-in-VPLMN,4701,6.3.3,Unsigned32,"M,V",,,
+V2X-Application-Server,4702,6.3.4,Grouped,"M,V",,,
+,,,,,,,
+@standard,3GPP TS 29.468,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.468 V15.8.0 (2019-12),,,,,,,
+# Group Communication System Enablers for LTE (GCSE_LTE);,,,,,,,
+# MB2 Reference Point;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29468-f80.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.468 Table 6.4.1 1: MB2 C specific Diameter AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+BMSC-Address,3500,6.4.2,Address,"M,V",P,,
+BMSC-Port,3501,6.4.3,Unsigned32,"M,V",P,,
+Common-Tunnel-Endpoint-Identifier,3524,6.4.26,OctetString,V,P,,M
+FEC-Request,3525,6.4.27,OctetString,V,P,,M
+FEC-Result,3531,6.4.33,Unsigned32,V,P,,M
+Local-M1-Information,3518,6.4.20,Grouped,V,P,,M
+Local-MB2-U-Information,3519,6.4.21,Grouped,V,P,,M
+MB2U-Security,3517,6.4.19,Unsigned32,"M,V",P,,
+MBMS-Bearer-Event,3502,6.4.4,Unsigned32,"M,V",P,,
+MBMS-Bearer-Event-Notification,3503,6.4.5,Grouped,"M,V",P,,
+MBMS-Bearer-Request,3504,6.4.6,Grouped,"M,V",P,,
+MBMS-Bearer-Response,3505,6.4.7,Grouped,"M,V",P,,
+MBMS-Bearer-Result,3506,6.4.8,Unsigned32,"M,V",P,,
+MBMS-eNB-IP-Multicast-Address,3520,6.4.22,Address,V,P,,M
+MBMS-eNB-IPv6-Multicast-Address,3521,6.4.23,Address,V,P,,M
+# Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IP-Address (924).,,,,,,,
+# 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IP-Address (924).,,,,,,,
+# 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IP-Address (3522).,,,,,,,
+# ,,,,,,,
+# Fix: MBMS-GW-SSM-IP-Address (3522) renamed to MBMS-GW-SSM-IP-Address-29.468 (3522).,,,,,,,
+MBMS-GW-SSM-IP-Address-29.468,3522,6.4.24,Address,V,P,,M
+# Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IPv6-Address (925).,,,,,,,
+# 3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IPv6-Address (925).,,,,,,,
+# 3GPP TS 29.061 V12.6.0 (2014-06) renamed,,,,,,,
+# MBMS-GW-SSM-IPv6-Address (925) to MBMS-GW-SSM-Ipv6-Address.,,,,,,,
+# 3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IPv6-Address (3523).,,,,,,,
+# ,,,,,,,
+# Fix: MBMS-GW-SSM-IPv6-Address (3523) renamed to MBMS-GW-SSM-IPv6-Address-29.468 (3523).,,,,,,,
+MBMS-GW-SSM-IPv6-Address-29.468,3523,6.4.25,Address,V,P,,M
+MBMS-Start-Time,3507,6.4.9,Time,"M,V",P,,
+# Note: Name conflict with 3GPP TS 32.299 Radio-Frequency (3462).,,,,,,,
+# 3GPP TS 29.468 V12.0.0 (2014-09) added Radio-Frequency (3508).,,,,,,,
+# 3GPP TS 32.299 V13.1.0 (2015-06) CR 0638 added Radio-Frequency (3462).,,,,,,,
+# ,,,,,,,
+# Fix: Radio-Frequency (3508) renamed to Radio-Frequency-29.468 (3508).,,,,,,,
+Radio-Frequency-29.468,3508,6.4.10,Unsigned32,"M,V",P,,
+ROHC-Full-Header-Periodicity,3527,6.4.29,Float32,V,P,,M
+ROHC-Max-CID,3532,6.4.34,Unsigned32,V,P,,M
+ROHC-Profile,3528,6.4.30,Unsigned32,V,P,,M
+ROHC-Request,3526,6.4.28,Grouped,V,P,,M
+ROHC-Result,3530,6.4.32,Unsigned32,V,P,,M
+TMGI-Allocation-Request,3509,6.4.11,Grouped,"M,V",P,,
+TMGI-Allocation-Response,3510,6.4.12,Grouped,"M,V",P,,
+TMGI-Allocation-Result,3511,6.4.13,Unsigned32,"M,V",P,,
+TMGI-Deallocation-Request,3512,6.4.14,Grouped,"M,V",P,,
+TMGI-Deallocation-Response,3513,6.4.15,Grouped,"M,V",P,,
+TMGI-Deallocation-Result,3514,6.4.16,Unsigned32,"M,V",P,,
+TMGI-Expiry,3515,6.4.17,Grouped,"M,V",P,,
+TMGI-Number,3516,6.4.18,Unsigned32,"M,V",P,,
+Userplane-Protocol-Result,3529,6.4.31,Grouped,V,P,,M
+,,,,,,,
+@standard,3GPP TS 29.561,,,,,,
+#=,,,,,,,
+# 3GPP TS 29.561 V16.3.0 (2020-03),,,,,,,
+# 5G System; Interworking between 5G Network and external,,,,,,,
+# Data Networks;,,,,,,,
+# Stage 3,,,,,,,
+# ,,,,,,,
+# From 3GPP 29561-g30.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# Table 12.4-1: N6 re-used Diameter AVPs,,,,,,,
+#,,,,,,,
+# Note: Only AVPs defined in 3GPP TS 29.561.,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+3GPP-Notification,110,11.3.1,OctetString,V,P,,M
+3GPP-UE-MAC-Address,111,11.3.1,OctetString,V,P,,M
+3GPP-Authorization-Reference,112,11.3.1,OctetString,V,P,,M
+3GPP-Policy-Reference,113,11.3.1,OctetString,V,P,,M
+3GPP-Session-AMBR,114,11.3.1,OctetString,V,P,,M
+3GPP-NAI,115,11.3.1,OctetString,V,P,,M
+3GPP-Session-AMBR-v2,116,11.3.1,OctetString,V,P,,M
+3GPP-IP-Address-Pool-Id,118,11.3.1,OctetString,V,P,,M
+#=,,,,,,,
+# Table 17.4-1: Additional information needed for network slice specific authentication,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+3GPP-S-NSSAI,200,16.3.1,UTF8String,V,P,,M
+,,,,,,,
+@standard,3GPP TS 32.299,,,,,,
+#=,,,,,,,
+# 3GPP TS 32.299 V15.7.0 (2019-06),,,,,,,
+# Charging management;,,,,,,,
+# Diameter charging applications,,,,,,,
+# ,,,,,,,
+# From 3GPP 32299-f70.doc,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+#=,,,,,,,
+# 3GPP TS 32.299 Table 7.2.0.1: 3GPP specific AVPs,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+3GPP-OC-Specific-Reduction,1320,,Grouped,V,,,M
+3GPP-OC-Rating-Group,1321,,Unsigned32,V,,,M
+3GPP-OC-Request-Type,1322,,Enumerated,V,,,M
+# Note: Name conflict with 3GPP TS 29.212 3GPP-PS-Data-Off-Status (2847).,,,,,,,
+# 3GPP TS 29.212 V14.3.0 (2017-03) CR 1559 added 3GPP-PS-Data-Off-Status (2847).,,,,,,,
+# 3GPP TS 32.299 V14.3.0 (2017-03) CR 0760 added 3GPP-PS-Data-Off-Status (4406).,,,,,,,
+# ,,,,,,,
+# Fix: 3GPP-PS-Data-Off-Status (4406) renamed to 3GPP-PS-Data-Off-Status-32.299 (4406).,,,,,,,
+3GPP-PS-Data-Off-Status-32.299,4406,,Enumerated,"V,M",,,
+Access-Network-Info-Change,4401,,Grouped,"V,M",,,
+Access-Network-Information,1263,,OctetString,"V,M",,,
+Access-Transfer-Information,2709,,Grouped,"V,M",,,
+Access-Transfer-Type,2710,,Enumerated,"V,M",,,
+Account-Expiration,2309,,Time,"V,M",,,
+Accumulated-Cost,2052,,Grouped,"V,M",,,
+Adaptations,1217,,Enumerated,"V,M",,,
+Additional-Content-Information,1207,,Grouped,"V,M",,,
+Additional-Exception-Reports,3936,,Enumerated,"V,M",,,
+Additional-Type-Information,1205,,UTF8String,"V,M",,,
+Address-Data,897,,UTF8String,"V,M",,,
+Address-Domain,898,,Grouped,"V,M",,,
+Addressee-Type,1208,,Enumerated,"V,M",,,
+Address-Type,899,,Enumerated,"V,M",,,
+AF-Correlation-Information,1276,,Grouped,"V,M",,,
+Alternate-Charged-Party-Address,1280,,UTF8String,"V,M",,,
+Announcement-Identifier,3905,,Unsigned32,"V,M",,,
+Announcement-Information,3904,,Grouped,"V,M",,,
+Announcement-Order,3906,,Unsigned32,"V,M",,,
+Announcing-PLMN-ID,4408,,UTF8String,"V,M",,,
+Announcing-UE-HPLMN-Identifier,3426,,UTF8String,"V,M",,,
+Announcing-UE-VPLMN-Identifier,3427,,UTF8String,"V,M",,,
+AoC-Cost-Information,2053,,Grouped,"V,M",,,
+AoC-Format,2310,,Enumerated,"V,M",,,
+AoC-Information,2054,,Grouped,"V,M",,,
+AoC-Request-Type,2055,,Enumerated,"V,M",,,
+AoC-Service,2311,,Grouped,"V,M",,,
+AoC-Service-Obligatory-Type,2312,,Enumerated,"V,M",,,
+AoC-Service-Type,2313,,Enumerated,"V,M",,,
+AoC-Subscription-Information,2314,,Grouped,"V,M",,,
+API-Content,1309,,UTF8String,V,,,M
+API-Direction,1310,,Enumerated,V,,,M
+API-Identifier,1311,,OctetString,V,,,M
+API-Invocation-Timestamp,1312,,Time,V,,,M
+API-Network-Service-Node,1315,,Enumerated,V,,,M
+API-Result-Code,1313,,Unsigned32,V,,,M
+API-Size,1314,,Unsigned64,V,,,M
+APN-Rate-Control,3933,,Grouped,"V,M",,,
+APN-Rate-Control-Downlink,3934,,Grouped,"V,M",,,
+APN-Rate-Control-Uplink,3935,,Grouped,"V,M",,,
+Applic-ID,1218,,UTF8String,"V,M",,,
+Application-Provided-Called-Party-Address,837,,UTF8String,"V,M",,,
+Application-Server,836,,UTF8String,"V,M",,,
+Application-Server-Information,850,,Grouped,"V,M",,,
+Application-Specific-Data,3458,,OctetString,"V,M",,,
+Associated-Party-Address,2035,,UTF8String,"V,M",,,
+Associated-URI,856,,UTF8String,"V,M",,,
+Authorised-QoS,849,,UTF8String,"V,M",,,
+Aux-Applic-Info,1219,,UTF8String,"V,M",,,
+Base-Time-Interval,1265,,Unsigned32,"V,M",,,
+Basic-Service-Code,3411,,Grouped,"V,M",,,
+Bearer-Capability,3412,,OctetString,"V,M",,,
+Bearer-Service,854,,OctetString,"V,M",,,
+BSSID,2716,,UTF8String,"V,M",,,
+Called-Asserted-Identity,1250,,UTF8String,"V,M",,,
+Called-Identity,3916,,UTF8String,"V,M",,,
+Called-Identity-Change,3917,,Grouped,"V,M",,,
+Called-Party-Address,832,,UTF8String,"V,M",,,
+Calling-Party-Address,831,,UTF8String,"V,M",,,
+Carrier-Select-Routing-Information,2023,,UTF8String,"V,M",,,
+Cause-Code,861,,Integer32,"V,M",,,
+Cellular-Network-Information,3924,,OctetString,"V,M",,,
+CG-Address,846,,Address,"V,M",,,
+Change-Condition,2037,,Integer32,"V,M",,,
+Change-Time,2038,,Time,"V,M",,,
+Charge-Reason-Code,2118,,Enumerated,"V,M",,,
+Charged-Party,857,,UTF8String,"V,M",,,
+Charging-Characteristics-Selection-Mode,2066,,Enumerated,"V,M",,,
+Charging-Per-IP-CAN-Session-Indicator,4400,,Enumerated,"V,M",,,
+Civic-Address-Information,1305,,UTF8String,V,,,M
+Class-Identifier,1214,,Enumerated,"V,M",,,
+Client-Address,2018,,Address,"V,M",,,
+CN-Operator-Selection-Entity,3421,,Enumerated,"V,M",,,
+Content-Class,1220,,Enumerated,"V,M",,,
+Content-Disposition,828,,UTF8String,"V,M",,,
+Content-Length,827,,Unsigned32,"V,M",,,
+Content-Size,1206,,Unsigned32,"V,M",,,
+Content-Type,826,,UTF8String,"V,M",,,
+Coverage-Info,3459,,Grouped,"V,M",,,
+Coverage-Status,3428,,Enumerated,"V,M",,,
+CP-CIoT-EPS-Optimisation-Indicator,3930,,Enumerated,"V,M",,,
+CPDT-Information,3927,,Grouped,"V,M",,,
+CSG-Access-Mode,2317,,Enumerated,"V,M",,,
+CSG-Membership-Indication,2318,,Enumerated,"V,M",,,
+CUG-Information,2304,,OctetString,"V,M",,,
+Current-Tariff,2056,,Grouped,"V,M",,,
+Data-Coding-Scheme,2001,,Integer32,"V,M",,,
+Deferred-Location-Event-Type,1230,,UTF8String,"V,M",,,
+Delivery-Report-Requested,1216,,Enumerated,"V,M",,,
+Destination-Interface,2002,,Grouped,"V,M",,,
+Diagnostics,2039,,Integer32,"V,M",,,
+Discoveree-UE-HPLMN-Identifier,4402,,UTF8String,"V,M",,,
+Discoveree-UE-VPLMN-Identifier,4403,,UTF8String,"V,M",,,
+Discoverer-UE-HPLMN-Identifier,4404,,UTF8String,"V,M",,,
+Discoverer-UE-VPLMN-Identifier,4405,,UTF8String,"V,M",,,
+Domain-Name,1200,,UTF8String,"V,M",,,
+DRM-Content,1221,,Enumerated,"V,M",,,
+Dynamic-Address-Flag,2051,,Enumerated,"V,M",,,
+Dynamic-Address-Flag-Extension,2068,,Enumerated,"V,M",,,
+Early-Media-Description,1272,,Grouped,"V,M",,,
+Enhanced-Diagnostics,3901,,Grouped,"V,M",,,
+Envelope,1266,,Grouped,"V,M",,,
+Envelope-End-Time,1267,,Time,"V,M",,,
+Envelope-Reporting,1268,,Enumerated,"V,M",,,
+Envelope-Start-Time,1269,,Time,"V,M",,,
+EPDG-Address,3425,,Address,"V,M",,,
+Event,825,,UTF8String,"V,M",,,
+Event-Charging-TimeStamp,1258,,Time,"V,M",,,
+Event-Type,823,,Grouped,"V,M",,,
+Expires,888,,Unsigned32,"V,M",,,
+Exposure-Function-API-Information,1316,,Grouped,V,,,M
+FE-Identifier-List,4413,,UTF8String,"V,M",,,
+File-Repair-Supported,1224,,Enumerated,"V,M",,,
+Forwarding-Pending,3415,,Enumerated,"V,M",,,
+From-Address,2708,,UTF8String,"V,M",,,
+GGSN-Address,847,,Address,"V,M",,,
+IMS-Application-Reference-Identifier,2601,,UTF8String,"V,M",,,
+IMS-Charging-Identifier,841,,UTF8String,"V,M",,,
+IMS-Communication-Service-Identifier,1281,,UTF8String,"V,M",,,
+IMS-Emergency-Indicator,2322,,Enumerated,"V,M",,,
+IMS-Information,876,,Grouped,"V,M",,,
+IMS-Visited-Network-Identifier,2713,,UTF8String,"V,M",,,
+IMSI-Unauthenticated-Flag,2308,,Enumerated,"V,M",,,
+Incoming-Trunk-Group-Id,852,,UTF8String,"V,M",,,
+Incremental-Cost,2062,,Grouped,"V,M",,,
+Initial-IMS-Charging-Identifier,2321,,UTF8String,"V,M",,,
+Instance-Id,3402,,UTF8String,"V,M",,,
+Interface-Id,2003,,UTF8String,"V,M",,,
+Interface-Port,2004,,UTF8String,"V,M",,,
+Interface-Text,2005,,UTF8String,"V,M",,,
+Interface-Type,2006,,Enumerated,"V,M",,,
+Inter-Operator-Identifier,838,,Grouped,"V,M",,,
+Inter-UE-Transfer,3902,,Enumerated,"V,M",,,
+IP-Realm-Default-Indication,2603,,Enumerated,"V,M",,,
+ISUP-Cause,3416,,Grouped,"V,M",,,
+ISUP-Cause-Diagnostics,3422,,OctetString,"V,M",,,
+ISUP-Cause-Location,3423,,Unsigned32,"V,M",,,
+ISUP-Cause-Value,3424,,Unsigned32,"V,M",,,
+ISUP-Location-Number,3414,,OctetString,"V,M",,,
+Language,3914,,UTF8String,"V,M",,,
+Layer-2-Group-ID,3429,,OctetString,"V,M",,,
+LCS-APN,1231,,UTF8String,"V,M",,,
+LCS-Client-Dialed-By-MS,1233,,UTF8String,"V,M",,,
+LCS-Client-External-ID,1234,,UTF8String,"V,M",,,
+LCS-Client-Id,1232,,Grouped,"V,M",,,
+LCS-Client-Name,1235,,Grouped,"V,M",,,
+LCS-Client-Type,1241,,Enumerated,"V,M",,,
+LCS-Data-Coding-Scheme,1236,,UTF8String,"V,M",,,
+LCS-Format-Indicator,1237,,Enumerated,"V,M",,,
+LCS-Information,878,,Grouped,"V,M",,,
+LCS-Name-String,1238,,UTF8String,"V,M",,,
+# Note: 3GPP TS 32.299 V11.8.0 (2013-07) renamed,,,,,,,
+# LCS-Requestor-Id (1239) to LCS-Requestor-ID (1239).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: LCS-Requestor-Id (1239) renamed to LCS-Requestor-ID (1239).,,,,,,,
+LCS-Requestor-ID,1239,,Grouped,"V,M",,,
+# Note: 3GPP TS 32.299 V11.8.0 (2013-07) renamed,,,,,,,
+# LCS-Requestor-Id-String (1240) to LCS-Requestor-ID-String (1240).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: LCS-Requestor-Id-String (1240) renamed to LCS-Requestor-ID-String (1240).,,,,,,,
+LCS-Requestor-ID-String,1240,,UTF8String,"V,M",,,
+Local-GW-Inserted-Indication,2604,,Enumerated,"V,M",,,
+Local-Sequence-Number,2063,,Unsigned32,"V,M",,,
+Location-Estimate,1242,,OctetString,"V,M",,,
+Location-Estimate-Type,1243,,Enumerated,"V,M",,,
+Location-Info,3460,,Grouped,"V,M",,,
+Location-Type,1244,,Grouped,"V,M",,,
+Low-Balance-Indication,2020,,Enumerated,"V,M",,,
+Low-Priority-Indicator,2602,,Enumerated,"V,M",,,
+MBMS-Charged-Party,2323,,Enumerated,"V,M",,,
+# Note: 3GPP TS 32.299 V11.8.0 (2013-07) Table 7.2 changed,,,,,,,
+# row MBMS-GW-Address (2307) to have a hyphen instead of space.,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: MBMSGW-Address (2307) renamed to MBMS-GW-Address (2307).,,,,,,,
+MBMS-GW-Address,2307,,Address,"V,M",,,
+MBMS-Information,880,,Grouped,"V,M",,,
+MBMS-User-Service-Type,1225,,Enumerated,"V,M",,,
+Media-Initiator-Flag,882,,Enumerated,"V,M",,,
+Media-Initiator-Party,1288,,UTF8String,"V,M",,,
+Message-Body,889,,Grouped,"V,M",,,
+Message-Class,1213,,Grouped,"V,M",,,
+Message-ID,1210,,UTF8String,"V,M",,,
+Message-Size,1212,,Unsigned32,"V,M",,,
+Message-Type,1211,,Enumerated,"V,M",,,
+MMBox-Storage-Requested,1248,,Enumerated,"V,M",,,
+MM-Content-Type,1203,,Grouped,"V,M",,,
+MMS-Information,877,,Grouped,"V,M",,,
+MMTel-Information,2030,,Grouped,"V,M",,,
+MMTel-SService-Type,2031,,Unsigned32,"V,M",,,
+Monitored-PLMN-Identifier,3430,,UTF8String,"V,M",,,
+Monitoring-Event-Configuration-Activity,3919,,Integer32,"V,M",,,
+Monitoring-Event-Functionality,3922,,Integer32,"V,M",,,
+Monitoring-Event-Information,3921,,Grouped,"V,M",,,
+Monitoring-Event-Report-Data,3920,,Grouped,"V,M",,,
+Monitoring-Event-Report-Number,3923,,Unsigned32,"V,M",,,
+Monitoring-UE-HPLMN-Identifier,3431,,UTF8String,"V,M",,,
+Monitoring-UE-Identifier,3432,,UTF8String,"V,M",,,
+Monitoring-UE-VPLMN-Identifier,3433,,UTF8String,"V,M",,,
+MSC-Address,3417,,OctetString,"V,M",,,
+MTC-IWF-Address,3406,,Address,"V,M",,,
+Neighbour-Node-Address,2705,,Address,"V,M",,,
+Network-Call-Reference-Number,3418,,OctetString,"V,M",,,
+Next-Tariff,2057,,Grouped,"V,M",,,
+NIDD-Submission,3928,,Grouped,"V,M",,,
+NNI-Information,2703,,Grouped,"V,M",,,
+NNI-Type,2704,,Enumerated,"V,M",,,
+Node-Functionality,862,,Enumerated,"V,M",,,
+Node-Id,2064,,UTF8String,"V,M",,,
+Number-Of-Diversions,2034,,Unsigned32,"V,M",,,
+Number-Of-Messages-Sent,2019,,Unsigned32,"V,M",,,
+Number-Of-Participants,885,,Unsigned32,"V,M",,,
+Number-Of-Received-Talk-Bursts,1282,,Unsigned32,"V,M",,,
+Number-Of-Talk-Bursts,1283,,Unsigned32,"V,M",,,
+Number-Portability-Routing-Information,2024,,UTF8String,"V,M",,,
+Offline-Charging,1278,,Grouped,"V,M",,,
+Online-Charging-Flag,2303,,Enumerated,"V,M",,,
+Originating-IOI,839,,UTF8String,"V,M",,,
+Originator,864,,Enumerated,"V,M",,,
+Originator-Address,886,,Grouped,"V,M",,,
+Originator-Interface,2009,,Grouped,"V,M",,,
+Originator-Received-Address,2027,,Grouped,"V,M",,,
+Originator-SCCP-Address,2008,,Address,"V,M",,,
+Outgoing-Session-Id,2320,,UTF8String,"V,M",,,
+Outgoing-Trunk-Group-Id,853,,UTF8String,"V,M",,,
+Participant-Access-Priority,1259,,Enumerated,"V,M",,,
+Participant-Action-Type,2049,,Enumerated,"V,M",,,
+Participant-Group,1260,,Grouped,"V,M",,,
+Participants-Involved,887,,UTF8String,"V,M",,,
+PC3-Control-Protocol-Cause,3434,,Integer32,"V,M",,,
+PC3-EPC-Control-Protocol-Cause,3435,,Integer32,"V,M",,,
+PC5-Radio-Technology,1300,,Enumerated,V,,,M
+PDN-Connection-Charging-ID,2050,,Unsigned32,"V,M",,,
+PDP-Address,1227,,Address,"V,M",,,
+PDP-Address-Prefix-Length,2606,,Unsigned32,"V,M",,,
+PDP-Context-Type,1247,,Enumerated,"V,M",,,
+# Change-1.4.0: PDG-Address (895) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: PDG-Charging-Id (896) Unsigned32 removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+Play-Alternative,3913,,Enumerated,"V,M",,,
+PoC-Change-Condition,1261,,Enumerated,"V,M",,,
+PoC-Change-Time,1262,,Time,"V,M",,,
+PoC-Controlling-Address,858,,UTF8String,"V,M",,,
+PoC-Event-Type,2025,,Enumerated,"V,M",,,
+PoC-Group-Name,859,,UTF8String,"V,M",,,
+PoC-Information,879,,Grouped,"V,M",,,
+PoC-Server-Role,883,,Enumerated,"V,M",,,
+PoC-Session-Id,1229,,UTF8String,"V,M",,,
+PoC-Session-Initiation-type,1277,,Enumerated,"V,M",,,
+PoC-Session-Type,884,,Enumerated,"V,M",,,
+PoC-User-Role,1252,,Grouped,"V,M",,,
+PoC-User-Role-IDs,1253,,UTF8String,"V,M",,,
+# Note: 3GPP TS 32.299 V13.1.0 (2015-06) renamed,,,,,,,
+# PoC-User-Role-info-Units (1254) to PoC-User-Role-Info-Units (1254).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: PoC-User-Role-info-Units (1254) renamed to PoC-User-Role-Info-Units (1254).,,,,,,,
+PoC-User-Role-Info-Units,1254,,Enumerated,"V,M",,,
+Positioning-Data,1245,,UTF8String,"V,M",,,
+Preferred-AoC-Currency,2315,,Unsigned32,"V,M",,,
+Priority,1209,,Enumerated,"V,M",,,
+Privacy-Indicator,3915,,Enumerated,"V,M",,,
+ProSe-3rd-Party-Application-ID,3440,,UTF8String,"V,M",,,
+ProSe-Direct-Communication-Reception-Data-Container,3461,,Grouped,"V,M",,,
+ProSe-Direct-Communication-Transmission-Data-Container,3441,,Grouped,"V,M",,,
+ProSe-Direct-Discovery-Model,3442,,Enumerated,"V,M",,,
+ProSe-Event-Type,3443,,Enumerated,"V,M",,,
+ProSe-Function-IP-Address,3444,,Address,"V,M",,,
+ProSe-Function-PLMN-Identifier,3457,,UTF8String,"V,M",,,
+ProSe-Functionality,3445,,Enumerated,"V,M",,,
+ProSe-Group-IP-Multicast-Address,3446,,Address,"V,M",,,
+ProSe-Information,3447,,Grouped,"V,M",,,
+ProSe-Range-Class,3448,,Enumerated,"V,M",,,
+ProSe-Reason-For-Cancellation,3449,,Enumerated,"V,M",,,
+ProSe-Request-Timestamp,3450,,Time,"V,M",,,
+ProSe-Role-Of-UE,3451,,Enumerated,"V,M",,,
+ProSe-Source-IP-Address,3452,,Address,"V,M",,,
+ProSe-Target-Layer-2-ID,4410,,OctetString,"V,M",,,
+ProSe-UE-ID,3453,,OctetString,"V,M",,,
+ProSe-UE-to-Network-Relay-UE-ID,4409,,OctetString,"V,M",,,
+Proximity-Alert-Indication,3454,,Enumerated,"V,M",,,
+Proximity-Alert-Timestamp,3455,,Time,"V,M",,,
+Proximity-Cancellation-Timestamp,3456,,Time,"V,M",,,
+PS-Append-Free-Format-Data,867,,Enumerated,"V,M",,,
+PS-Free-Format-Data,866,,OctetString,"V,M",,,
+PS-Furnish-Charging-Information,865,,Grouped,"V,M",,,
+PS-Information,874,,Grouped,"V,M",,,
+Quota-Consumption-Time,881,,Unsigned32,"V,M",,,
+Quota-Holding-Time,871,,Unsigned32,"V,M",,,
+Quota-Indicator,3912,,Enumerated,"V,M",,,
+# Note: Name conflict with 3GPP TS 32.299 Radio-Frequency (3508),,,,,,,
+# 3GPP TS 29.468 V12.0.0 (2014-09) added Radio-Frequency (3508).,,,,,,,
+# 3GPP TS 32.299 V13.1.0 (2015-06) CR 0638 added Radio-Frequency (3462).,,,,,,,
+Radio-Frequency,3462,,OctetString,"V,M",,,
+Radio-Parameter-Set-Info,3463,,Grouped,"V,M",,,
+Radio-Parameter-Set-Values,3464,,OctetString,"V,M",,,
+Radio-Resources-Indicator,3465,,Integer32,"V,M",,,
+RAN-End-Time,1301,,Time,V,,,M
+RAN-Secondary-RAT-Usage-Report,1302,,Grouped,V,,,M
+RAN-Start-Time,1303,,Time,V,,,M
+Rate-Control-Max-Message-Size,3937,,Unsigned32,"V,M",,,
+Rate-Control-Max-Rate,3938,,Unsigned32,"V,M",,,
+Rate-Control-Time-Unit,3939,,Unsigned32,"V,M",,,
+Rate-Element,2058,,Grouped,"V,M",,,
+Read-Reply-Report-Requested,1222,,Enumerated,"V,M",,,
+Real-Time-Tariff-Information,2305,,Grouped,"V,M",,,
+Reason-Header,3401,,UTF8String,"V,M",,,
+Received-Talk-Burst-Time,1284,,Unsigned32,"V,M",,,
+Received-Talk-Burst-Volume,1285,,Unsigned32,"V,M",,,
+# Note: Name conflict with 3GPP TS 32.299 Recipient-Address (1201);,,,,,,,
+# 3GPP TS 29.140 V6.1.0 (2005-06) allocated Recipient-Address (1108).,,,,,,,
+# 3GPP TS 32.299 V6.4.0 (2005-09) CR 0028 added Recipient-Address (1201).,,,,,,,
+Recipient-Address,1201,,Grouped,"V,M",,,
+Recipient-Info,2026,,Grouped,"V,M",,,
+Recipient-Received-Address,2028,,Grouped,"V,M",,,
+Recipient-SCCP-Address,2010,,Address,"V,M",,,
+Refund-Information,2022,,OctetString,"V,M",,,
+Related-Change-Condition-Information,3925,,Grouped,"V,M",,,
+Related-Trigger,3926,,Grouped,"V,M",,,
+Related-IMS-Charging-Identifier,2711,,UTF8String,"V,M",,,
+Related-IMS-Charging-Identifier-Node,2712,,Address,"V,M",,,
+Relationship-Mode,2706,,Enumerated,"V,M",,,
+Relay-IP-address,4411,,Address,"V,M",,,
+Remaining-Balance,2021,,Grouped,"V,M",,,
+Reply-Applic-ID,1223,,UTF8String,"V,M",,,
+Reply-Path-Requested,2011,,Enumerated,"V,M",,,
+Reporting-Reason,872,,Enumerated,"V,M",,,
+Requested-Party-Address,1251,,UTF8String,"V,M",,,
+Requested-PLMN-Identifier,3436,,UTF8String,"V,M",,,
+Requestor-PLMN-Identifier,3437,,UTF8String,"V,M",,,
+Role-Of-Node,829,,Enumerated,"V,M",,,
+Role-Of-ProSe-Function,3438,,Enumerated,"V,M",,,
+Route-Header-Received,3403,,UTF8String,"V,M",,,
+Route-Header-Transmitted,3404,,UTF8String,"V,M",,,
+Scale-Factor,2059,,Grouped,"V,M",,,
+SCEF-Address,1317,,Address,V,,,M
+SCS-Address,3941,,Address,"V,M",,,
+SCS-AS-Address,3940,,Grouped,"V,M",,,
+SCS-Realm,3942,,DiameterIdentity,"V,M",,,
+SDP-Answer-Timestamp,1275,,Time,"V,M",,,
+SDP-Media-Component,843,,Grouped,"V,M",,,
+SDP-Media-Description,845,,UTF8String,"V,M",,,
+SDP-Media-Name,844,,UTF8String,"V,M",,,
+SDP-Offer-Timestamp,1274,,Time,"V,M",,,
+SDP-Session-Description,842,,UTF8String,"V,M",,,
+SDP-TimeStamps,1273,,Grouped,"V,M",,,
+SDP-Type,2036,,Enumerated,"V,M",,,
+Secondary-RAT-Type,1304,,OctetString,V,,,M
+Serving-Node-Identity,3929,,DiameterIdentity,"V,M",,,
+Served-Party-IP-Address,848,,Address,"V,M",,,
+Service-Data-Container,2040,,Grouped,"V,M",,,
+Service-Id,855,,UTF8String,"V,M",,,
+Service-Information,873,,Grouped,"V,M",,,
+Service-Mode,2032,,Unsigned32,"V,M",,,
+Service-Specific-Data,863,,UTF8String,"V,M",,,
+Service-Specific-Info,1249,,Grouped,"V,M",,,
+Service-Specific-Type,1257,,Unsigned32,"V,M",,,
+Serving-Node-Type,2047,,Enumerated,"V,M",,,
+Session-Direction,2707,,Enumerated,"V,M",,,
+SGi-PtP-Tunnelling-Method,3931,,Enumerated,"V,M",,,
+SGSN-Address,1228,,Address,"V,M",,,
+SGW-Address,2067,,Address,"V,M",,,
+SGW-Change,2065,,Enumerated,"V,M",,,
+SIP-Method,824,,UTF8String,"V,M",,,
+SIP-Request-Timestamp,834,,Time,"V,M",,,
+SIP-Request-Timestamp-Fraction,2301,,Unsigned32,"V,M",,,
+SIP-Response-Timestamp,835,,Time,"V,M",,,
+SIP-Response-Timestamp-Fraction,2302,,Unsigned32,"V,M",,,
+SM-Device-Trigger-Indicator,3407,,Enumerated,"V,M",,,
+SM-Device-Trigger-Information,3405,,Grouped,"V,M",,,
+SM-Discharge-Time,2012,,Time,"V,M",,,
+SM-Message-Type,2007,,Enumerated,"V,M",,,
+SM-Protocol-ID,2013,,OctetString,"V,M",,,
+SM-Sequence-Number,3408,,Unsigned32,"V,M",,,
+SM-Service-Type,2029,,Enumerated,"V,M",,,
+SM-Status,2014,,OctetString,"V,M",,,
+SM-User-Data-Header,2015,,OctetString,"V,M",,,
+SMS-Information,2000,,Grouped,"V,M",,,
+SMS-Node,2016,,Enumerated,"V,M",,,
+SMS-Result,3409,,Unsigned32,"V,M",,,
+SMSC-Address,2017,,Address,"V,M",,,
+Start-of-Charging,3419,,Time,"V,M",,,
+Start-Time,2041,,Time,"V,M",,,
+# Note: 3GPP TS 32.299 V11.10.0 (2013-12) CR 0566 renamed,,,,,,,
+# Status (2702) to Status-Code (2702).,,,,,,,
+# 3GPP TS 32.299 V11.14.0 (2014-12) CR 0617 renamed,,,,,,,
+# Status-Code (2702) to Status-AS-Code (2702).,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: Status (2702) renamed to Status-AS-Code (2702).,,,,,,,
+Status-AS-Code,2702,,Enumerated,"V,M",,,
+Stop-Time,2042,,Time,"V,M",,,
+Submission-Time,1202,,Time,"V,M",,,
+Subscriber-Role,2033,,Enumerated,"V,M",,,
+Supplementary-Service,2048,,Grouped,"V,M",,,
+TAD-Identifier,2717,,Enumerated,"V,M",,,
+Talk-Burst-Exchange,1255,,Grouped,"V,M",,,
+Talk-Burst-Time,1286,,Unsigned32,"V,M",,,
+Talk-Burst-Volume,1287,,Unsigned32,"V,M",,,
+Target-IP-Address,4412,,Address,VM,,,
+Tariff-Information,2060,,Grouped,"V,M",,,
+Tariff-XML,2306,,UTF8String,"V,M",,,
+Teleservice,3413,,OctetString,"V,M",,,
+Terminating-IOI,840,,UTF8String,"V,M",,,
+Time-First-Reception,3466,,Time,"V,M",,,
+Time-First-Transmission,3467,,Time,"V,M",,,
+Time-First-Usage,2043,,Time,"V,M",,,
+Time-Indicator,3911,,Unsigned32,"V,M",,,
+Time-Last-Usage,2044,,Time,"V,M",,,
+Time-Quota-Mechanism,1270,,Grouped,"V,M",,,
+Time-Quota-Threshold,868,,Unsigned32,"V,M",,,
+Time-Quota-Type,1271,,Enumerated,"V,M",,,
+Time-Stamps,833,,Grouped,"V,M",,,
+Time-Usage,2045,,Unsigned32,"V,M",,,
+TLTRI,1318,,Unsigned32,V,,,M
+Token-Text,1215,,UTF8String,"V,M",,,
+Traffic-Data-Volumes,2046,,Grouped,"V,M",,,
+Transcoder-Inserted-Indication,2605,,Enumerated,"V,M",,,
+Transit-IOI-List,2701,,UTF8String,"V,M",,,
+Transmitter-Info,3468,,Grouped,"V,M",,,
+Trigger,1264,,Grouped,"V,M",,,
+Trigger-Type,870,,Enumerated,"V,M",,,
+Trunk-Group-Id,851,,Grouped,"V,M",,,
+TWAG-Address,3903,,Address,"V,M",,,
+TWAN-User-Location-Info,2714,,Grouped,"V,M",,,
+Type-Number,1204,,Enumerated,"V,M",,,
+UNI-PDU-CP-Only-Flag,3932,,Enumerated,"V,M",,,
+Unit-Cost,2061,,Grouped,"V,M",,,
+Unit-Quota-Threshold,1226,,Unsigned32,"V,M",,,
+Unused-Quota-Timer,4407,,Unsigned32,"V,M",,,
+Usage-Information-Report-Sequence-Number,3439,,Integer32,"V,M",,,
+User-CSG-Information,2319,,Grouped,"V,M",,,
+User-Participating-Type,1279,,Enumerated,"V,M",,,
+User-Session-Id,830,,UTF8String,"V,M",,,
+UWAN-User-Location-Info,3918,,Grouped,"V,M",,,
+Variable-Part,3907,,Grouped,"V,M",,,
+Variable-Part-Order,3908,,Unsigned32,"V,M",,,
+Variable-Part-Type,3909,,Unsigned32,"V,M",,,
+Variable-Part-Value,3910,,UTF8String,"V,M",,,
+VCS-Information,3410,,Grouped,"V,M",,,
+VLR-Number,3420,,OctetString,"V,M",,,
+Volume-Quota-Threshold,869,,Unsigned32,"V,M",,,
+# Change-1.4.0: WAG-Address (890) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: WAG-PLMN-Id (891) OctetString removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: WLAN-Information (875) Grouped removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+WLAN-Operator-Id,1306,,Grouped,V,,,M
+WLAN-Operator-Name,1307,,UTF8String,V,,,M
+WLAN-PLMN-Id,1308,,UTF8String,V,,,M
+# Change-1.4.0: WLAN-Radio-Container (892) Grouped removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: WLAN-Session-Id (1246) UTF8String removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: WLAN-Technology (893) Unsigned32 removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+# Change-1.4.0: WLAN-UE-Local-IPAddress (894) Address removed in 3GPP TS 32.299 V12.6.0 (2014-09).,,,,,,,
+#,,,,,,,
+,,,,,,,
+@standard,OMA DDS Charging Data,,,,,,
+#=,,,,,,,
+# OMA DDS Charging_Data V1.0 20110201-A,,,,,,,
+# Charging Data,,,,,,,
+# ,,,,,,,
+# From OMA OMA-DDS-Charging_Data-V1_0-20110201-A.pdf,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+Application-Server-Id,2101,8.4,UTF8String,"M,V",,,
+# Change-1.4.0: Application-Service-Type (2102) type changed from UTF8String to Enumerated.,,,,,,,
+Application-Service-Type,2102,8.4,Enumerated,"M,V",,,
+# Change-1.4.0: Application-Session-Id (2103) type changed from UTF8String to Unsigned32.,,,,,,,
+Application-Session-Id,2103,8.4,Unsigned32,"M,V",,,
+Content-ID,2116,8.4,UTF8String,"M,V",,,
+Content-provider-ID,2117,8.4,UTF8String,"M,V",,,
+DCD-Information,2115,8.5.5,Grouped,"M,V",,,
+Delivery-Status,2104,8.4,UTF8String,"M,V",,,
+IM-Information,2110,8.5.6,Grouped,"M,V",,,
+Number-Of-Messages-Successfully-Exploded,2111,8.4,Unsigned32,"M,V",,,
+Number-Of-Messages-Successfully-Sent,2112,8.4,Unsigned32,"M,V",,,
+Service-Generic-Information,1256,8.5.10,Grouped,"M,V",,,
+Total-Number-Of-Messages-Exploded,2113,8.4,Unsigned32,"M,V",,,
+Total-Number-Of-Messages-Sent,2114,8.4,Unsigned32,"M,V",,,
+,,,,,,,
+,,,,,,,
+@vendor,5535,,,,,,
+,,,,,,,
+@standard,X.S0057-0,,,,,,
+#=,,,,,,,
+# 3GPP2 X.S0057-0 v2.0,,,,,,,
+# E-UTRAN - eHRPD Connectivity and Interworking:,,,,,,,
+# Core Network Aspects,,,,,,,
+# ,,,,,,,
+# From 3GPP2 X.S0057-0_v2.0_091215.pdf,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+# ,,,,,,,
+# Change-1.4.0: 3GPP2-BSID (9010) type changed from OctetString to UTF8String.,,,,,,,
+# Change-1.4.0: 3GPP2-BSID (9010) flag M MUST.,,,,,,,
+3GPP2-BSID,9010,5.6.2.1.1,UTF8String,"M,V",P,,
diff --git a/extensions/dict_dcca_starent/CMakeLists.txt b/extensions/dict_dcca_starent/CMakeLists.txt index 8152a02..c2ffa70 100644 --- a/extensions/dict_dcca_starent/CMakeLists.txt +++ b/extensions/dict_dcca_starent/CMakeLists.txt @@ -2,7 +2,7 @@ PROJECT("Diameter DCCA (Diameter Credit Control Application) Starent dictionary definitions " C) # Compile as a module -FD_ADD_EXTENSION(dict_dcca_starent dict_dcca_starent.c) +FD_ADD_EXTENSION(dict_dcca_starent dict_dcca_starent.c add_avps.c) #### diff --git a/extensions/dict_dcca_starent/add_avps.c b/extensions/dict_dcca_starent/add_avps.c new file mode 100644 index 0000000..ab96364 --- /dev/null +++ b/extensions/dict_dcca_starent/add_avps.c @@ -0,0 +1,355 @@ +/* +Generated by: + csv_to_fd -p fdc dict_dcca_starent.csv + +Do not modify; modify the source .csv files instead. +*/ + +#include <freeDiameter/extension.h> + +#define CHECK_dict_new( _type, _data, _parent, _ref ) \ + CHECK_FCT( fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref)) ); + +#define CHECK_dict_search( _type, _criteria, _what, _result ) \ + CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) ); + +int add_avps() +{ + struct dict_object * UTF8String_type = NULL; + CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type); + + struct dict_object * Time_type = NULL; + CHECK_dict_search(DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type); + + /*==================================================================*/ + /* Cisco ASR 5000 Series AAA Interface */ + /* Administration and Reference */ + /* Release 8.x and 9.0 */ + /* Last Updated June 30, 2010 */ + /* updated using v15 docs from Jan 2014 */ + /* www.cisco.com/c/dam/en/us/td/docs/wireless/asr_5000/15-0/15-0-AAA-Reference.pdf */ + /*==================================================================*/ + + /* SN-Volume-Quota-Threshold, Unsigned32, code 501 */ + { + struct dict_avp_data data = { + 501, /* Code */ + 8164, /* Vendor */ + "SN-Volume-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Unit-Quota-Threshold, Unsigned32, code 502 */ + { + struct dict_avp_data data = { + 502, /* Code */ + 8164, /* Vendor */ + "SN-Unit-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Time-Quota-Threshold, Unsigned32, code 503 */ + { + struct dict_avp_data data = { + 503, /* Code */ + 8164, /* Vendor */ + "SN-Time-Quota-Threshold", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Total-Used-Service-Unit, Grouped, code 504 */ + { + struct dict_avp_data data = { + 504, /* Code */ + 8164, /* Vendor */ + "SN-Total-Used-Service-Unit", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Absolute-Validity-Time, Time, code 505 */ + { + struct dict_avp_data data = { + 505, /* Code */ + 8164, /* Vendor */ + "SN-Absolute-Validity-Time", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SN-Bandwidth-Control, Enumerated, code 512 */ + { + struct dict_avp_data data = { + 512, /* Code */ + 8164, /* Vendor */ + "SN-Bandwidth-Control", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Bandwidth-Control)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SN-Transparent-Data, OctetString, code 513 */ + { + struct dict_avp_data data = { + 513, /* Code */ + 8164, /* Vendor */ + "SN-Transparent-Data", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Traffic-Policy, UTF8String, code 514 */ + { + struct dict_avp_data data = { + 514, /* Code */ + 8164, /* Vendor */ + "SN-Traffic-Policy", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SN-Firewall-Policy, UTF8String, code 515 */ + { + struct dict_avp_data data = { + 515, /* Code */ + 8164, /* Vendor */ + "SN-Firewall-Policy", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SN-Usage-Monitoring-Control, Grouped, code 517 */ + { + struct dict_avp_data data = { + 517, /* Code */ + 8164, /* Vendor */ + "SN-Usage-Monitoring-Control", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Monitoring-Key, Unsigned32, code 518 */ + { + struct dict_avp_data data = { + 518, /* Code */ + 8164, /* Vendor */ + "SN-Monitoring-Key", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Usage-Volume, Unsigned64, code 519 */ + { + struct dict_avp_data data = { + 519, /* Code */ + 8164, /* Vendor */ + "SN-Usage-Volume", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_UNSIGNED64 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Service-Flow-Detection, Enumerated, code 520 */ + { + struct dict_avp_data data = { + 520, /* Code */ + 8164, /* Vendor */ + "SN-Service-Flow-Detection", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Service-Flow-Detection)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SN-Usage-Monitoring, Enumerated, code 521 */ + { + struct dict_avp_data data = { + 521, /* Code */ + 8164, /* Vendor */ + "SN-Usage-Monitoring", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_INTEGER32 /* base type of data */ + }; + struct dict_object *type; + struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Usage-Monitoring)", NULL, NULL, NULL }; + CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); + CHECK_dict_new(DICT_AVP, &data, type, NULL); + }; + + /* SN-Session-Start-Indicator, OctetString, code 522 */ + { + struct dict_avp_data data = { + 522, /* Code */ + 8164, /* Vendor */ + "SN-Session-Start-Indicator", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Phase0-PSAPName, UTF8String, code 523 */ + { + struct dict_avp_data data = { + 523, /* Code */ + 8164, /* Vendor */ + "SN-Phase0-PSAPName", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SN-Charging-Id, OctetString, code 525 */ + { + struct dict_avp_data data = { + 525, /* Code */ + 8164, /* Vendor */ + "SN-Charging-Id", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Remaining-Service-Unit, Grouped, code 526 */ + { + struct dict_avp_data data = { + 526, /* Code */ + 8164, /* Vendor */ + "SN-Remaining-Service-Unit", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_GROUPED /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Service-Start-Timestamp, Time, code 527 */ + { + struct dict_avp_data data = { + 527, /* Code */ + 8164, /* Vendor */ + "SN-Service-Start-Timestamp", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); + }; + + /* SN-Rulebase-Id, UTF8String, code 528 */ + { + struct dict_avp_data data = { + 528, /* Code */ + 8164, /* Vendor */ + "SN-Rulebase-Id", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SN-CF-Policy-ID, Unsigned32, code 529 */ + { + struct dict_avp_data data = { + 529, /* Code */ + 8164, /* Vendor */ + "SN-CF-Policy-ID", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_UNSIGNED32 /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Charging-Collection-Function-Name, UTF8String, code 530 */ + { + struct dict_avp_data data = { + 530, /* Code */ + 8164, /* Vendor */ + "SN-Charging-Collection-Function-Name", /* Name */ + AVP_FLAG_VENDOR, /* Fixed flags */ + AVP_FLAG_VENDOR, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); + }; + + /* SN-Fast-Reauth-Username, OctetString, code 11010 */ + { + struct dict_avp_data data = { + 11010, /* Code */ + 8164, /* Vendor */ + "SN-Fast-Reauth-Username", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + /* SN-Pseudonym-Username, OctetString, code 11011 */ + { + struct dict_avp_data data = { + 11011, /* Code */ + 8164, /* Vendor */ + "SN-Pseudonym-Username", /* Name */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ + AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ + AVP_TYPE_OCTETSTRING /* base type of data */ + }; + CHECK_dict_new(DICT_AVP, &data, NULL, NULL); + }; + + return 0; +} /* add_avps() */ diff --git a/extensions/dict_dcca_starent/dict_dcca_starent.c b/extensions/dict_dcca_starent/dict_dcca_starent.c index 1617c19..7a1ea60 100644 --- a/extensions/dict_dcca_starent/dict_dcca_starent.c +++ b/extensions/dict_dcca_starent/dict_dcca_starent.c @@ -6,9 +6,6 @@ /* The content of this file follows the same structure as dict_base_proto.c */ -#define CHECK_dict_new( _type, _data, _parent, _ref ) \ - CHECK_FCT( fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref)) ); - #define CHECK_dict_search( _type, _criteria, _what, _result ) \ CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), ENOENT) ); @@ -38,12 +35,12 @@ struct local_rules_definition { (_rulearray)[__ar].avp_name, \ &__data.rule_avp, 0 ) ); \ if ( !__data.rule_avp ) { \ - TRACE_DEBUG(INFO, "AVP Not found: '%s'", (_rulearray)[__ar].avp_name ); \ + LOG_E( "AVP Not found: '%s'", (_rulearray)[__ar].avp_name ); \ return ENOENT; \ } \ CHECK_FCT_DO( fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &__data, _parent, NULL), \ { \ - TRACE_DEBUG(INFO, "Error on rule with AVP '%s'", \ + LOG_E( "Error on rule with AVP '%s'", \ (_rulearray)[__ar].avp_name ); \ return EINVAL; \ } ); \ @@ -69,352 +66,8 @@ static int dict_dcca_starent_entry(char * conffile) } - - struct dict_object * Address_type; - struct dict_object * DiameterIdentity_type; - struct dict_object * DiameterURI_type; - struct dict_object * IPFilterRule_type; - struct dict_object * Time_type; - struct dict_object * UTF8String_type; - - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Address", &Address_type); - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterIdentity", &DiameterIdentity_type); - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "DiameterURI", &DiameterURI_type); - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "IPFilterRule", &IPFilterRule_type); - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "Time", &Time_type); - CHECK_dict_search( DICT_TYPE, TYPE_BY_NAME, "UTF8String", &UTF8String_type); - - /* The following is created automatically. Do not modify. */ - /* Changes will be lost during the next update. Modify the source org file instead. */ - - /* Cisco ASR 5000 Series AAA Interface */ - /* Administration and Reference */ - /* Release 8.x and 9.0 */ - /* Last Updated June 30, 2010 */ - /* updated using v15 docs from Jan 2014 */ - /* www.cisco.com/c/dam/en/us/td/docs/wireless/asr_5000/15-0/15-0-AAA-Reference.pdf */ - /* SN-Volume-Quota-Threshold */ - { - struct dict_avp_data data = { - 501, /* Code */ - 8164, /* Vendor */ - "SN-Volume-Quota-Threshold", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Unit-Quota-Threshold */ - { - struct dict_avp_data data = { - 502, /* Code */ - 8164, /* Vendor */ - "SN-Unit-Quota-Threshold", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Time-Quota-Threshold */ - { - struct dict_avp_data data = { - 503, /* Code */ - 8164, /* Vendor */ - "SN-Time-Quota-Threshold", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Total-Used-Service-Unit */ - { - struct dict_avp_data data = { - 504, /* Code */ - 8164, /* Vendor */ - "SN-Total-Used-Service-Unit", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Absolute-Validity-Time */ - { - struct dict_avp_data data = { - 505, /* Code */ - 8164, /* Vendor */ - "SN-Absolute-Validity-Time", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* SN-Bandwidth-Control */ - { - struct dict_avp_data data = { - 512, /* Code */ - 8164, /* Vendor */ - "SN-Bandwidth-Control", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Bandwidth-Control)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* SN-Transparent-Data */ - { - struct dict_avp_data data = { - 513, /* Code */ - 8164, /* Vendor */ - "SN-Transparent-Data", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Traffic-Policy */ - { - struct dict_avp_data data = { - 514, /* Code */ - 8164, /* Vendor */ - "SN-Traffic-Policy", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* SN-Firewall-Policy */ - { - struct dict_avp_data data = { - 515, /* Code */ - 8164, /* Vendor */ - "SN-Firewall-Policy", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* SN-Usage-Monitoring-Control */ - { - struct dict_avp_data data = { - 517, /* Code */ - 8164, /* Vendor */ - "SN-Usage-Monitoring-Control", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Monitoring-Key */ - { - struct dict_avp_data data = { - 518, /* Code */ - 8164, /* Vendor */ - "SN-Monitoring-Key", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Usage-Volume */ - { - struct dict_avp_data data = { - 519, /* Code */ - 8164, /* Vendor */ - "SN-Usage-Volume", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_UNSIGNED64 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Service-Flow-Detection */ - { - struct dict_avp_data data = { - 520, /* Code */ - 8164, /* Vendor */ - "SN-Service-Flow-Detection", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Service-Flow-Detection)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* SN-Usage-Monitoring */ - { - struct dict_avp_data data = { - 521, /* Code */ - 8164, /* Vendor */ - "SN-Usage-Monitoring", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_INTEGER32 /* base type of data */ - }; - struct dict_object *type; - struct dict_type_data tdata = { AVP_TYPE_INTEGER32, "Enumerated(Starent/SN-Usage-Monitoring)", NULL, NULL, NULL }; - CHECK_dict_new(DICT_TYPE, &tdata, NULL, &type); - CHECK_dict_new(DICT_AVP, &data, type, NULL); - }; - - /* SN-Session-Start-Indicator */ - { - struct dict_avp_data data = { - 522, /* Code */ - 8164, /* Vendor */ - "SN-Session-Start-Indicator", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Phase0-PSAPName */ - { - struct dict_avp_data data = { - 523, /* Code */ - 8164, /* Vendor */ - "SN-Phase0-PSAPName", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* SN-Charging-Id */ - { - struct dict_avp_data data = { - 525, /* Code */ - 8164, /* Vendor */ - "SN-Charging-Id", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Remaining-Service-Unit */ - { - struct dict_avp_data data = { - 526, /* Code */ - 8164, /* Vendor */ - "SN-Remaining-Service-Unit", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_GROUPED /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Service-Start-Timestamp */ - { - struct dict_avp_data data = { - 527, /* Code */ - 8164, /* Vendor */ - "SN-Service-Start-Timestamp", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, Time_type, NULL); - }; - - /* SN-Rulebase-Id */ - { - struct dict_avp_data data = { - 528, /* Code */ - 8164, /* Vendor */ - "SN-Rulebase-Id", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* SN-CF-Policy-ID */ - { - struct dict_avp_data data = { - 529, /* Code */ - 8164, /* Vendor */ - "SN-CF-Policy-ID", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_UNSIGNED32 /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Charging-Collection-Function-Name */ - { - struct dict_avp_data data = { - 530, /* Code */ - 8164, /* Vendor */ - "SN-Charging-Collection-Function-Name", /* Name */ - AVP_FLAG_VENDOR, /* Fixed flags */ - AVP_FLAG_VENDOR, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, UTF8String_type, NULL); - }; - - /* SN-Fast-Reauth-Username */ - { - struct dict_avp_data data = { - 11010, /* Code */ - 8164, /* Vendor */ - "SN-Fast-Reauth-Username", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - /* SN-Pseudonym-Username */ - { - struct dict_avp_data data = { - 11011, /* Code */ - 8164, /* Vendor */ - "SN-Pseudonym-Username", /* Name */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flags */ - AVP_FLAG_VENDOR |AVP_FLAG_MANDATORY, /* Fixed flag values */ - AVP_TYPE_OCTETSTRING /* base type of data */ - }; - CHECK_dict_new(DICT_AVP, &data, NULL, NULL); - }; - - + extern int add_avps(); + CHECK_FCT( add_avps() ); /* Rules section */ diff --git a/extensions/dict_dcca_starent/dict_dcca_starent.csv b/extensions/dict_dcca_starent/dict_dcca_starent.csv new file mode 100644 index 0000000..b26ba8a --- /dev/null +++ b/extensions/dict_dcca_starent/dict_dcca_starent.csv @@ -0,0 +1,35 @@ +Attribute Name,AVP Code,Section defined,Value Type,MUST,MAY,SHOULD NOT,MUST NOT
+@vendor,8164,,,,,,
+#=,,,,,,,
+# Cisco ASR 5000 Series AAA Interface,,,,,,,
+# Administration and Reference,,,,,,,
+# Release 8.x and 9.0,,,,,,,
+"# Last Updated June 30, 2010",,,,,,,
+# updated using v15 docs from Jan 2014,,,,,,,
+# www.cisco.com/c/dam/en/us/td/docs/wireless/asr_5000/15-0/15-0-AAA-Reference.pdf,,,,,,,
+#=,,,,,,,
+#,,,,,,,
+SN-Volume-Quota-Threshold,501,,Unsigned32,"M,V",,,
+SN-Unit-Quota-Threshold,502,,Unsigned32,"M,V",,,
+SN-Time-Quota-Threshold,503,,Unsigned32,"M,V",,,
+SN-Total-Used-Service-Unit,504,,Grouped,V,,,
+SN-Absolute-Validity-Time,505,,Time,V,,,
+SN-Bandwidth-Control,512,,Enumerated,"M,V",,,
+SN-Transparent-Data,513,,OctetString,V,,,
+SN-Traffic-Policy,514,,UTF8String,V,,,
+SN-Firewall-Policy,515,,UTF8String,V,,,
+SN-Usage-Monitoring-Control,517,,Grouped,V,,,
+SN-Monitoring-Key,518,,Unsigned32,V,,,
+SN-Usage-Volume,519,,Unsigned64,V,,,
+SN-Service-Flow-Detection,520,,Enumerated,V,,,
+SN-Usage-Monitoring,521,,Enumerated,V,,,
+SN-Session-Start-Indicator,522,,OctetString,"M,V",,,
+SN-Phase0-PSAPName,523,,UTF8String,V,,,
+SN-Charging-Id,525,,OctetString,V,,,
+SN-Remaining-Service-Unit,526,,Grouped,V,,,
+SN-Service-Start-Timestamp,527,,Time,V,,,
+SN-Rulebase-Id,528,,UTF8String,"M,V",,,
+SN-CF-Policy-ID,529,,Unsigned32,"M,V",,,
+SN-Charging-Collection-Function-Name,530,,UTF8String,V,,,
+SN-Fast-Reauth-Username,11010,,OctetString,"M,V",,,
+SN-Pseudonym-Username,11011,,OctetString,"M,V",,,
diff --git a/extensions/dict_json/CMakeLists.txt b/extensions/dict_json/CMakeLists.txt index 6b27d22..afa4df6 100644 --- a/extensions/dict_json/CMakeLists.txt +++ b/extensions/dict_json/CMakeLists.txt @@ -5,6 +5,7 @@ INCLUDE(FindPkgConfig) # We use JSONCPP and JSON-Schema to parse and validate JSON files PKG_CHECK_MODULES(JSONCPP REQUIRED jsoncpp) +# https://github.com/nfotex/json-schema/ PKG_CHECK_MODULES(JSON_SCHEMA REQUIRED json-schema) PKG_CHECK_MODULES(PCRECPP REQUIRED libpcrecpp) @@ -15,7 +16,7 @@ SET(DICT_JSON_SRC ) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) -INCLUDE_DIRECTORIES(${JSONCPP_INCLUDE_DIR}) +INCLUDE_DIRECTORIES(${JSONCPP_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(${JSON_SCHEMA_INCLUDE_DIR}) LINK_DIRECTORIES(${JSONCPP_LIBDIR}) diff --git a/extensions/dict_legacy_xml/dict_lxml_xml.c b/extensions/dict_legacy_xml/dict_lxml_xml.c index 748c43f..3aa3807 100644 --- a/extensions/dict_legacy_xml/dict_lxml_xml.c +++ b/extensions/dict_legacy_xml/dict_lxml_xml.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2017, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/dict_nasreq/dict_nasreq.c b/extensions/dict_nasreq/dict_nasreq.c index a87907b..0878ae1 100644 --- a/extensions/dict_nasreq/dict_nasreq.c +++ b/extensions/dict_nasreq/dict_nasreq.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2017, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/rt_default/rt_default.c b/extensions/rt_default/rt_default.c index 239a89f..0fdfd44 100644 --- a/extensions/rt_default/rt_default.c +++ b/extensions/rt_default/rt_default.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/rt_default/rt_default.h b/extensions/rt_default/rt_default.h index 14bf934..b37e796 100644 --- a/extensions/rt_default/rt_default.h +++ b/extensions/rt_default/rt_default.h @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2011, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/rt_default/rtd_conf.y b/extensions/rt_default/rtd_conf.y index 928a454..e02303c 100644 --- a/extensions/rt_default/rtd_conf.y +++ b/extensions/rt_default/rtd_conf.y @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/rt_default/rtd_rules.c b/extensions/rt_default/rtd_rules.c index a7f1f44..c1cfe7f 100644 --- a/extensions/rt_default/rtd_rules.c +++ b/extensions/rt_default/rtd_rules.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/rt_deny_by_size/rt_deny_by_size_conf.l b/extensions/rt_deny_by_size/rt_deny_by_size_conf.l index ff8913b..03115e3 100644 --- a/extensions/rt_deny_by_size/rt_deny_by_size_conf.l +++ b/extensions/rt_deny_by_size/rt_deny_by_size_conf.l @@ -3,7 +3,7 @@ * Authors: Thomas Klausner <tk@giga.or.at> based on code by Sebastien Decugis <sdecugis@freediameter.net>* * * * Copyright (c) 2018, Thomas Klausner * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Written under contract by Effortel Technologies SA, http://effortel.com/ * diff --git a/extensions/rt_deny_by_size/rt_deny_by_size_conf.y b/extensions/rt_deny_by_size/rt_deny_by_size_conf.y index 12344e2..586a344 100644 --- a/extensions/rt_deny_by_size/rt_deny_by_size_conf.y +++ b/extensions/rt_deny_by_size/rt_deny_by_size_conf.y @@ -83,7 +83,7 @@ int rt_deny_by_size_conf_handle(char * conffile) TRACE_ERROR( "Unable to parse the configuration file %s.", conffile); return EINVAL; } else { - TRACE_DEBUG(FULL, "[rt__deny_by_size] MaximumSize: %d.", rt_deny_by_size_conf.maximum_size); + TRACE_DEBUG(FULL, "[rt_deny_by_size] MaximumSize: %d.", rt_deny_by_size_conf.maximum_size); } return 0; diff --git a/extensions/rt_ereg/rtereg.c b/extensions/rt_ereg/rtereg.c index 1af73ee..93a584d 100644 --- a/extensions/rt_ereg/rtereg.c +++ b/extensions/rt_ereg/rtereg.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2020, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * @@ -93,7 +93,7 @@ static int proceed(char * value, size_t len, struct fd_list * candidates, int co int err = 0; struct fd_list * c; - TRACE_DEBUG(ANNOYING, "Attempt pattern matching of '%.*s' with rule '%s'", (int)len, value, r->pattern); + LOG_D("[rt_ereg] attempting pattern matching of '%.*s' with rule '%s'", (int)len, value, r->pattern); #ifdef HAVE_REG_STARTEND { @@ -118,7 +118,7 @@ static int proceed(char * value, size_t len, struct fd_list * candidates, int co size_t bl; /* Error while compiling the regex */ - TRACE_DEBUG(INFO, "Error while executing the regular expression '%s':", r->pattern); + LOG_E("[rt_ereg] error while executing the regular expression '%s':", r->pattern); /* Get the error message size */ bl = regerror(err, &r->preg, NULL, 0); @@ -128,7 +128,7 @@ static int proceed(char * value, size_t len, struct fd_list * candidates, int co /* Get the error message content */ regerror(err, &r->preg, errstr, bl); - TRACE_DEBUG(INFO, "\t%s", errstr); + LOG_E("\t%s", errstr); /* Free the buffer, return the error */ free(errstr); @@ -137,12 +137,7 @@ static int proceed(char * value, size_t len, struct fd_list * candidates, int co } /* From this point, the expression matched the AVP value */ - TRACE_DEBUG(FULL, "[rt_ereg] Match: '%s' to value '%.*s' => '%s' += %d", - r->pattern, - (int)len, - value, - r->server, - r->score); + LOG_D("[rt_ereg] Match: '%s' to value '%.*s' => '%s' += %d", r->pattern, (int)len, value, r->server, r->score); for (c = candidates->next; c != candidates; c = c->next) { struct rtd_candidate * cand = (struct rtd_candidate *)c; @@ -167,7 +162,7 @@ static int find_avp(msg_or_avp *where, int conf_index, int level, struct fd_list /* iterate over all AVPs and try to find a match */ // for (i = 0; i<rtereg_conf[j].level; i++) { if (level > rtereg_conf[conf_index].level) { - TRACE_DEBUG(INFO, "internal error, dug too deep"); + LOG_E("internal error, dug too deep"); return 1; } what = rtereg_conf[conf_index].avps[level]; @@ -178,11 +173,15 @@ static int find_avp(msg_or_avp *where, int conf_index, int level, struct fd_list CHECK_FCT(fd_msg_avp_hdr(nextavp, &avp_hdr)); if ((avp_hdr->avp_code == dictdata.avp_code) && (avp_hdr->avp_vendor == dictdata.avp_vendor)) { if (level != rtereg_conf[conf_index].level - 1) { - TRACE_DEBUG(INFO, "[rt_ereg] found grouped AVP %d (vendor %d), digging deeper", avp_hdr->avp_code, avp_hdr->avp_vendor); + LOG_D("[rt_ereg] found grouped AVP %d (vendor %d), digging deeper", avp_hdr->avp_code, avp_hdr->avp_vendor); CHECK_FCT(find_avp(nextavp, conf_index, level+1, candidates)); } else { - TRACE_DEBUG(INFO, "[rt_ereg] found AVP %d (vendor %d)", avp_hdr->avp_code, avp_hdr->avp_vendor); + struct dictionary * dict; + LOG_D("[rt_ereg] found AVP %d (vendor %d)", avp_hdr->avp_code, avp_hdr->avp_vendor); + CHECK_FCT(fd_dict_getdict(what, &dict)); + CHECK_FCT_DO(fd_msg_parse_dict(nextavp, dict, NULL), /* nothing */); if (avp_hdr->avp_value != NULL) { + LOG_A("avp_hdr->avp_value NOT NULL, matching"); #ifndef HAVE_REG_STARTEND int ret; @@ -191,8 +190,12 @@ static int find_avp(msg_or_avp *where, int conf_index, int level, struct fd_list /* Augment the buffer if needed */ if (avp_hdr->avp_value->os.len >= bufsz) { - CHECK_MALLOC_DO( buf = realloc(buf, avp_hdr->avp_value->os.len + 1), + char *newbuf; + CHECK_MALLOC_DO( newbuf = realloc(buf, avp_hdr->avp_value->os.len + 1), { pthread_mutex_unlock(&mtx); return ENOMEM; } ); + /* Update buffer and buffer size */ + buf = newbuf; + bufsz = avp_hdr->avp_value->os.len + 1; } /* Copy the AVP value */ @@ -223,7 +226,7 @@ static int rtereg_out(void * cbdata, struct msg ** pmsg, struct fd_list * candid msg_or_avp *where; int j, ret; - TRACE_ENTRY("%p %p %p", cbdata, *pmsg, candidates); + LOG_A("[rt_ereg] rtereg_out arguments: %p %p %p", cbdata, *pmsg, candidates); CHECK_PARAMS(pmsg && *pmsg && candidates); @@ -238,7 +241,7 @@ static int rtereg_out(void * cbdata, struct msg ** pmsg, struct fd_list * candid for (j=0; j<rtereg_conf_size; j++) { where = *pmsg; - TRACE_DEBUG(INFO, "[rt_ereg] iterating over AVP group %d", j); + LOG_D("[rt_ereg] iterating over AVP group %d", j); if ((ret=find_avp(where, j, 0, candidates)) != 0) { break; } @@ -301,12 +304,12 @@ static void sig_hdlr(void) /* entry point */ static int rtereg_entry(char * conffile) { - TRACE_ENTRY("%p", conffile); + LOG_A("[rt_ereg] started with conffile '%p'", conffile); rt_ereg_config_file = conffile; if (rtereg_init() != 0) { - return 1; + return 1; } /* Register reload callback */ @@ -320,12 +323,11 @@ static int rtereg_entry(char * conffile) static int rtereg_init_config(void) { /* Initialize the configuration */ - if ((rtereg_conf=malloc(sizeof(*rtereg_conf))) == NULL) { - TRACE_DEBUG(INFO, "malloc failured"); - return 1; + if ((rtereg_conf=calloc(sizeof(*rtereg_conf), 1)) == NULL) { + LOG_E("[rt_ereg] malloc failured"); + return 1; } rtereg_conf_size = 1; - memset(rtereg_conf, 0, sizeof(*rtereg_conf)); /* Parse the configuration file */ CHECK_FCT( rtereg_conf_handle(rt_ereg_config_file) ); @@ -366,20 +368,29 @@ static int rtereg_init(void) /* Unload */ static void rtereg_fini(void) { - TRACE_ENTRY(); - /* Unregister the cb */ CHECK_FCT_DO( fd_rt_out_unregister ( rtereg_hdl, NULL ), /* continue */ ); - /* Destroy the data */ - rtereg_conf_free(rtereg_conf, rtereg_conf_size); - rtereg_conf = NULL; - rtereg_conf_size = 0; #ifndef HAVE_REG_STARTEND free(buf); buf = NULL; + bufsz = 0; #endif /* HAVE_REG_STARTEND */ + if (pthread_rwlock_wrlock(&rte_lock) != 0) { + fd_log_error("%s: write-locking failed in fini, giving up", MODULE_NAME); + return; + } + /* Destroy the data */ + rtereg_conf_free(rtereg_conf, rtereg_conf_size); + rtereg_conf = NULL; + rtereg_conf_size = 0; + + if (pthread_rwlock_unlock(&rte_lock) != 0) { + fd_log_error("%s: write-unlocking failed in fini", MODULE_NAME); + return; + } + /* Done */ return ; } diff --git a/extensions/rt_ereg/rtereg.h b/extensions/rt_ereg/rtereg.h index 4045f4a..741c314 100644 --- a/extensions/rt_ereg/rtereg.h +++ b/extensions/rt_ereg/rtereg.h @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2011, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/rt_ereg/rtereg_conf.l b/extensions/rt_ereg/rtereg_conf.l index 8a281a5..b0a6cb3 100644 --- a/extensions/rt_ereg/rtereg_conf.l +++ b/extensions/rt_ereg/rtereg_conf.l @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * @@ -80,7 +80,7 @@ qstring \"[^\"\n]*\" /* Match a quoted string. */ CHECK_MALLOC_DO( yylval->string = strdup(yytext+1), { - TRACE_DEBUG(INFO, "Unable to copy the string '%s': %s", yytext, strerror(errno)); + LOG_E("[rt_ereg] unable to copy the string '%s': %s", yytext, strerror(errno)); return LEX_ERROR; /* trig an error in yacc parser */ } ); yylval->string[strlen(yytext) - 2] = '\0'; diff --git a/extensions/rt_ereg/rtereg_conf.y b/extensions/rt_ereg/rtereg_conf.y index 7df1086..28174f8 100644 --- a/extensions/rt_ereg/rtereg_conf.y +++ b/extensions/rt_ereg/rtereg_conf.y @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2013, WIDE Project and NICT * +* Copyright (c) 2019, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * @@ -61,15 +61,13 @@ int rtereg_conf_handle(char * conffile) extern FILE * rtereg_confin; int ret; - TRACE_ENTRY("%p", conffile); - - TRACE_DEBUG (FULL, "Parsing configuration file: %s...", conffile); + LOG_D("[rt_ereg] parsing configuration file '%s'", conffile); rtereg_confin = fopen(conffile, "r"); if (rtereg_confin == NULL) { ret = errno; fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret)); - TRACE_DEBUG (INFO, "rt_ereg: error occurred, message logged -- configuration file."); + LOG_E("[rt_ereg] error occurred, message logged -- configuration file."); return ret; } @@ -79,19 +77,19 @@ int rtereg_conf_handle(char * conffile) fclose(rtereg_confin); if (rtereg_conf[rtereg_conf_size-1].finished == 0) { - TRACE_DEBUG(INFO, "rt_ereg: configuration invalid, AVP ended without OCTETSTRING AVP"); + LOG_E("[rt_ereg] configuration invalid, AVP ended without OCTETSTRING AVP"); return EINVAL; } if (ret != 0) { - TRACE_DEBUG(INFO, "rt_ereg: unable to parse the configuration file."); + LOG_E("[rt_ereg] unable to parse the configuration file."); return EINVAL; } else { int i, sum = 0; for (i=0; i<rtereg_conf_size; i++) { sum += rtereg_conf[i].rules_nb; } - TRACE_DEBUG(FULL, "[rt-ereg] Added %d rules successfully.", sum); + LOG_D("[rt-ereg] Added %d rules successfully.", sum); } return 0; @@ -104,25 +102,25 @@ int avp_add(const char *name) if (rtereg_conf[rtereg_conf_size-1].finished) { if ((ret = realloc(rtereg_conf, sizeof(*rtereg_conf)*(rtereg_conf_size+1))) == NULL) { - TRACE_DEBUG(INFO, "rt_ereg: realloc failed"); + LOG_E("[rt_ereg] realloc failed"); return -1; } rtereg_conf_size++; rtereg_conf = ret; memset(&rtereg_conf[rtereg_conf_size-1], 0, sizeof(*rtereg_conf)); - TRACE_DEBUG(INFO, "rt_ereg: New AVP group found starting with %s", name); + LOG_D("[rt_ereg] New AVP group found starting with %s", name); } level = rtereg_conf[rtereg_conf_size-1].level + 1; if ((ret = realloc(rtereg_conf[rtereg_conf_size-1].avps, sizeof(*rtereg_conf[rtereg_conf_size-1].avps)*level)) == NULL) { - TRACE_DEBUG(INFO, "rt_ereg: realloc failed"); + LOG_E("[rt_ereg] realloc failed"); return -1; } rtereg_conf[rtereg_conf_size-1].avps = ret; CHECK_FCT_DO( fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME_ALL_VENDORS, name, &rtereg_conf[rtereg_conf_size-1].avps[level-1], ENOENT ), { - TRACE_DEBUG(INFO, "rt_ereg: Unable to find '%s' AVP in the loaded dictionaries.", name); + LOG_E("[rt_ereg] Unable to find '%s' AVP in the loaded dictionaries.", name); return -1; } ); @@ -133,7 +131,7 @@ int avp_add(const char *name) if (data.avp_basetype == AVP_TYPE_OCTETSTRING) { rtereg_conf[rtereg_conf_size-1].finished = 1; } else if (data.avp_basetype != AVP_TYPE_GROUPED) { - TRACE_DEBUG(INFO, "rt_ereg: '%s' AVP is not an OCTETSTRING nor GROUPED AVP (%d).", name, data.avp_basetype); + LOG_E("[rt_ereg] '%s' AVP is not an OCTETSTRING nor GROUPED AVP (%d).", name, data.avp_basetype); return -1; } } @@ -147,7 +145,7 @@ int rtereg_conflex(YYSTYPE *lvalp, YYLTYPE *llocp); /* Function to report the errors */ void yyerror (YYLTYPE *ploc, char * conffile, char const *s) { - TRACE_DEBUG(INFO, "rt_ereg: error in configuration parsing"); + LOG_E("[rt_ereg] error in configuration parsing"); if (ploc->first_line != ploc->last_line) fd_log_debug("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s); @@ -222,7 +220,7 @@ rule: QSTRING ':' QSTRING '+' '=' INTEGER ';' size_t bl; /* Error while compiling the regex */ - TRACE_DEBUG(INFO, "rt_ereg: error while compiling the regular expression '%s':", new->pattern); + LOG_E("[rt_ereg] error while compiling the regular expression '%s':", new->pattern); /* Get the error message size */ bl = regerror(err, &new->preg, NULL, 0); @@ -232,7 +230,7 @@ rule: QSTRING ':' QSTRING '+' '=' INTEGER ';' /* Get the error message content */ regerror(err, &new->preg, buf, bl); - TRACE_DEBUG(INFO, "\t%s", buf); + LOG_E("\t%s", buf); /* Free the buffer, return the error */ free(buf); diff --git a/extensions/rt_load_balance/rt_load_balance.c b/extensions/rt_load_balance/rt_load_balance.c index 9883a67..c2316c4 100644 --- a/extensions/rt_load_balance/rt_load_balance.c +++ b/extensions/rt_load_balance/rt_load_balance.c @@ -30,9 +30,22 @@ *********************************************************************************************************/ #include <freeDiameter/extension.h> +#include <limits.h> +#include <time.h> + +struct best_candidate_entry { + long load; + struct rtd_candidate *cand; +}; + +static unsigned int seed; + +#define MODULE_NAME "rt_load_balance" /* - * Load balancing extension. Send request to least-loaded node. + * Load balancing extension. Send request to least-loaded node: Add a + * score of 1 to the least loaded candidates among those with highest + * score. */ /* The callback for load balancing the requests across the peers */ @@ -40,37 +53,82 @@ static int rt_load_balancing(void * cbdata, struct msg ** pmsg, struct fd_list * { struct fd_list *lic; struct msg * msg = *pmsg; - + int max_score = -1; + int max_score_count = 0; + TRACE_ENTRY("%p %p %p", cbdata, msg, candidates); - + CHECK_PARAMS(msg && candidates); - + + /* Check if it is worth processing the message */ if (FD_IS_LIST_EMPTY(candidates)) return 0; - /* load balancing */ + /* find out maximal score and how many candidates have it */ for (lic = candidates->next; lic != candidates; lic = lic->next) { struct rtd_candidate * cand = (struct rtd_candidate *) lic; - struct peer_hdr *peer; - long to_receive, to_send, load; - int score; - CHECK_FCT(fd_peer_getbyid(cand->diamid, cand->diamidlen, 0, &peer)); - CHECK_FCT(fd_peer_get_load_pending(peer, &to_receive, &to_send)); - load = to_receive + to_send; - /* other routing mechanisms need to add to the - * appropriate entries so their base value is high - * enough that they are considered */ - - /* logarithmic scaling */ - int load_log = 0; - while (load > 0) { - load_log++; - load /= 2; - } - score = cand->score; - cand->score -= load_log; - TRACE_DEBUG(FULL, "evaluated peer `%.*s', score was %d, now %d", (int)cand->diamidlen, cand->diamid, score, cand->score); + if (max_score < cand->score) { + max_score = cand->score; + max_score_count = 1; + } + else if (cand->score == max_score) { + max_score_count++; + } + } + + if (max_score_count > 0) { + /* find out minimum load among those with maximal + * score, and how many candidates have it */ + struct best_candidate_entry best_candidates[max_score_count]; + long min_load = LONG_MAX; + int min_load_count = 0; + int j; + + for (j = 0, lic = candidates->next; lic != candidates; lic = lic->next) { + struct rtd_candidate * cand = (struct rtd_candidate *) lic; + if (cand->score == max_score) { + long to_receive, to_send, load; + struct peer_hdr *peer; + CHECK_FCT(fd_peer_getbyid(cand->diamid, cand->diamidlen, 0, &peer)); + CHECK_FCT(fd_peer_get_load_pending(peer, &to_receive, &to_send)); + load = to_receive + to_send; + + best_candidates[j].cand = cand; + best_candidates[j].load = load; + j++; + + if (min_load > load) { + min_load = load; + min_load_count = 1; + } else if (min_load == load) { + min_load_count++; + } + } + } + + /* increase score by 1 for all entries with minimum + * load, and further increase by 1 for one randomly + * chosen candidate */ + if (min_load_count > 0) { + int lucky_candidate = rand_r(&seed) % min_load_count; + int i; + for (j = 0, i = 0; j < max_score_count; j++) { + struct best_candidate_entry *entry = best_candidates+j; + if (entry->load == min_load) { + struct rtd_candidate *cand = entry->cand; + int old_score = cand->score; + cand->score++; + TRACE_DEBUG(FULL, "%s: boosting peer `%.*s', score was %d, now %d; load was %ld", MODULE_NAME, (int)cand->diamidlen, cand->diamid, old_score, cand->score, entry->load); + + if (i == lucky_candidate) { + cand->score++; + TRACE_DEBUG(FULL, "%s: boosting lucky peer `%.*s', score was %d, now %d; load was %ld", MODULE_NAME, (int)cand->diamidlen, cand->diamid, old_score, cand->score, entry->load); + } + i++; + } + } + } } return 0; @@ -85,6 +143,8 @@ static int rt_load_balance_entry(char * conffile) /* Register the callback */ CHECK_FCT(fd_rt_out_register(rt_load_balancing, NULL, 10, &rt_load_balancing_hdl)); + seed = (unsigned int)time(NULL); + TRACE_DEBUG(INFO, "Extension 'Load Balancing' initialized"); return 0; } @@ -97,4 +157,4 @@ void fd_ext_fini(void) return ; } -EXTENSION_ENTRY("rt_load_balance", rt_load_balance_entry); +EXTENSION_ENTRY(MODULE_NAME, rt_load_balance_entry); diff --git a/extensions/rt_randomize/rt_randomize.c b/extensions/rt_randomize/rt_randomize.c index a606451..38e677b 100644 --- a/extensions/rt_randomize/rt_randomize.c +++ b/extensions/rt_randomize/rt_randomize.c @@ -46,11 +46,11 @@ static int rt_randomizing(void * cbdata, struct msg ** pmsg, struct fd_list * ca struct msg * msg = *pmsg; int max_score = -1; int max_score_count = 0; - + TRACE_ENTRY("%p %p %p", cbdata, msg, candidates); - + CHECK_PARAMS(msg && candidates); - + /* Check if it is worth processing the message */ if (FD_IS_LIST_EMPTY(candidates)) return 0; diff --git a/extensions/rt_rewrite/rt_rewrite.c b/extensions/rt_rewrite/rt_rewrite.c index 7da26ec..dbceabe 100644 --- a/extensions/rt_rewrite/rt_rewrite.c +++ b/extensions/rt_rewrite/rt_rewrite.c @@ -86,6 +86,7 @@ static void store_free(struct store *store) return; } +/* TODO: convert to fd_msg_search_avp ? */ static int fd_avp_search_avp(msg_or_avp *where, struct dict_object *what, struct avp **avp) { struct avp *nextavp; @@ -391,26 +392,40 @@ static int rt_rewrite(void * cbdata, struct msg **msg) return 0; } - if ((store=store_new()) == NULL) { - fd_log_error("%s: malloc failure"); - return ENOMEM; + if (pthread_rwlock_wrlock(&rt_rewrite_lock) != 0) { + fd_log_error("%s: locking failed, aborting message rewrite", MODULE_NAME); + return errno; } + if ((ret = fd_msg_parse_dict(*msg, fd_g_config->cnf_dict, NULL)) != 0) { fd_log_notice("%s: error parsing message", MODULE_NAME); - free(store); + pthread_rwlock_unlock(&rt_rewrite_lock); return ret; } if ((ret=fd_msg_browse(*msg, MSG_BRW_FIRST_CHILD, &avp, NULL)) != 0) { fd_log_notice("internal error: message has no child"); - free(store); + pthread_rwlock_unlock(&rt_rewrite_lock); return ret; } + if ((store=store_new()) == NULL) { + fd_log_error("%s: malloc failure"); + pthread_rwlock_unlock(&rt_rewrite_lock); + return ENOMEM; + } if (replace_avps(*msg, avp, avp_match_start->children, store) != 0) { fd_log_error("%s: replace AVP function failed", MODULE_NAME); store_free(store); + pthread_rwlock_unlock(&rt_rewrite_lock); return -1; } - return store_apply(*msg, &store); + ret = store_apply(*msg, &store); + + if (pthread_rwlock_unlock(&rt_rewrite_lock) != 0) { + fd_log_error("%s: unlocking failed, returning error", MODULE_NAME); + return errno; + } + + return ret; } /* entry point */ diff --git a/extensions/rt_rewrite/rt_rewrite_conf.y b/extensions/rt_rewrite/rt_rewrite_conf.y index 851bdbf..d648a78 100644 --- a/extensions/rt_rewrite/rt_rewrite_conf.y +++ b/extensions/rt_rewrite/rt_rewrite_conf.y @@ -107,7 +107,11 @@ static void compare_avp_type(const char *source, const char *dest) fd_dict_getval(model_source, &dictdata_source); fd_dict_getval(model_dest, &dictdata_dest); if (dictdata_source.avp_basetype != dictdata_dest.avp_basetype) { - fd_log_notice("rt_rewrite: type mismatch: %s (type %s) mapped to %s (type %s) (continuing anyway)", source, type_base_name[dictdata_source.avp_basetype], dest, type_base_name[dictdata_dest.avp_basetype]); + if (dictdata_source.avp_basetype == AVP_TYPE_OCTETSTRING) { + fd_log_error("rt_rewrite: type mismatch: %s (type %s) mapped to %s (type %s): OctetString cannot be mapped to non-OctetString type", source, type_base_name[dictdata_source.avp_basetype], dest, type_base_name[dictdata_dest.avp_basetype]); + return; + } + fd_log_error("rt_rewrite: type mismatch: %s (type %s) mapped to %s (type %s) (continuing anyway)", source, type_base_name[dictdata_source.avp_basetype], dest, type_base_name[dictdata_dest.avp_basetype]); } return; } diff --git a/extensions/test_app/ta_cli.c b/extensions/test_app/ta_cli.c index 686338a..76a457a 100644 --- a/extensions/test_app/ta_cli.c +++ b/extensions/test_app/ta_cli.c @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Author: Sebastien Decugis <sdecugis@freediameter.net> * * * -* Copyright (c) 2015, WIDE Project and NICT * +* Copyright (c) 2016, WIDE Project and NICT * * All rights reserved. * * * * Redistribution and use of this software in source and binary forms, with or without modification, are * diff --git a/extensions/test_cc/test_cc.c b/extensions/test_cc/test_cc.c index ed5a940..959e72e 100644 --- a/extensions/test_cc/test_cc.c +++ b/extensions/test_cc/test_cc.c @@ -35,9 +35,31 @@ struct disp_hdl *ccr_handler_hdl; +struct dict_object * aai_avp_do; /* cache the Auth-Application-Id dictionary object */ +struct dict_object * crn_avp_do; /* cache the CC-Request-Number dictionary object */ +struct dict_object * crt_avp_do; /* cache the CC-Request-Type dictionary object */ + +#define MODULE_NAME "test_cc" + +struct statistics { + uint64_t sent; + time_t first; + time_t last; +} statistics; + +void print_statistics(void) { + if (statistics.first == 0 || statistics.last == 0 || statistics.last == statistics.first) { + return; + } + + fd_log_error("%s: %lld CCA messages sent in %llds (%.2f messages/second)", fd_g_config->cnf_diamid, + (long long)statistics.sent, (long long)(statistics.last-statistics.first), (float)statistics.sent / (statistics.last-statistics.first)); +} + static int ccr_handler(struct msg ** msg, struct avp * avp, struct session * sess, void * data, enum disp_action * act) { struct msg_hdr *hdr = NULL; + time_t now; TRACE_ENTRY("%p %p %p %p", msg, avp, sess, act); @@ -50,24 +72,93 @@ static int ccr_handler(struct msg ** msg, struct avp * avp, struct session * ses struct msg *answer; os0_t s; size_t sl; + struct avp *avp; + union avp_value val; + struct avp *avp_data; + struct avp_hdr *ahdr; + uint32_t crt, crn; + + /* get some necessary information from request */ + if (fd_msg_search_avp(*msg, crt_avp_do, &avp_data) < 0 || avp_data == NULL) { + fd_log_error("[%s] CC-Request-Type not found in CCR", MODULE_NAME); + return 0; + } + if (fd_msg_avp_hdr(avp_data, &ahdr) < 0) { + fd_log_error("[%s] error parsing CC-Request-Type in CCR", MODULE_NAME); + return 0; + } + crt = ahdr->avp_value->i32; + if (fd_msg_search_avp(*msg, crn_avp_do, &avp_data) < 0 || avp_data == NULL) { + fd_log_error("[%s] CC-Request-Number not found in CCR", MODULE_NAME); + return 0; + } + if (fd_msg_avp_hdr(avp_data, &ahdr) < 0) { + fd_log_error("[%s] error parsing CC-Request-Type in CCR", MODULE_NAME); + return 0; + } + crn = ahdr->avp_value->i32; /* Create the answer message */ CHECK_FCT(fd_msg_new_answer_from_req(fd_g_config->cnf_dict, msg, 0)); answer = *msg; - /* TODO copy/fill in AVPs in the answer */ + + /* TODO copy/fill in more AVPs in the answer */ + + /* Auth-Application-Id */ + fd_msg_avp_new(aai_avp_do, 0, &avp); + memset(&val, 0, sizeof(val)); + val.i32 = 4; + if (fd_msg_avp_setvalue(avp, &val) != 0) { + fd_msg_free(answer); + fd_log_error("can't set value for 'Auth-Application-Id' for 'Credit-Control-Request' message"); + return 0; + } + fd_msg_avp_add(answer, MSG_BRW_LAST_CHILD, avp); + + /* CC-Request-Type */ + fd_msg_avp_new(crt_avp_do, 0, &avp); + memset(&val, 0, sizeof(val)); + val.i32 = crt; + if (fd_msg_avp_setvalue(avp, &val) != 0) { + fd_msg_free(answer); + fd_log_error("can't set value for 'CC-Request-Type' for 'Credit-Control-Request' message"); + return 0; + } + fd_msg_avp_add(answer, MSG_BRW_LAST_CHILD, avp); + + /* CC-Request-Number */ + fd_msg_avp_new(crn_avp_do, 0, &avp); + memset(&val, 0, sizeof(val)); + val.i32 = crn; + if (fd_msg_avp_setvalue(avp, &val) != 0) { + fd_msg_free(answer); + fd_log_error("can't set value for 'CC-Request-Number' for 'Credit-Control-Request' message"); + return 0; + } + fd_msg_avp_add(answer, MSG_BRW_LAST_CHILD, avp); + /* TODO make result configurable (depending on an AVP?) */ CHECK_FCT(fd_msg_rescode_set(answer, "DIAMETER_SUCCESS", NULL, NULL, 1)); - fd_log_notice("--------------Received the following Credit Control Request:--------------"); + fd_log_debug("--------------Received the following Credit Control Request:--------------"); CHECK_FCT(fd_sess_getsid(sess, &s, &sl)); - fd_log_notice("Session: %.*s",(int)sl, s); + fd_log_debug("Session: %.*s",(int)sl, s); - fd_log_notice("----------------------------------------------------------------------"); + fd_log_debug("----------------------------------------------------------------------"); /* Send the answer */ CHECK_FCT(fd_msg_send(msg, NULL, NULL)); - + now = time(NULL); + if (!statistics.first) { + statistics.first = now; + } + if (statistics.last != now) { + print_statistics(); + } + statistics.last = now; + statistics.sent++; + fd_log_debug("reply sent"); } else { /* We received an answer message, just discard it */ CHECK_FCT(fd_msg_free(*msg)); @@ -84,6 +175,13 @@ static int cc_entry(char * conffile) TRACE_ENTRY("%p", conffile); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Auth-Application-Id", &aai_avp_do, ENOENT), + { LOG_E("Unable to find 'Auth-Application-Id' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "CC-Request-Number", &crn_avp_do, ENOENT), + { LOG_E("Unable to find 'CC-Request-Number' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "CC-Request-Type", &crt_avp_do, ENOENT), + { LOG_E("Unable to find 'CC-Request-Type' AVP in the loaded dictionaries."); }); + memset(&data, 0, sizeof(data)); /* Advertise the support for the Diameter Credit Control application in the peer */ @@ -97,4 +195,19 @@ static int cc_entry(char * conffile) return 0; } -EXTENSION_ENTRY("test_cc", cc_entry); +/* And terminate it */ +void fd_ext_fini(void) +{ + /* Unregister the callbacks */ + if (ccr_handler_hdl) { + CHECK_FCT_DO( fd_disp_unregister(&ccr_handler_hdl, NULL), ); + ccr_handler_hdl = NULL; + } + + print_statistics(); + + return; +} + + +EXTENSION_ENTRY(MODULE_NAME, cc_entry); diff --git a/extensions/test_ccload/CMakeLists.txt b/extensions/test_ccload/CMakeLists.txt new file mode 100644 index 0000000..405331d --- /dev/null +++ b/extensions/test_ccload/CMakeLists.txt @@ -0,0 +1,13 @@ +# The test_ccload extension +PROJECT("Credit Control load generator server" C) + +FD_ADD_EXTENSION(test_ccload test_ccload.c) + + +#### +## INSTALL section ## + +INSTALL(TARGETS test_ccload + LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX} + COMPONENT freeDiameter-debug-tools) + diff --git a/extensions/test_ccload/test_ccload.c b/extensions/test_ccload/test_ccload.c new file mode 100644 index 0000000..3c80bb7 --- /dev/null +++ b/extensions/test_ccload/test_ccload.c @@ -0,0 +1,444 @@ +/********************************************************************************************************** + * Software License Agreement(BSD License) * + * Author: Thomas Klausner <tk@giga.or.at> * + * * + * Copyright(c) 2019, Thomas Klausner * + * All rights reserved. * + * * + * Written under contract by nfotex IT GmbH, http://nfotex.com/ * + * * + * Redistribution and use of this software in source and binary forms, with or without modification, are * + * permitted provided that the following conditions are met: * + * * + * * Redistributions of source code must retain the above * + * copyright notice, this list of conditions and the * + * following disclaimer. * + * * + * * Redistributions in binary form must reproduce the above * + * copyright notice, this list of conditions and the * + * following disclaimer in the documentation and/or other * + * materials provided with the distribution. * + * * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT * + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * + * TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * + **********************************************************************************************************/ + +/* This extension waits for a signal (SIGUSR2). When it gets it, it + * generates messages as quickly as possible to the configured target + * host; a second SIGUSR2 signal will stop this. + * If the target host starts with "REALM:", send to that Destination-Realm instead + * of a particular host. */ + +#include <freeDiameter/extension.h> + +#include <pthread.h> +#include <signal.h> + +#define MODULE_NAME "test_ccload" + +static pthread_t gen_thr = (pthread_t)NULL; +struct disp_hdl *ccr_local_hdl; +struct fd_rt_fwd_hdl *ccr_fwd_hdl; +volatile int do_generate = 0; + +const char *target = NULL; + +struct dict_object * aai_avp_do; /* cache the Auth-Application-Id dictionary object */ +struct dict_object * crn_avp_do; /* cache the CC-Request-Number dictionary object */ +struct dict_object * crt_avp_do; /* cache the CC-Request-Type dictionary object */ +struct dict_object * dh_avp_do; /* cache the Destination-Host dictionary object */ +struct dict_object * dr_avp_do; /* cache the Destination-Realm dictionary object */ +struct dict_object * rc_avp_do; /* cache the Result-Code dictionary object */ +struct dict_object * sci_avp_do; /* cache the Service-Context-Id dictionary object */ +struct dict_object * si_avp_do; /* cache the Session-Id dictionary object */ +struct dict_object * pi_avp_do; /* cache the Proxy-Info dictionary object */ +struct dict_object * ph_avp_do; /* cache the Proxy-Host dictionary object */ +struct dict_object * ps_avp_do; /* cache the Proxy-State dictionary object */ + +struct dict_object * ccr_do; /* cache the Credit-Control-Request command dictionary object */ + +struct statistics { + uint64_t sent; + uint64_t success; + uint64_t error; + time_t first; + time_t first_reply; + time_t last; + time_t last_reply; +} statistics; + +void print_statistics(void) { + uint64_t missing, received; + + if (statistics.first == 0 || statistics.last == 0 || statistics.last == statistics.first) { + return; + } + + received = statistics.error + statistics.success; + missing = statistics.sent - received; + + fd_log_error("%s: %lld CCR messages sent in %llds (%.2f messages/second), %lld CCA messages received in %llds (%.2f messages/second), %lld success (%.2f%%), %lld errors (%.2f%%), %lld missing (%.2f%%)", + fd_g_config->cnf_diamid, + (long long)statistics.sent, (long long)(statistics.last-statistics.first), (float)statistics.sent / (statistics.last-statistics.first), + (long long)received, (long long)(statistics.last_reply-statistics.first_reply), (float)received / (statistics.last_reply-statistics.first_reply), + (long long)statistics.success, + 100*(float)statistics.success/statistics.sent, (long long)statistics.error, 100*(float)statistics.error/statistics.sent, + missing, 100*(float)missing/statistics.sent); +} + +static int handle_message(struct msg **msg) { + struct msg_hdr *hdr = NULL; + struct avp_hdr *ahdr = NULL; + struct avp *rc; + + if (msg == NULL) { + fd_log_error("[%s] NULL CCA message", MODULE_NAME); + return -1; + } + + CHECK_FCT(fd_msg_hdr(*msg, &hdr)); + /* handle CCAs only */ + if ((hdr->msg_code != 272) || (hdr->msg_flags & CMD_FLAG_REQUEST)) { + fd_log_error("[%s] invalid message type (type %d, flags 0x%x)", MODULE_NAME, hdr->msg_code, hdr->msg_flags); + return -1; + } + + if (statistics.first_reply == 0) { + statistics.first_reply = time(NULL); + } + /* Answer received, check it */ + if (fd_msg_search_avp(*msg, rc_avp_do, &rc) < 0 || rc == NULL) { + fd_log_error("[%s] Result-Code not found in CCA", MODULE_NAME); + return -1; + } + + if (fd_msg_avp_hdr(rc, &ahdr) < 0) { + fd_log_error("[%s] error parsing Result-Code in CCA", MODULE_NAME); + return -1; + } + statistics.last_reply = time(NULL); + fd_log_debug("Credit-Control-Answer with Result-Code %d received", ahdr->avp_value->i32); + switch (ahdr->avp_value->i32/1000) { + case 2: + statistics.success++; + break; + default: + statistics.error++; + break; + } + if (statistics.sent - statistics.error - statistics.success == 0) { + print_statistics(); + } + + return 0; +} + +static int ccr_local_handler(struct msg ** msg, struct avp * avp, struct session * sess, void * data, enum disp_action * act) +{ + fd_log_debug("[%s] CCR local handler called", MODULE_NAME); + + if (handle_message(msg) < 0) { + fd_log_error("dropping message"); + CHECK_FCT(fd_msg_free(*msg)); + *msg = NULL; + return 0; + } + + CHECK_FCT(fd_msg_free(*msg)); + *msg = NULL; + return 0; +} + +static int ccr_fwd_handler(void *cb_data, struct msg **msg) +{ + fd_log_debug("[%s] CCR FWD handler called", MODULE_NAME); + + if (handle_message(msg) < 0) { + return 0; + } + + return 0; +} + +/* create message to send */ +struct msg *create_message(const char *destination) +{ + struct msg *msg; + struct avp *avp, *avp1; + union avp_value val; + struct msg_hdr *msg_hdr; + const char *realm; + char session_id[800]; + const char *service_context_id = "version2.clci.ipc@vodafone.com"; + const char *proxy_host = "Dummy-Proxy-Host-to-Increase-Package-Size"; + const char *proxy_state = "This is just data to increase the package size\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; + + if (fd_msg_new(ccr_do, MSGFL_ALLOC_ETEID, &msg) != 0) { + fd_log_error("can't create new 'Credit-Control-Request' message"); + return NULL; + } + + /* Application Id in header needs to be set to for since this Credit-Control-Request is for Diameter Credit Control */ + if (fd_msg_hdr(msg, &msg_hdr) != 0) { + fd_log_error("can't get message header for 'Credit-Control-Request' message"); + fd_msg_free(msg); + return NULL; + } + msg_hdr->msg_appl = 4; + + if (fd_msg_add_origin(msg, 0) != 0) { + fd_log_error("can't set Origin for 'Credit-Control-Request' message"); + fd_msg_free(msg); + return NULL; + } + + if (strncmp("REALM:", target, 6) != 0) { + /* Destination-Host */ + fd_msg_avp_new(dh_avp_do, 0, &avp); + memset(&val, 0, sizeof(val)); + val.os.data = (uint8_t *)target; + val.os.len = strlen(target); + if (fd_msg_avp_setvalue(avp, &val) != 0) { + fd_msg_free(msg); + fd_log_error("can't set value for 'Destination-Host' for 'Credit-Control-Request' message"); + return NULL; + } + fd_msg_avp_add(msg, MSG_BRW_LAST_CHILD, avp); + + if ((realm = strchr(target, '.')) == NULL) { + fd_msg_free(msg); + fd_log_error("can't extract realm from host '%s'", target); + return NULL; + } + /* skip dot */ + realm++; + } else { + realm = target + 6; /* skip "REALM:" */ + } + /* Destination-Realm */ + fd_msg_avp_new(dr_avp_do, 0, &avp); + memset(&val, 0, sizeof(val)); + val.os.data = (uint8_t *)realm; + val.os.len = strlen(realm); + if (fd_msg_avp_setvalue(avp, &val) != 0) { + fd_msg_free(msg); + fd_log_error("can't set value for 'Destination-Realm' for 'Credit-Control-Request' message"); + return NULL; + } + fd_msg_avp_add(msg, MSG_BRW_LAST_CHILD, avp); + + /* Session-Id */ + snprintf(session_id, sizeof(session_id), "session %ld", random()); + fd_msg_avp_new(si_avp_do, 0, &avp); + memset(&val, 0, sizeof(val)); + val.os.data = (uint8_t *)session_id; + val.os.len = strlen(session_id); + if (fd_msg_avp_setvalue(avp, &val) != 0) { + fd_msg_free(msg); + fd_log_error("can't set value for 'Session-Id' for 'Credit-Control-Request' message"); + return NULL; + } + fd_msg_avp_add(msg, MSG_BRW_FIRST_CHILD, avp); + + /* Auth-Application-Id */ + fd_msg_avp_new(aai_avp_do, 0, &avp); + memset(&val, 0, sizeof(val)); + val.i32 = 4; + if (fd_msg_avp_setvalue(avp, &val) != 0) { + fd_msg_free(msg); + fd_log_error("can't set value for 'Auth-Application-Id' for 'Credit-Control-Request' message"); + return NULL; + } + fd_msg_avp_add(msg, MSG_BRW_LAST_CHILD, avp); + + /* Service-Context-Id */ + fd_msg_avp_new(sci_avp_do, 0, &avp); + memset(&val, 0, sizeof(val)); + val.os.data = (uint8_t *)service_context_id; + val.os.len = strlen(service_context_id); + if (fd_msg_avp_setvalue(avp, &val) != 0) { + fd_msg_free(msg); + fd_log_error("can't set value for 'Service-Context-Id' for 'Credit-Control-Request' message"); + return NULL; + } + fd_msg_avp_add(msg, MSG_BRW_LAST_CHILD, avp); + + /* CC-Request-Type */ + fd_msg_avp_new(crt_avp_do, 0, &avp); + memset(&val, 0, sizeof(val)); + val.i32 = 1; /* Initial */ + if (fd_msg_avp_setvalue(avp, &val) != 0) { + fd_msg_free(msg); + fd_log_error("can't set value for 'CC-Request-Type' for 'Credit-Control-Request' message"); + return NULL; + } + fd_msg_avp_add(msg, MSG_BRW_LAST_CHILD, avp); + + /* CC-Request-Number */ + fd_msg_avp_new(crn_avp_do, 0, &avp); + memset(&val, 0, sizeof(val)); + val.i32 = 1; + if (fd_msg_avp_setvalue(avp, &val) != 0) { + fd_msg_free(msg); + fd_log_error("can't set value for 'CC-Request-Number' for 'Credit-Control-Request' message"); + return NULL; + } + fd_msg_avp_add(msg, MSG_BRW_LAST_CHILD, avp); + + /* Proxy-Info */ + fd_msg_avp_new(pi_avp_do, 0, &avp); + /* Proxy-Host */ + fd_msg_avp_new(ph_avp_do, 0, &avp1); + memset(&val, 0, sizeof(val)); + val.os.data = (uint8_t *)proxy_host; + val.os.len = strlen(proxy_host); + if (fd_msg_avp_setvalue(avp1, &val) != 0) { + fd_msg_free(msg); + fd_log_error("can't set value for 'Proxy-Host' for 'Credit-Control-Request' message"); + return NULL; + } + fd_msg_avp_add(avp, MSG_BRW_LAST_CHILD, avp1); + /* Proxy-State */ + fd_msg_avp_new(ps_avp_do, 0, &avp1); + memset(&val, 0, sizeof(val)); + val.os.data = (uint8_t *)proxy_state; + val.os.len = strlen(proxy_state); + if (fd_msg_avp_setvalue(avp1, &val) != 0) { + fd_msg_free(msg); + fd_log_error("can't set value for 'Proxy-State' for 'Credit-Control-Request' message"); + return NULL; + } + fd_msg_avp_add(avp, MSG_BRW_LAST_CHILD, avp1); + fd_msg_avp_add(msg, MSG_BRW_LAST_CHILD, avp); + + return msg; +} + +/* The thread that handles expired entries cleanup. */ +void * gen_thr_fct(void * arg) +{ + struct msg *msg; + fd_log_threadname ( "Loadtest/Generator" ); + + do { + if (do_generate) { + time_t now; + if (statistics.first == 0) { + statistics.first = time(NULL); + } + msg = create_message(target); + fd_msg_send(&msg, NULL, NULL); + fd_log_debug("[%s] sent message", MODULE_NAME); + now = time(NULL); + if (statistics.last != now) { + print_statistics(); + } + statistics.last = time(NULL); + statistics.sent++; + } else { + sleep(1); + } + } while (1); +} + +/* signal handler */ +static void sig_hdlr(void) +{ + if (do_generate) { + do_generate = 0; + } else { + do_generate = 1; + } + fd_log_notice("%s: switched generation of CCRs %s", MODULE_NAME, do_generate ? "on" : "off"); +} + +/* entry hook: register callback */ +static int cc_entry(char * conffile) +{ + struct disp_when data; + + /* initialize random number generator for session IDs */ + srandom(time(NULL) | (unsigned int)getpid()); + if ((target = conffile) == NULL) { + fd_log_error("invalid conffile"); + return EINVAL; + } + + memset(&data, 0, sizeof(data)); + + /* Advertise the support for the Diameter Credit Control application in the peer */ + CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_APPLICATION, APPLICATION_BY_NAME, "Diameter Credit Control Application", &data.app, ENOENT) ); + CHECK_FCT( fd_disp_app_support ( data.app, NULL, 1, 0 ) ); + + /* the handling of requests is different if it might be locally handled or not */ + /* for possibly locally handled requests, fd_rt_fwd_register is not called, so we need to add handlers for both cases */ + /* register forward handler for CCR -- needs to look at all requests */ + CHECK_FCT(fd_rt_fwd_register(ccr_fwd_handler, NULL, RT_FWD_REQ, &ccr_fwd_hdl)); + /* register local handler for CCR - if not Destination-Host is set, or the local host is used */ + memset(&data, 0, sizeof(data)); + CHECK_FCT(fd_dict_search(fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Credit-Control-Answer", &data.command, ENOENT)); + CHECK_FCT(fd_disp_register(ccr_local_handler, DISP_HOW_CC, &data, NULL, &ccr_local_hdl)); + + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Auth-Application-Id", &aai_avp_do, ENOENT), + { LOG_E("Unable to find 'Auth-Application-Id' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "CC-Request-Number", &crn_avp_do, ENOENT), + { LOG_E("Unable to find 'CC-Request-Number' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "CC-Request-Type", &crt_avp_do, ENOENT), + + { LOG_E("Unable to find 'CC-Request-Type' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Destination-Host", &dh_avp_do, ENOENT), + { LOG_E("Unable to find 'Destination-Host' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Destination-Realm", &dr_avp_do, ENOENT), + { LOG_E("Unable to find 'Destination-Realm' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Result-Code", &rc_avp_do, ENOENT), + { LOG_E("Unable to find 'Result-Code' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Session-Id", &si_avp_do, ENOENT), + { LOG_E("Unable to find 'Session-Id' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Service-Context-Id", &sci_avp_do, ENOENT), + { LOG_E("Unable to find 'Service-Context-Id' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Proxy-Info", &pi_avp_do, ENOENT), + { LOG_E("Unable to find 'Proxy-Info' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Proxy-Host", &ph_avp_do, ENOENT), + { LOG_E("Unable to find 'Proxy-Host' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Proxy-State", &ps_avp_do, ENOENT), + { LOG_E("Unable to find 'Proxy-State' AVP in the loaded dictionaries."); }); + CHECK_FCT_DO(fd_dict_search(fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Credit-Control-Request", &ccr_do, ENOENT), + { LOG_E("Unable to find 'Credit-Control-Request' command in the loaded dictionaries."); }); + + /* Start the generator thread */ + CHECK_POSIX( pthread_create( &gen_thr, NULL, gen_thr_fct, NULL ) ); + + /* Register generator callback */ + CHECK_FCT(fd_event_trig_regcb(SIGUSR2, MODULE_NAME, sig_hdlr)); + + return 0; +} + +/* And terminate it */ +void fd_ext_fini(void) +{ + /* stop sending */ + do_generate = 0; + + /* Stop the expiry thread */ + CHECK_FCT_DO( fd_thr_term(&gen_thr), ); + + /* Unregister the callbacks */ + if (ccr_local_hdl) { + CHECK_FCT_DO( fd_disp_unregister(&ccr_local_hdl, NULL), ); + ccr_local_hdl = NULL; + } + + print_statistics(); + + return; +} + + +EXTENSION_ENTRY(MODULE_NAME, cc_entry); diff --git a/extensions/test_sip/multimediaauth.c b/extensions/test_sip/multimediaauth.c index b1edb8d..6dc101e 100644 --- a/extensions/test_sip/multimediaauth.c +++ b/extensions/test_sip/multimediaauth.c @@ -335,7 +335,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * //CHECK_FCT(fd_msg_browse ( avp, MSG_BRW_WALK, &avp, NULL) ); - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_CNonce, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_CNonce, &a2 )); if(a2!=NULL) found_cnonce=1; @@ -472,7 +472,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * char * digest_username=NULL, *digest_uri=NULL, *digest_response=NULL, *digest_realm=NULL, *digest_nonce=NULL, *digest_method=NULL, *digest_qop=NULL, *digest_algorithm=NULL, *digest_cnonce=NULL, *digest_noncecount=NULL; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Nonce, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Nonce, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -501,7 +501,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * } } - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Response, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Response, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -515,7 +515,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * } } - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Realm, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Realm, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -529,7 +529,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * } } - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Method, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Method, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -545,7 +545,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * else digest_method=""; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_URI, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_URI, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -559,7 +559,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * } } - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_QOP, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_QOP, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -574,7 +574,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * } else digest_qop=NULL; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Algorithm, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Algorithm, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -589,7 +589,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * } else digest_algorithm=NULL; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_CNonce, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_CNonce, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -604,7 +604,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * } else digest_cnonce=""; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Nonce_Count, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Nonce_Count, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); @@ -619,7 +619,7 @@ int test_sip_MAA_cb( struct msg ** msg, struct avp * paramavp, struct session * } else digest_noncecount=""; - CHECK_FCT(fd_avp_search_avp (avp, sip_dict.Digest_Username, &a2 )); + CHECK_FCT(fd_msg_search_avp (avp, sip_dict.Digest_Username, &a2 )); if(a2!=NULL) { CHECK_FCT( fd_msg_avp_hdr( a2, &digestheader ) ); |
