forked from acouzens/open5gs
[SMF] Gy: Split PS-Information AVP creation into its own function
Makes the already long function easier to follow, since there's one level less of encapsulation inside it.
This commit is contained in:
parent
ca5a29dbe3
commit
6420e80fe6
|
@ -335,31 +335,27 @@ static void fill_multiple_services_credit_control_ccr(smf_sess_t *sess,
|
||||||
ogs_assert(ret == 0);
|
ogs_assert(ret == 0);
|
||||||
ret = fd_msg_avp_add (avp, MSG_BRW_LAST_CHILD, avpch1);
|
ret = fd_msg_avp_add (avp, MSG_BRW_LAST_CHILD, avpch1);
|
||||||
ogs_assert(ret == 0);
|
ogs_assert(ret == 0);
|
||||||
|
|
||||||
/* Multiple Services AVP add to req: */
|
/* Multiple Services AVP add to req: */
|
||||||
ret = fd_msg_avp_add(req, MSG_BRW_LAST_CHILD, avp);
|
ret = fd_msg_avp_add(req, MSG_BRW_LAST_CHILD, avp);
|
||||||
ogs_assert(ret == 0);
|
ogs_assert(ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TS 32.299 7.2.192 Service-Information AVP for CCR */
|
/* TS 32.299 7.2.158 PS-Information AVP for CCR */
|
||||||
static void fill_service_information_ccr(smf_sess_t *sess,
|
static void fill_ps_information(smf_sess_t *sess, uint32_t cc_request_type,
|
||||||
uint32_t cc_request_type, struct msg *req)
|
struct avp *avp)
|
||||||
{
|
{
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
union avp_value val;
|
union avp_value val;
|
||||||
struct avp *avp;
|
|
||||||
struct avp *avpch1, *avpch2, *avpch3;
|
struct avp *avpch1, *avpch2, *avpch3;
|
||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
struct sockaddr_in6 sin6;
|
struct sockaddr_in6 sin6;
|
||||||
char buf[OGS_PLMNIDSTRLEN];
|
char buf[OGS_PLMNIDSTRLEN];
|
||||||
char digit;
|
char digit;
|
||||||
|
|
||||||
/* Service-Information, TS 32.299 sec 7.2.192 */
|
|
||||||
ret = fd_msg_avp_new(ogs_diam_gy_service_information, 0, &avp);
|
|
||||||
|
|
||||||
/* PS-Information, TS 32.299 sec 7.2.158 */
|
/* PS-Information, TS 32.299 sec 7.2.158 */
|
||||||
ret = fd_msg_avp_new(ogs_diam_gy_ps_information, 0, &avpch1);
|
ret = fd_msg_avp_new(ogs_diam_gy_ps_information, 0, &avpch1);
|
||||||
|
ogs_assert(ret == 0);
|
||||||
|
|
||||||
/* 3GPP-Charging-Id, 3GPP TS 29.061 16.4.7.2 2 */
|
/* 3GPP-Charging-Id, 3GPP TS 29.061 16.4.7.2 2 */
|
||||||
ret = fd_msg_avp_new(ogs_diam_gy_3gpp_charging_id, 0, &avpch2);
|
ret = fd_msg_avp_new(ogs_diam_gy_3gpp_charging_id, 0, &avpch2);
|
||||||
|
@ -585,9 +581,25 @@ static void fill_service_information_ccr(smf_sess_t *sess,
|
||||||
ogs_assert(ret == 0);
|
ogs_assert(ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PS-Information AVP add to req: */
|
/* PS-Information AVP add to parent AVP (Service-Information): */
|
||||||
ret = fd_msg_avp_add (avp, MSG_BRW_LAST_CHILD, avpch1);
|
ret = fd_msg_avp_add (avp, MSG_BRW_LAST_CHILD, avpch1);
|
||||||
ogs_assert(ret == 0);
|
ogs_assert(ret == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TS 32.299 7.2.192 Service-Information AVP for CCR */
|
||||||
|
static void fill_service_information_ccr(smf_sess_t *sess,
|
||||||
|
uint32_t cc_request_type, struct msg *req)
|
||||||
|
{
|
||||||
|
|
||||||
|
int ret;
|
||||||
|
struct avp *avp;
|
||||||
|
|
||||||
|
/* Service-Information, TS 32.299 sec 7.2.192 */
|
||||||
|
ret = fd_msg_avp_new(ogs_diam_gy_service_information, 0, &avp);
|
||||||
|
ogs_assert(ret == 0);
|
||||||
|
|
||||||
|
/* PS-Information, TS 32.299 sec 7.2.158 */
|
||||||
|
fill_ps_information(sess, cc_request_type, avp);
|
||||||
|
|
||||||
/* Service-Information AVP add to req: */
|
/* Service-Information AVP add to req: */
|
||||||
ret = fd_msg_avp_add(req, MSG_BRW_LAST_CHILD, avp);
|
ret = fd_msg_avp_add(req, MSG_BRW_LAST_CHILD, avp);
|
||||||
|
|
Loading…
Reference in New Issue