diff extensions/dict_dcca_3gpp/dict_dcca_3gpp.c @ 1441:6029afe9bacb

Update to 3GPP TS 29.214 V15.7.0 (2019-09) Add GCS-Identifier, OctetString, code 538, section 5.3.36 Add Sharing-Key-DL, Unsigned32, code 539, section 5.3.37 Add Sharing-Key-UL, Unsigned32, code 540, section 5.3.38 Add Retry-Interval, Unsigned32, code 541, section 5.3.39 Add Sponsoring-Action, Enumerated, code 542, section 5.3.40 Add Max-Supported-Bandwidth-DL, Unsigned32, code 543, section 5.3.41 Add Max-Supported-Bandwidth-UL, Unsigned32, code 544, section 5.3.42 Add Min-Desired-Bandwidth-DL, Unsigned32, code 545, section 5.3.43 Add Min-Desired-Bandwidth-UL, Unsigned32, code 546, section 5.3.44 Add MCPTT-Identifier, OctetString, code 547, section 5.3.45 Add Service-Authorization-Info, Unsigned32, code 548, section 5.3.46 Add Media-Component-Status, Unsigned32, code 549, section 5.3.48 Add Priority-Sharing-Indicator, Enumerated, code 550, section 5.3.47 Add AF-Requested-Data, Unsigned32, code 551, section 5.3.50 Add Content-Version, Unsigned64, code 552, section 5.3.49 Add Pre-emption-Control-Info, Unsigned32, code 553, section 5.3.51 Add Extended-Max-Requested-BW-DL, Unsigned32, code 554, section 5.3.52 Add Extended-Max-Requested-BW-UL, Unsigned32, code 555, section 5.3.53 Add Extended-Max-Supported-BW-DL, Unsigned32, code 556, section 5.3.54 Add Extended-Max-Supported-BW-UL, Unsigned32, code 557, section 5.3.55 Add Extended-Min-Desired-BW-DL, Unsigned32, code 558, section 5.3.56 Add Extended-Min-Desired-BW-UL, Unsigned32, code 559, section 5.3.57 Add Extended-Min-Requested-BW-DL, Unsigned32, code 560, section 5.3.58 Add Extended-Min-Requested-BW-UL, Unsigned32, code 561, section 5.3.59 Add MCVideo-Identifier, OctetString, code 562, section 5.3.45a Add IMS-Content-Identifier, OctetString, code 563, section 5.3.60 with missing M assumed to be MUST-NOT. Add IMS-Content-Type, Enumerated, code 564, section 5.3.61 with missing M assumed to be MUST-NOT.
author Luke Mewburn <luke@mewburn.net>
date Tue, 25 Feb 2020 10:42:08 +1100
parents d6469b0f2111
children 48438d36e435
line wrap: on
line diff
--- a/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c	Tue Feb 25 09:58:59 2020 +1100
+++ b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c	Tue Feb 25 10:42:08 2020 +1100
@@ -2798,7 +2798,10 @@
 		CHECK_dict_new(DICT_AVP, &data, type, NULL);
 	};
 
-	/* 3GPP 29.214-b80 (11.8.0 2013.03.15)                              */
+
+	/* 3GPP TS 29.214 V15.7.0 (2019-09)                                 */
+	/* From 3GPP 29214-f70.doc                                          */
+
 	/* Abort-Cause, Enumerated, code 500, section 5.3.1                 */
 	{
 		struct dict_avp_data data = {
@@ -2893,6 +2896,35 @@
 		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 = {
@@ -2919,6 +2951,123 @@
 		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 = {
@@ -2990,33 +3139,63 @@
 		CHECK_dict_new(DICT_AVP, &data, type, 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);
-	};
-
-	/* 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);
+	/* 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);
+	};
+
+	/* 3GPP TS 29.214 table 5.3.0.1 row IMS-Content-Identifier          */
+	/* missing M, assume 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);
+	};
+
+	/* 3GPP TS 29.214 table 5.3.0.1 row IMS-Content                     */
+	/* missing M, assume 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 */
@@ -3045,6 +3224,58 @@
 		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 = {
@@ -3071,6 +3302,19 @@
 		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 = {
@@ -3113,6 +3357,32 @@
 		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 = {
@@ -3139,6 +3409,80 @@
 		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 = {
@@ -3165,6 +3509,32 @@
 		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 = {
@@ -3181,6 +3551,48 @@
 		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 = {
@@ -3223,65 +3635,20 @@
 		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);
-	};
-
-	/* 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);
-	};
-
-	/* 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);
-	};
-
-	/* 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);
+	/* 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 29.229-b20 (11.2.0 2012.12.21)                              */
"Welcome to our mercurial repository"