forked from acouzens/open5gs
Follow-on up #1794
This commit is contained in:
parent
1f2a8678ed
commit
c537166d37
|
@ -651,6 +651,9 @@ typedef struct ogs_slice_data_s {
|
||||||
bool default_indicator;
|
bool default_indicator;
|
||||||
|
|
||||||
uint32_t context_identifier; /* EPC for checking default APN */
|
uint32_t context_identifier; /* EPC for checking default APN */
|
||||||
|
|
||||||
|
#define OGS_ALL_APN_CONFIGURATIONS_INCLUDED 0
|
||||||
|
#define OGS_MODIFIED_ADDED_APN_CONFIGURATIONS_INCLUDED 1
|
||||||
uint32_t all_apn_config_inc;
|
uint32_t all_apn_config_inc;
|
||||||
|
|
||||||
int num_of_session;
|
int num_of_session;
|
||||||
|
|
|
@ -1190,7 +1190,7 @@ int hss_db_poll_change_stream(void)
|
||||||
|
|
||||||
int hss_handle_change_event(const bson_t *document)
|
int hss_handle_change_event(const bson_t *document)
|
||||||
{
|
{
|
||||||
bson_iter_t iter, child1_iter, child2_iter, child3_iter;
|
bson_iter_t iter, child1_iter, child2_iter;
|
||||||
|
|
||||||
char *utf8 = NULL;
|
char *utf8 = NULL;
|
||||||
uint32_t length = 0;
|
uint32_t length = 0;
|
||||||
|
|
|
@ -458,7 +458,7 @@ static int hss_s6a_avp_add_subscription_data(
|
||||||
ogs_diam_s6a_all_apn_configuration_included_indicator, 0,
|
ogs_diam_s6a_all_apn_configuration_included_indicator, 0,
|
||||||
&all_apn_configuration_included_indicator);
|
&all_apn_configuration_included_indicator);
|
||||||
ogs_assert(ret == 0);
|
ogs_assert(ret == 0);
|
||||||
val.i32 = 0;
|
val.i32 = OGS_ALL_APN_CONFIGURATIONS_INCLUDED;
|
||||||
ret = fd_msg_avp_setvalue(
|
ret = fd_msg_avp_setvalue(
|
||||||
all_apn_configuration_included_indicator, &val);
|
all_apn_configuration_included_indicator, &val);
|
||||||
ogs_assert(ret == 0);
|
ogs_assert(ret == 0);
|
||||||
|
|
|
@ -77,7 +77,7 @@ uint8_t mme_s6a_handle_ula(
|
||||||
ogs_diam_s6a_ula_message_t *ula_message = NULL;
|
ogs_diam_s6a_ula_message_t *ula_message = NULL;
|
||||||
ogs_subscription_data_t *subscription_data = NULL;
|
ogs_subscription_data_t *subscription_data = NULL;
|
||||||
ogs_slice_data_t *slice_data = NULL;
|
ogs_slice_data_t *slice_data = NULL;
|
||||||
int rv;
|
int rv, num_of_session;
|
||||||
|
|
||||||
ogs_assert(mme_ue);
|
ogs_assert(mme_ue);
|
||||||
ogs_assert(s6a_message);
|
ogs_assert(s6a_message);
|
||||||
|
@ -98,12 +98,12 @@ uint8_t mme_s6a_handle_ula(
|
||||||
|
|
||||||
mme_session_remove_all(mme_ue);
|
mme_session_remove_all(mme_ue);
|
||||||
|
|
||||||
rv = mme_ue_session_from_slice_data(mme_ue, slice_data);
|
num_of_session = mme_ue_session_from_slice_data(mme_ue, slice_data);
|
||||||
if (rv == 0) {
|
if (num_of_session == 0) {
|
||||||
ogs_error("No Session");
|
ogs_error("No Session");
|
||||||
return OGS_NAS_EMM_CAUSE_SEVERE_NETWORK_FAILURE;
|
return OGS_NAS_EMM_CAUSE_SEVERE_NETWORK_FAILURE;
|
||||||
}
|
}
|
||||||
mme_ue->num_of_session = rv;
|
mme_ue->num_of_session = num_of_session;
|
||||||
|
|
||||||
mme_ue->context_identifier = slice_data->context_identifier;
|
mme_ue->context_identifier = slice_data->context_identifier;
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ uint8_t mme_s6a_handle_idr(
|
||||||
ogs_diam_s6a_idr_message_t *idr_message = NULL;
|
ogs_diam_s6a_idr_message_t *idr_message = NULL;
|
||||||
ogs_subscription_data_t *subscription_data = NULL;
|
ogs_subscription_data_t *subscription_data = NULL;
|
||||||
ogs_slice_data_t *slice_data = NULL;
|
ogs_slice_data_t *slice_data = NULL;
|
||||||
int rv;
|
int num_of_session;
|
||||||
|
|
||||||
ogs_assert(mme_ue);
|
ogs_assert(mme_ue);
|
||||||
ogs_assert(s6a_message);
|
ogs_assert(s6a_message);
|
||||||
|
@ -149,16 +149,18 @@ uint8_t mme_s6a_handle_idr(
|
||||||
ogs_assert(subscription_data->num_of_slice == 1);
|
ogs_assert(subscription_data->num_of_slice == 1);
|
||||||
slice_data = &subscription_data->slice[0];
|
slice_data = &subscription_data->slice[0];
|
||||||
|
|
||||||
if (!slice_data->all_apn_config_inc) {
|
if (slice_data->all_apn_config_inc ==
|
||||||
|
OGS_ALL_APN_CONFIGURATIONS_INCLUDED) {
|
||||||
mme_session_remove_all(mme_ue);
|
mme_session_remove_all(mme_ue);
|
||||||
rv = mme_ue_session_from_slice_data(mme_ue, slice_data);
|
num_of_session = mme_ue_session_from_slice_data(mme_ue, slice_data);
|
||||||
if (rv == 0) {
|
if (num_of_session == 0) {
|
||||||
ogs_error("No Session");
|
ogs_error("No Session");
|
||||||
return OGS_ERROR;
|
return OGS_ERROR;
|
||||||
}
|
}
|
||||||
mme_ue->num_of_session = rv;
|
mme_ue->num_of_session = num_of_session;
|
||||||
} else {
|
} else {
|
||||||
ogs_error ("Partial APN-Configuration Not Supported in IDR.");
|
ogs_error ("[%d] Partial APN-Configuration Not Supported in IDR.",
|
||||||
|
slice_data->all_apn_config_inc);
|
||||||
return OGS_ERROR;
|
return OGS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue