diff --git a/lib/proto/types.h b/lib/proto/types.h index 16486cb88..cd925426f 100644 --- a/lib/proto/types.h +++ b/lib/proto/types.h @@ -651,6 +651,9 @@ typedef struct ogs_slice_data_s { bool default_indicator; 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; int num_of_session; diff --git a/src/hss/hss-context.c b/src/hss/hss-context.c index a33961ce5..ff743ea80 100644 --- a/src/hss/hss-context.c +++ b/src/hss/hss-context.c @@ -1190,7 +1190,7 @@ int hss_db_poll_change_stream(void) 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; uint32_t length = 0; diff --git a/src/hss/hss-s6a-path.c b/src/hss/hss-s6a-path.c index 6ca47fd27..42595866d 100644 --- a/src/hss/hss-s6a-path.c +++ b/src/hss/hss-s6a-path.c @@ -458,7 +458,7 @@ static int hss_s6a_avp_add_subscription_data( ogs_diam_s6a_all_apn_configuration_included_indicator, 0, &all_apn_configuration_included_indicator); ogs_assert(ret == 0); - val.i32 = 0; + val.i32 = OGS_ALL_APN_CONFIGURATIONS_INCLUDED; ret = fd_msg_avp_setvalue( all_apn_configuration_included_indicator, &val); ogs_assert(ret == 0); diff --git a/src/mme/mme-s6a-handler.c b/src/mme/mme-s6a-handler.c index aabfb0dc0..7dcf52678 100644 --- a/src/mme/mme-s6a-handler.c +++ b/src/mme/mme-s6a-handler.c @@ -77,7 +77,7 @@ uint8_t mme_s6a_handle_ula( ogs_diam_s6a_ula_message_t *ula_message = NULL; ogs_subscription_data_t *subscription_data = NULL; ogs_slice_data_t *slice_data = NULL; - int rv; + int rv, num_of_session; ogs_assert(mme_ue); ogs_assert(s6a_message); @@ -98,12 +98,12 @@ uint8_t mme_s6a_handle_ula( mme_session_remove_all(mme_ue); - rv = mme_ue_session_from_slice_data(mme_ue, slice_data); - if (rv == 0) { + num_of_session = mme_ue_session_from_slice_data(mme_ue, slice_data); + if (num_of_session == 0) { ogs_error("No Session"); 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; @@ -132,7 +132,7 @@ uint8_t mme_s6a_handle_idr( ogs_diam_s6a_idr_message_t *idr_message = NULL; ogs_subscription_data_t *subscription_data = NULL; ogs_slice_data_t *slice_data = NULL; - int rv; + int num_of_session; ogs_assert(mme_ue); ogs_assert(s6a_message); @@ -149,16 +149,18 @@ uint8_t mme_s6a_handle_idr( ogs_assert(subscription_data->num_of_slice == 1); 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); - rv = mme_ue_session_from_slice_data(mme_ue, slice_data); - if (rv == 0) { + num_of_session = mme_ue_session_from_slice_data(mme_ue, slice_data); + if (num_of_session == 0) { ogs_error("No Session"); return OGS_ERROR; } - mme_ue->num_of_session = rv; + mme_ue->num_of_session = num_of_session; } 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; }