changeset 431:1f16b74eabe2

Allow few remaining AVPs in Diameter answers
author Sebastien Decugis <sdecugis@nict.go.jp>
date Wed, 24 Jun 2009 17:27:38 +0900
parents e92b5cdd7843
children cfb47f71e98c
files extensions/radius_gw/rg_common.h extensions/radius_gw/rgw_work.c
diffstat 2 files changed, 20 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/extensions/radius_gw/rg_common.h	Wed Jun 24 17:10:16 2009 +0900
+++ b/extensions/radius_gw/rg_common.h	Wed Jun 24 17:27:38 2009 +0900
@@ -196,6 +196,8 @@
 	DIAM_ATTR_ORIGIN_STATE_ID = 278,
 	DIAM_ATTR_FAILED_AVP = 279,
 	DIAM_ATTR_ERROR_MESSAGE = 281,
+	DIAM_ATTR_ROUTE_RECORD = 282,
+	DIAM_ATTR_PROXY_INFO = 284,
 	DIAM_ATTR_ERROR_REPORTING_HOST = 294,
 	DIAM_ATTR_NAS_FILTER_RULE = 400,
 	DIAM_ATTR_TUNNELING = 401,
--- a/extensions/radius_gw/rgw_work.c	Wed Jun 24 17:10:16 2009 +0900
+++ b/extensions/radius_gw/rgw_work.c	Wed Jun 24 17:27:38 2009 +0900
@@ -84,8 +84,24 @@
 	while (avp) {
 		CHECK_FCT_DO( msg_avp_data ( avp, &adata ), { pb++; continue; } );
 		if (adata->avp_flags & AVP_FLAG_MANDATORY) {
-			TRACE_DEBUG(FULL, "Remaining Mandatory AVP code %d", adata->avp_code);
-			pb++;
+			if (adata->avp_flags & AVP_FLAG_VENDOR) {
+				TRACE_DEBUG(FULL, "Remaining Mandatory Vendor AVP, code %d", adata->avp_code);
+				pb++;
+			} else {
+				switch (adata->avp_code) {
+					/* A few AVPs can be safely ignored here: */
+					case DIAM_ATTR_ROUTE_RECORD:
+					case DIAM_ATTR_PROXY_INFO:
+						
+						
+						/* just ignore */
+						break;
+					
+					default:
+						TRACE_DEBUG(FULL, "Remaining Mandatory AVP, code %d", adata->avp_code);
+						pb++;
+				}
+			}
 		}
 		CHECK_FCT_DO( msg_browse(avp, MSG_BRW_NEXT, &avp, NULL), { pb++; break; } );
 	}
"Welcome to our mercurial repository"