[dbi] session_data(): add argument charging characteristics
Add the charging characteristics to the dbi function to allow the backend to decide the profile based on it. The charging characteristics can be filled by the HSS and will be passed by the PCEF towards the PCRF. This is an API dbi breakage.
This commit is contained in:
parent
973c64804a
commit
eabb847a48
|
@ -34,7 +34,7 @@ struct ogs_dbi_s {
|
|||
void (*final)(void);
|
||||
/* session */
|
||||
int (*session_data)(char *supi, ogs_s_nssai_t *s_nssai, char *dnn,
|
||||
ogs_session_data_t *data);
|
||||
int32_t charging_char, ogs_session_data_t *data);
|
||||
/* ims */
|
||||
int (*msisdn_data)(char *imsi_or_msisdn_bcd, ogs_msisdn_data_t *msisdn_data);
|
||||
int (*ims_data)(char *supi, ogs_ims_data_t *ims_data);
|
||||
|
|
|
@ -93,12 +93,12 @@ int ogs_dbi_ims_data(char *supi, ogs_ims_data_t *ims_data)
|
|||
|
||||
/* session */
|
||||
int ogs_dbi_session_data(char *supi, ogs_s_nssai_t *s_nssai, char *dnn,
|
||||
ogs_session_data_t *session_data)
|
||||
int32_t charging_char, ogs_session_data_t *session_data)
|
||||
{
|
||||
ogs_assert(dbi_selected);
|
||||
if (!dbi_selected->session_data)
|
||||
return OGS_ERROR;
|
||||
return dbi_selected->session_data(supi, s_nssai, dnn, session_data);
|
||||
return dbi_selected->session_data(supi, s_nssai, dnn, charging_char, session_data);
|
||||
}
|
||||
|
||||
/* subscription */
|
||||
|
|
|
@ -350,14 +350,13 @@ fail:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int json_session_data(char *supi, ogs_s_nssai_t *s_nssai, char *dnn, ogs_session_data_t *session_data)
|
||||
static int json_session_data(char *supi, ogs_s_nssai_t *s_nssai, char *dnn,
|
||||
int32_t charging_char, ogs_session_data_t *session_data)
|
||||
{
|
||||
ogs_session_t *session = &session_data->session;
|
||||
ogs_json_apn_profile_t *profile;
|
||||
ogs_json_apn_t *db_apn = ogs_dbi_static_get_apn(dnn);
|
||||
|
||||
int charging_char = -1;
|
||||
|
||||
if (!db_apn)
|
||||
db_apn = ogs_dbi_static_get_apn("*");
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ int ogs_dbi_mongo_ims_data(char *supi, ogs_ims_data_t *ims_data);
|
|||
|
||||
/* session */
|
||||
int ogs_dbi_mongo_session_data(char *supi, ogs_s_nssai_t *s_nssai, char *dnn,
|
||||
ogs_session_data_t *session_data);
|
||||
int32_t charging_char, ogs_session_data_t *session_data);
|
||||
|
||||
/* subscription */
|
||||
int ogs_dbi_mongo_auth_info(char *supi, ogs_dbi_auth_info_t *auth_info);
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#include "mongo-private.h"
|
||||
|
||||
int ogs_dbi_mongo_session_data(char *supi, ogs_s_nssai_t *s_nssai, char *dnn,
|
||||
ogs_session_data_t *session_data)
|
||||
int32_t charging_char, ogs_session_data_t *session_data)
|
||||
{
|
||||
int rv = OGS_OK;
|
||||
mongoc_cursor_t *cursor = NULL;
|
||||
|
|
|
@ -28,8 +28,10 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define OGS_DBI_NO_CHARGING_CHAR -1
|
||||
|
||||
int ogs_dbi_session_data(char *supi, ogs_s_nssai_t *s_nssai, char *dnn,
|
||||
ogs_session_data_t *session_data);
|
||||
int32_t charging_char, ogs_session_data_t *session_data);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -123,7 +123,8 @@ bool pcf_nbsf_management_handle_register(
|
|||
ogs_sbi_header_free(&header);
|
||||
|
||||
rv = ogs_dbi_session_data(
|
||||
pcf_ue->supi, &sess->s_nssai, sess->dnn, &session_data);
|
||||
pcf_ue->supi, &sess->s_nssai, sess->dnn, OGS_DBI_NO_CHARGING_CHAR,
|
||||
&session_data);
|
||||
if (rv != OGS_OK) {
|
||||
strerror = ogs_msprintf("[%s:%d] Cannot find SUPI in DB",
|
||||
pcf_ue->supi, sess->psi);
|
||||
|
|
|
@ -567,7 +567,7 @@ bool pcf_npcf_policyauthorization_handle_create(pcf_sess_t *sess,
|
|||
|
||||
memset(&session_data, 0, sizeof(ogs_session_data_t));
|
||||
rv = ogs_dbi_session_data(
|
||||
pcf_ue->supi, &sess->s_nssai, sess->dnn, &session_data);
|
||||
pcf_ue->supi, &sess->s_nssai, sess->dnn, OGS_DBI_NO_CHARGING_CHAR, &session_data);
|
||||
if (rv != OGS_OK) {
|
||||
strerror = ogs_msprintf("[%s:%d] Cannot find SUPI in DB",
|
||||
pcf_ue->supi, sess->psi);
|
||||
|
@ -980,7 +980,8 @@ bool pcf_npcf_policyauthorization_handle_update(
|
|||
|
||||
memset(&session_data, 0, sizeof(ogs_session_data_t));
|
||||
rv = ogs_dbi_session_data(
|
||||
pcf_ue->supi, &sess->s_nssai, sess->dnn, &session_data);
|
||||
pcf_ue->supi, &sess->s_nssai, sess->dnn, OGS_DBI_NO_CHARGING_CHAR,
|
||||
&session_data);
|
||||
if (rv != OGS_OK) {
|
||||
strerror = ogs_msprintf("[%s:%d] Cannot find SUPI in DB",
|
||||
pcf_ue->supi, sess->psi);
|
||||
|
|
|
@ -281,7 +281,7 @@ int pcrf_db_qos_data(
|
|||
ogs_assert(supi);
|
||||
|
||||
/* For EPC, we'll use [S_NSSAI = NULL] */
|
||||
rv = ogs_dbi_session_data(supi, NULL, apn, session_data);
|
||||
rv = ogs_dbi_session_data(supi, NULL, apn, OGS_DBI_NO_CHARGING_CHAR, session_data);
|
||||
|
||||
/* For EPC, we need to inialize Flow-Status in Pcc-Rule */
|
||||
for (i = 0; i < session_data->num_of_pcc_rule; i++) {
|
||||
|
|
Loading…
Reference in New Issue