Navigation


Changeset 679:c517666b59ca in freeDiameter


Ignore:
Timestamp:
Jan 18, 2011, 2:28:33 PM (13 years ago)
Author:
Sebastien Decugis <sdecugis@nict.go.jp>
Branch:
default
Phase:
public
Message:

Convert the errors AVP to Reply-Message also

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/app_radgw/rgwx_auth.c

    r678 r679  
    12991299                if (!(ahdr->avp_flags & AVP_FLAG_VENDOR)) {
    13001300                        switch (ahdr->avp_code) {
    1301                                
     1301                /* In case of Diameter error, include the Reply-Message attribute */
     1302                                case DIAM_ATTR_ERROR_MESSAGE:
     1303                                        CONV2RAD_STR(RADIUS_ATTR_REPLY_MESSAGE, ahdr->avp_value->os.data, ahdr->avp_value->os.len, 2);
     1304                                        break;
     1305                                       
     1306                                case DIAM_ATTR_ERROR_REPORTING_HOST:
     1307                                        {
     1308                                                char buf[254];
     1309                                                int bsz = snprintf(buf, sizeof(buf), "Error-Reporting-Host: %*s", ahdr->avp_value->os.len, ahdr->avp_value->os.data);
     1310                                                CONV2RAD_STR(RADIUS_ATTR_REPLY_MESSAGE, (uint8_t *)buf, bsz, 2);
     1311                                        }
     1312                                        break;
     1313                               
     1314                                case DIAM_ATTR_FAILED_AVP:
     1315                                        {
     1316                                                struct avp * favp;
     1317                                                CHECK_FCT( fd_msg_browse(avp, MSG_BRW_FIRST_CHILD, &favp, NULL) );
     1318                                                if (favp) {
     1319                                                        char buf[254];
     1320                                                        int bsz;
     1321                                                        struct dict_object * favp_model;
     1322                                                       
     1323                                                        CHECK_FCT( fd_msg_model(favp, &favp_model) );
     1324                                                        if (favp_model) {
     1325                                                                struct dict_avp_data fadata;
     1326                                                                CHECK_FCT( fd_dict_getval(favp_model, &fadata) );
     1327                                                                bsz = snprintf(buf, sizeof(buf), "Failed-AVP: %s", fadata.avp_name);
     1328                                                        } else {
     1329                                                                struct avp_hdr * favp_hdr;
     1330                                                                CHECK_FCT( fd_msg_avp_hdr ( favp, &favp_hdr ) );
     1331                                                                bsz = snprintf(buf, sizeof(buf), "Failed-AVP: code %u, vendor %u", favp_hdr->avp_code, favp_hdr->avp_vendor);
     1332                                                        }
     1333                                                        CONV2RAD_STR(RADIUS_ATTR_REPLY_MESSAGE, (uint8_t *)buf, bsz, 2);
     1334                                                }
     1335                                        }
     1336                                        break;
     1337                                       
    13021338                /* RFC 4005 (AVP in the order of the AA-Request/Answer AVP Table) */
    13031339                                case DIAM_ATTR_ACCT_INTERIM_INTERVAL:
Note: See TracChangeset for help on using the changeset viewer.