# HG changeset patch # User Sebastien Decugis # Date 1245832058 -32400 # Node ID 1f16b74eabe252f527a4e54336c3513b3957550d # Parent e92b5cdd784378e5bd45fd3006df9d9e34fffe10 Allow few remaining AVPs in Diameter answers diff -r e92b5cdd7843 -r 1f16b74eabe2 extensions/radius_gw/rg_common.h --- 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, diff -r e92b5cdd7843 -r 1f16b74eabe2 extensions/radius_gw/rgw_work.c --- 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; } ); }