forked from acouzens/open5gs
[SMF] Gy: Check Multiple-Services-Credit-Control Result-Code
This commit is contained in:
parent
e1820e4e54
commit
12158eebb8
|
@ -187,6 +187,8 @@ typedef struct ogs_diam_gy_message_s {
|
||||||
uint32_t time_threshold;
|
uint32_t time_threshold;
|
||||||
uint32_t volume_threshold;
|
uint32_t volume_threshold;
|
||||||
ogs_diam_gy_service_unit_t granted;
|
ogs_diam_gy_service_unit_t granted;
|
||||||
|
uint32_t result_code;
|
||||||
|
uint32_t *err;
|
||||||
} cca;
|
} cca;
|
||||||
};
|
};
|
||||||
} ogs_diam_gy_message_t;
|
} ogs_diam_gy_message_t;
|
||||||
|
|
|
@ -178,6 +178,12 @@ uint32_t smf_gy_handle_cca_update_request(
|
||||||
return gy_message->err ? *gy_message->err :
|
return gy_message->err ? *gy_message->err :
|
||||||
ER_DIAMETER_AUTHENTICATION_REJECTED;
|
ER_DIAMETER_AUTHENTICATION_REJECTED;
|
||||||
}
|
}
|
||||||
|
if (gy_message->cca.result_code != ER_DIAMETER_SUCCESS) {
|
||||||
|
ogs_warn("Gy CCA Update Diameter Multiple-Services-Credit-Control Result-Code=%u",
|
||||||
|
gy_message->cca.result_code);
|
||||||
|
return gy_message->cca.err ? *gy_message->cca.err :
|
||||||
|
ER_DIAMETER_AUTHENTICATION_REJECTED;
|
||||||
|
}
|
||||||
|
|
||||||
bearer = smf_default_bearer_in_sess(sess);
|
bearer = smf_default_bearer_in_sess(sess);
|
||||||
ogs_assert(bearer);
|
ogs_assert(bearer);
|
||||||
|
|
|
@ -1003,6 +1003,9 @@ static void smf_gy_cca_cb(void *data, struct msg **msg)
|
||||||
/* Set Credit Control Command */
|
/* Set Credit Control Command */
|
||||||
gy_message->cmd_code = OGS_DIAM_GY_CMD_CODE_CREDIT_CONTROL;
|
gy_message->cmd_code = OGS_DIAM_GY_CMD_CODE_CREDIT_CONTROL;
|
||||||
|
|
||||||
|
/* Initialize some values: */
|
||||||
|
gy_message->cca.result_code = ER_DIAMETER_SUCCESS;
|
||||||
|
|
||||||
/* Value of Result Code */
|
/* Value of Result Code */
|
||||||
ret = fd_msg_search_avp(*msg, ogs_diam_result_code, &avp);
|
ret = fd_msg_search_avp(*msg, ogs_diam_result_code, &avp);
|
||||||
ogs_assert(ret == 0);
|
ogs_assert(ret == 0);
|
||||||
|
@ -1114,6 +1117,10 @@ static void smf_gy_cca_cb(void *data, struct msg **msg)
|
||||||
ret = fd_msg_avp_hdr(avpch1, &hdr);
|
ret = fd_msg_avp_hdr(avpch1, &hdr);
|
||||||
ogs_assert(ret == 0);
|
ogs_assert(ret == 0);
|
||||||
switch (hdr->avp_code) {
|
switch (hdr->avp_code) {
|
||||||
|
case AC_RESULT_CODE:
|
||||||
|
gy_message->cca.result_code = hdr->avp_value->u32;
|
||||||
|
gy_message->cca.err = &gy_message->cca.result_code;
|
||||||
|
break;
|
||||||
case OGS_DIAM_GY_AVP_CODE_GRANTED_SERVICE_UNIT:
|
case OGS_DIAM_GY_AVP_CODE_GRANTED_SERVICE_UNIT:
|
||||||
rv = decode_granted_service_unit(
|
rv = decode_granted_service_unit(
|
||||||
&gy_message->cca.granted, avpch1, &error);
|
&gy_message->cca.granted, avpch1, &error);
|
||||||
|
|
Loading…
Reference in New Issue