[Release-17] Upgrade NAS to v17.8.0

This commit is contained in:
Sukchan Lee 2023-03-04 23:47:40 +09:00
parent c3f0c57554
commit 62b6b42e88
48 changed files with 4606 additions and 497 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
/*
* The MIT License
*
* Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
* Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
@ -28,8 +28,8 @@
/*******************************************************************************
* This file had been created by nas-message.py script v0.2.0
* Please do not modify this file but regenerate it via script.
* Created on: 2022-07-11 07:09:47.188485 by ubuntu
* from 24501-g41.docx
* Created on: 2023-03-04 20:50:00.898995 by acetcom
* from 24501-h90.docx
******************************************************************************/
#include "ogs-nas-5gs.h"
@ -384,13 +384,93 @@ int ogs_nas_5gs_encode_registration_request(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_mess
}
if (registration_request->presencemask & OGS_NAS_5GS_REGISTRATION_REQUEST_N5GC_INDICATION_PRESENT) {
registration_request->n5gc_indication.type = OGS_NAS_5GS_REGISTRATION_REQUEST_N5GC_INDICATION_TYPE;
registration_request->n5gc_indication.type = (OGS_NAS_5GS_REGISTRATION_REQUEST_N5GC_INDICATION_TYPE >> 4);
size = ogs_nas_5gs_encode_n5gc_indication(pkbuf, &registration_request->n5gc_indication);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_request->presencemask & OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_NB_N1_MODE_DRX_PARAMETERS_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_NB_N1_MODE_DRX_PARAMETERS_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_nb_n1_mode_drx_parameters(pkbuf, &registration_request->requested_nb_n1_mode_drx_parameters);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_request->presencemask & OGS_NAS_5GS_REGISTRATION_REQUEST_UE_REQUEST_TYPE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REQUEST_UE_REQUEST_TYPE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_ue_request_type(pkbuf, &registration_request->ue_request_type);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_request->presencemask & OGS_NAS_5GS_REGISTRATION_REQUEST_PAGING_RESTRICTION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REQUEST_PAGING_RESTRICTION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_paging_restriction(pkbuf, &registration_request->paging_restriction);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_request->presencemask & OGS_NAS_5GS_REGISTRATION_REQUEST_SERVICE_LEVEL_AA_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REQUEST_SERVICE_LEVEL_AA_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_service_level_aa_container(pkbuf, &registration_request->service_level_aa_container);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_request->presencemask & OGS_NAS_5GS_REGISTRATION_REQUEST_NID_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REQUEST_NID_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_nid(pkbuf, &registration_request->nid);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_request->presencemask & OGS_NAS_5GS_REGISTRATION_REQUEST_MS_DETERMINED_PLMN_WITH_DISASTER_CONDITION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REQUEST_MS_DETERMINED_PLMN_WITH_DISASTER_CONDITION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_plmn_identity(pkbuf, &registration_request->ms_determined_plmn_with_disaster_condition);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_request->presencemask & OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_PEIPS_ASSISTANCE_INFORMATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_PEIPS_ASSISTANCE_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_peips_assistance_information(pkbuf, &registration_request->requested_peips_assistance_information);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_request->presencemask & OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_T3512_VALUE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_T3512_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_gprs_timer_3(pkbuf, &registration_request->requested_t3512_value);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -683,7 +763,7 @@ int ogs_nas_5gs_encode_registration_accept(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_messa
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_gprs_timer_3(pkbuf, &registration_accept->t3448_value);
size = ogs_nas_5gs_encode_gprs_timer_2(pkbuf, &registration_accept->t3448_value);
ogs_assert(size >= 0);
encoded += size;
}
@ -766,6 +846,136 @@ int ogs_nas_5gs_encode_registration_accept(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_messa
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_NEGOTIATED_NB_N1_MODE_DRX_PARAMETERS_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_NEGOTIATED_NB_N1_MODE_DRX_PARAMETERS_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_nb_n1_mode_drx_parameters(pkbuf, &registration_accept->negotiated_nb_n1_mode_drx_parameters);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_EXTENDED_REJECTED_NSSAI_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_EXTENDED_REJECTED_NSSAI_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_extended_rejected_nssai(pkbuf, &registration_accept->extended_rejected_nssai);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_SERVICE_LEVEL_AA_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_SERVICE_LEVEL_AA_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_service_level_aa_container(pkbuf, &registration_accept->service_level_aa_container);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_NEGOTIATED_PEIPS_ASSISTANCE_INFORMATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_NEGOTIATED_PEIPS_ASSISTANCE_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_peips_assistance_information(pkbuf, &registration_accept->negotiated_peips_assistance_information);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_5GS_ADDITIONAL_REQUEST_RESULT_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_5GS_ADDITIONAL_REQUEST_RESULT_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_additional_request_result(pkbuf, &registration_accept->additional_request_result);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_NSSRG_INFORMATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_NSSRG_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_nssrg_information(pkbuf, &registration_accept->nssrg_information);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_DISASTER_ROAMING_WAIT_RANGE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_DISASTER_ROAMING_WAIT_RANGE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_registration_wait_range(pkbuf, &registration_accept->disaster_roaming_wait_range);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_DISASTER_RETURN_WAIT_RANGE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_DISASTER_RETURN_WAIT_RANGE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_registration_wait_range(pkbuf, &registration_accept->disaster_return_wait_range);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_LIST_OF_PLMNS_TO_BE_USED_IN_DISASTER_CONDITION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_LIST_OF_PLMNS_TO_BE_USED_IN_DISASTER_CONDITION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_list_of_plmns_to_be_used_in_disaster_condition(pkbuf, &registration_accept->list_of_plmns_to_be_used_in_disaster_condition);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_tracking_area_identity_list(pkbuf, &registration_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_tracking_area_identity_list(pkbuf, &registration_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_EXTENDED_CAG_INFORMATION_LIST_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_EXTENDED_CAG_INFORMATION_LIST_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_extended_cag_information_list(pkbuf, &registration_accept->extended_cag_information_list);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_accept->presencemask & OGS_NAS_5GS_REGISTRATION_ACCEPT_NSAG_INFORMATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_ACCEPT_NSAG_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_nsag_information(pkbuf, &registration_accept->nsag_information);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -842,6 +1052,76 @@ int ogs_nas_5gs_encode_registration_reject(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_messa
encoded += size;
}
if (registration_reject->presencemask & OGS_NAS_5GS_REGISTRATION_REJECT_CAG_INFORMATION_LIST_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REJECT_CAG_INFORMATION_LIST_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_cag_information_list(pkbuf, &registration_reject->cag_information_list);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_reject->presencemask & OGS_NAS_5GS_REGISTRATION_REJECT_EXTENDED_REJECTED_NSSAI_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REJECT_EXTENDED_REJECTED_NSSAI_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_extended_rejected_nssai(pkbuf, &registration_reject->extended_rejected_nssai);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_reject->presencemask & OGS_NAS_5GS_REGISTRATION_REJECT_DISASTER_RETURN_WAIT_RANGE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REJECT_DISASTER_RETURN_WAIT_RANGE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_registration_wait_range(pkbuf, &registration_reject->disaster_return_wait_range);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_reject->presencemask & OGS_NAS_5GS_REGISTRATION_REJECT_EXTENDED_CAG_INFORMATION_LIST_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REJECT_EXTENDED_CAG_INFORMATION_LIST_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_extended_cag_information_list(pkbuf, &registration_reject->extended_cag_information_list);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_reject->presencemask & OGS_NAS_5GS_REGISTRATION_REJECT_LOWER_BOUND_TIMER_VALUE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REJECT_LOWER_BOUND_TIMER_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_gprs_timer_3(pkbuf, &registration_reject->lower_bound_timer_value);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_reject->presencemask & OGS_NAS_5GS_REGISTRATION_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_tracking_area_identity_list(pkbuf, &registration_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (registration_reject->presencemask & OGS_NAS_5GS_REGISTRATION_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_REGISTRATION_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_tracking_area_identity_list(pkbuf, &registration_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -906,6 +1186,76 @@ int ogs_nas_5gs_encode_deregistration_request_to_ue(ogs_pkbuf_t *pkbuf, ogs_nas_
encoded += size;
}
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_CAG_INFORMATION_LIST_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_CAG_INFORMATION_LIST_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_cag_information_list(pkbuf, &deregistration_request_to_ue->cag_information_list);
ogs_assert(size >= 0);
encoded += size;
}
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_EXTENDED_REJECTED_NSSAI_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_EXTENDED_REJECTED_NSSAI_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_extended_rejected_nssai(pkbuf, &deregistration_request_to_ue->extended_rejected_nssai);
ogs_assert(size >= 0);
encoded += size;
}
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_DISASTER_RETURN_WAIT_RANGE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_DISASTER_RETURN_WAIT_RANGE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_registration_wait_range(pkbuf, &deregistration_request_to_ue->disaster_return_wait_range);
ogs_assert(size >= 0);
encoded += size;
}
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_EXTENDED_CAG_INFORMATION_LIST_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_EXTENDED_CAG_INFORMATION_LIST_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_extended_cag_information_list(pkbuf, &deregistration_request_to_ue->extended_cag_information_list);
ogs_assert(size >= 0);
encoded += size;
}
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_LOWER_BOUND_TIMER_VALUE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_LOWER_BOUND_TIMER_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_gprs_timer_3(pkbuf, &deregistration_request_to_ue->lower_bound_timer_value);
ogs_assert(size >= 0);
encoded += size;
}
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_tracking_area_identity_list(pkbuf, &deregistration_request_to_ue->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_tracking_area_identity_list(pkbuf, &deregistration_request_to_ue->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -965,6 +1315,26 @@ int ogs_nas_5gs_encode_service_request(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t
encoded += size;
}
if (service_request->presencemask & OGS_NAS_5GS_SERVICE_REQUEST_UE_REQUEST_TYPE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_REQUEST_UE_REQUEST_TYPE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_ue_request_type(pkbuf, &service_request->ue_request_type);
ogs_assert(size >= 0);
encoded += size;
}
if (service_request->presencemask & OGS_NAS_5GS_SERVICE_REQUEST_PAGING_RESTRICTION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_REQUEST_PAGING_RESTRICTION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_paging_restriction(pkbuf, &service_request->paging_restriction);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -1015,7 +1385,67 @@ int ogs_nas_5gs_encode_service_reject(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_gprs_timer_3(pkbuf, &service_reject->t3448_value);
size = ogs_nas_5gs_encode_gprs_timer_2(pkbuf, &service_reject->t3448_value);
ogs_assert(size >= 0);
encoded += size;
}
if (service_reject->presencemask & OGS_NAS_5GS_SERVICE_REJECT_CAG_INFORMATION_LIST_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_REJECT_CAG_INFORMATION_LIST_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_cag_information_list(pkbuf, &service_reject->cag_information_list);
ogs_assert(size >= 0);
encoded += size;
}
if (service_reject->presencemask & OGS_NAS_5GS_SERVICE_REJECT_DISASTER_RETURN_WAIT_RANGE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_REJECT_DISASTER_RETURN_WAIT_RANGE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_registration_wait_range(pkbuf, &service_reject->disaster_return_wait_range);
ogs_assert(size >= 0);
encoded += size;
}
if (service_reject->presencemask & OGS_NAS_5GS_SERVICE_REJECT_EXTENDED_CAG_INFORMATION_LIST_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_REJECT_EXTENDED_CAG_INFORMATION_LIST_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_extended_cag_information_list(pkbuf, &service_reject->extended_cag_information_list);
ogs_assert(size >= 0);
encoded += size;
}
if (service_reject->presencemask & OGS_NAS_5GS_SERVICE_REJECT_LOWER_BOUND_TIMER_VALUE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_REJECT_LOWER_BOUND_TIMER_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_gprs_timer_3(pkbuf, &service_reject->lower_bound_timer_value);
ogs_assert(size >= 0);
encoded += size;
}
if (service_reject->presencemask & OGS_NAS_5GS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_tracking_area_identity_list(pkbuf, &service_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (service_reject->presencemask & OGS_NAS_5GS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_tracking_area_identity_list(pkbuf, &service_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
@ -1076,7 +1506,37 @@ int ogs_nas_5gs_encode_service_accept(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_gprs_timer_3(pkbuf, &service_accept->t3448_value);
size = ogs_nas_5gs_encode_gprs_timer_2(pkbuf, &service_accept->t3448_value);
ogs_assert(size >= 0);
encoded += size;
}
if (service_accept->presencemask & OGS_NAS_5GS_SERVICE_ACCEPT_5GS_ADDITIONAL_REQUEST_RESULT_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_ACCEPT_5GS_ADDITIONAL_REQUEST_RESULT_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_additional_request_result(pkbuf, &service_accept->additional_request_result);
ogs_assert(size >= 0);
encoded += size;
}
if (service_accept->presencemask & OGS_NAS_5GS_SERVICE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_tracking_area_identity_list(pkbuf, &service_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (service_accept->presencemask & OGS_NAS_5GS_SERVICE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_SERVICE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gs_tracking_area_identity_list(pkbuf, &service_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
@ -1312,6 +1772,112 @@ int ogs_nas_5gs_encode_configuration_update_command(ogs_pkbuf_t *pkbuf, ogs_nas_
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_ADDITIONAL_CONFIGURATION_INDICATION_PRESENT) {
configuration_update_command->additional_configuration_indication.type = (OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_ADDITIONAL_CONFIGURATION_INDICATION_TYPE >> 4);
size = ogs_nas_5gs_encode_additional_configuration_indication(pkbuf, &configuration_update_command->additional_configuration_indication);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_EXTENDED_REJECTED_NSSAI_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_EXTENDED_REJECTED_NSSAI_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_extended_rejected_nssai(pkbuf, &configuration_update_command->extended_rejected_nssai);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_SERVICE_LEVEL_AA_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_SERVICE_LEVEL_AA_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_service_level_aa_container(pkbuf, &configuration_update_command->service_level_aa_container);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_NSSRG_INFORMATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_NSSRG_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_nssrg_information(pkbuf, &configuration_update_command->nssrg_information);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_DISASTER_ROAMING_WAIT_RANGE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_DISASTER_ROAMING_WAIT_RANGE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_registration_wait_range(pkbuf, &configuration_update_command->disaster_roaming_wait_range);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_DISASTER_RETURN_WAIT_RANGE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_DISASTER_RETURN_WAIT_RANGE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_registration_wait_range(pkbuf, &configuration_update_command->disaster_return_wait_range);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_LIST_OF_PLMNS_TO_BE_USED_IN_DISASTER_CONDITION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_LIST_OF_PLMNS_TO_BE_USED_IN_DISASTER_CONDITION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_list_of_plmns_to_be_used_in_disaster_condition(pkbuf, &configuration_update_command->list_of_plmns_to_be_used_in_disaster_condition);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_EXTENDED_CAG_INFORMATION_LIST_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_EXTENDED_CAG_INFORMATION_LIST_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_extended_cag_information_list(pkbuf, &configuration_update_command->extended_cag_information_list);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_UPDATED_PEIPS_ASSISTANCE_INFORMATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_UPDATED_PEIPS_ASSISTANCE_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_peips_assistance_information(pkbuf, &configuration_update_command->updated_peips_assistance_information);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_NSAG_INFORMATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_NSAG_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_nsag_information(pkbuf, &configuration_update_command->nsag_information);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_command->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_PRIORITY_INDICATOR_PRESENT) {
configuration_update_command->priority_indicator.type = (OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_PRIORITY_INDICATOR_TYPE >> 4);
size = ogs_nas_5gs_encode_priority_indicator(pkbuf, &configuration_update_command->priority_indicator);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -1837,6 +2403,16 @@ int ogs_nas_5gs_encode_dl_nas_transport(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_
encoded += size;
}
if (dl_nas_transport->presencemask & OGS_NAS_5GS_DL_NAS_TRANSPORT_LOWER_BOUND_TIMER_VALUE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DL_NAS_TRANSPORT_LOWER_BOUND_TIMER_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_gprs_timer_3(pkbuf, &dl_nas_transport->lower_bound_timer_value);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -1916,12 +2492,12 @@ int ogs_nas_5gs_encode_pdu_session_establishment_request(ogs_pkbuf_t *pkbuf, ogs
encoded += size;
}
if (pdu_session_establishment_request->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_HEADER_COMPRESSION_CONFIGURATION_TYPE);
if (pdu_session_establishment_request->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_IP_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_IP_HEADER_COMPRESSION_CONFIGURATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_header_compression_configuration(pkbuf, &pdu_session_establishment_request->header_compression_configuration);
size = ogs_nas_5gs_encode_ip_header_compression_configuration(pkbuf, &pdu_session_establishment_request->ip_header_compression_configuration);
ogs_assert(size >= 0);
encoded += size;
}
@ -1956,6 +2532,66 @@ int ogs_nas_5gs_encode_pdu_session_establishment_request(ogs_pkbuf_t *pkbuf, ogs
encoded += size;
}
if (pdu_session_establishment_request->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_ethernet_header_compression_configuration(pkbuf, &pdu_session_establishment_request->ethernet_header_compression_configuration);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_establishment_request->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SUGGESTED_INTERFACE_IDENTIFIER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SUGGESTED_INTERFACE_IDENTIFIER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_pdu_address(pkbuf, &pdu_session_establishment_request->suggested_interface_identifier);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_establishment_request->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SERVICE_LEVEL_AA_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SERVICE_LEVEL_AA_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_service_level_aa_container(pkbuf, &pdu_session_establishment_request->service_level_aa_container);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_establishment_request->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_REQUESTED_MBS_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_REQUESTED_MBS_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_requested_mbs_container(pkbuf, &pdu_session_establishment_request->requested_mbs_container);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_establishment_request->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_PDU_SESSION_PAIR_ID_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_PDU_SESSION_PAIR_ID_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_pdu_session_pair_id(pkbuf, &pdu_session_establishment_request->pdu_session_pair_id);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_establishment_request->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_RSN_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_RSN_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_rsn(pkbuf, &pdu_session_establishment_request->rsn);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -2115,12 +2751,42 @@ int ogs_nas_5gs_encode_pdu_session_establishment_accept(ogs_pkbuf_t *pkbuf, ogs_
encoded += size;
}
if (pdu_session_establishment_accept->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_HEADER_COMPRESSION_CONFIGURATION_TYPE);
if (pdu_session_establishment_accept->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_IP_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_IP_HEADER_COMPRESSION_CONFIGURATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_header_compression_configuration(pkbuf, &pdu_session_establishment_accept->header_compression_configuration);
size = ogs_nas_5gs_encode_ip_header_compression_configuration(pkbuf, &pdu_session_establishment_accept->ip_header_compression_configuration);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_establishment_accept->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_ethernet_header_compression_configuration(pkbuf, &pdu_session_establishment_accept->ethernet_header_compression_configuration);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_establishment_accept->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_SERVICE_LEVEL_AA_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_SERVICE_LEVEL_AA_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_service_level_aa_container(pkbuf, &pdu_session_establishment_accept->service_level_aa_container);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_establishment_accept->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_RECEIVED_MBS_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_RECEIVED_MBS_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_received_mbs_container(pkbuf, &pdu_session_establishment_accept->received_mbs_container);
ogs_assert(size >= 0);
encoded += size;
}
@ -2168,6 +2834,16 @@ int ogs_nas_5gs_encode_pdu_session_establishment_reject(ogs_pkbuf_t *pkbuf, ogs_
encoded += size;
}
if (pdu_session_establishment_reject->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gsm_congestion_re_attempt_indicator(pkbuf, &pdu_session_establishment_reject->gsm_congestion_re_attempt_indicator);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_establishment_reject->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_TYPE);
ogs_assert(size >= 0);
@ -2188,12 +2864,12 @@ int ogs_nas_5gs_encode_pdu_session_establishment_reject(ogs_pkbuf_t *pkbuf, ogs_
encoded += size;
}
if (pdu_session_establishment_reject->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_TYPE);
if (pdu_session_establishment_reject->presencemask & OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_SERVICE_LEVEL_AA_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_SERVICE_LEVEL_AA_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gsm_congestion_re_attempt_indicator(pkbuf, &pdu_session_establishment_reject->gsm_congestion_re_attempt_indicator);
size = ogs_nas_5gs_encode_service_level_aa_container(pkbuf, &pdu_session_establishment_reject->service_level_aa_container);
ogs_assert(size >= 0);
encoded += size;
}
@ -2388,12 +3064,42 @@ int ogs_nas_5gs_encode_pdu_session_modification_request(ogs_pkbuf_t *pkbuf, ogs_
encoded += size;
}
if (pdu_session_modification_request->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_HEADER_COMPRESSION_CONFIGURATION_TYPE);
if (pdu_session_modification_request->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_IP_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_IP_HEADER_COMPRESSION_CONFIGURATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_header_compression_configuration(pkbuf, &pdu_session_modification_request->header_compression_configuration);
size = ogs_nas_5gs_encode_header_compression_configuration(pkbuf, &pdu_session_modification_request->ip_header_compression_configuration);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_modification_request->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_ethernet_header_compression_configuration(pkbuf, &pdu_session_modification_request->ethernet_header_compression_configuration);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_modification_request->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_REQUESTED_MBS_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_REQUESTED_MBS_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_requested_mbs_container(pkbuf, &pdu_session_modification_request->requested_mbs_container);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_modification_request->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_SERVICE_LEVEL_AA_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_SERVICE_LEVEL_AA_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_service_level_aa_container(pkbuf, &pdu_session_modification_request->service_level_aa_container);
ogs_assert(size >= 0);
encoded += size;
}
@ -2423,6 +3129,16 @@ int ogs_nas_5gs_encode_pdu_session_modification_reject(ogs_pkbuf_t *pkbuf, ogs_n
encoded += size;
}
if (pdu_session_modification_reject->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gsm_congestion_re_attempt_indicator(pkbuf, &pdu_session_modification_reject->gsm_congestion_re_attempt_indicator);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_modification_reject->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_TYPE);
ogs_assert(size >= 0);
@ -2443,16 +3159,6 @@ int ogs_nas_5gs_encode_pdu_session_modification_reject(ogs_pkbuf_t *pkbuf, ogs_n
encoded += size;
}
if (pdu_session_modification_reject->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_5gsm_congestion_re_attempt_indicator(pkbuf, &pdu_session_modification_reject->gsm_congestion_re_attempt_indicator);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -2552,12 +3258,12 @@ int ogs_nas_5gs_encode_pdu_session_modification_command(ogs_pkbuf_t *pkbuf, ogs_
encoded += size;
}
if (pdu_session_modification_command->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_HEADER_COMPRESSION_CONFIGURATION_TYPE);
if (pdu_session_modification_command->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_IP_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_IP_HEADER_COMPRESSION_CONFIGURATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_header_compression_configuration(pkbuf, &pdu_session_modification_command->header_compression_configuration);
size = ogs_nas_5gs_encode_ip_header_compression_configuration(pkbuf, &pdu_session_modification_command->ip_header_compression_configuration);
ogs_assert(size >= 0);
encoded += size;
}
@ -2582,6 +3288,36 @@ int ogs_nas_5gs_encode_pdu_session_modification_command(ogs_pkbuf_t *pkbuf, ogs_
encoded += size;
}
if (pdu_session_modification_command->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_ethernet_header_compression_configuration(pkbuf, &pdu_session_modification_command->ethernet_header_compression_configuration);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_modification_command->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_RECEIVED_MBS_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_RECEIVED_MBS_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_received_mbs_container(pkbuf, &pdu_session_modification_command->received_mbs_container);
ogs_assert(size >= 0);
encoded += size;
}
if (pdu_session_modification_command->presencemask & OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_SERVICE_LEVEL_AA_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_SERVICE_LEVEL_AA_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_service_level_aa_container(pkbuf, &pdu_session_modification_command->service_level_aa_container);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -2757,6 +3493,16 @@ int ogs_nas_5gs_encode_pdu_session_release_command(ogs_pkbuf_t *pkbuf, ogs_nas_5
encoded += size;
}
if (pdu_session_release_command->presencemask & OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_SERVICE_LEVEL_AA_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_SERVICE_LEVEL_AA_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_service_level_aa_container(pkbuf, &pdu_session_release_command->service_level_aa_container);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}

View File

@ -1,7 +1,7 @@
/*
* The MIT License
*
* Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
* Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
@ -28,8 +28,8 @@
/*******************************************************************************
* This file had been created by nas-message.py script v0.2.0
* Please do not modify this file but regenerate it via script.
* Created on: 2022-07-11 07:09:47.151738 by ubuntu
* from 24501-g41.docx
* Created on: 2023-03-04 20:50:00.874596 by acetcom
* from 24501-h90.docx
******************************************************************************/
#include "ogs-nas-5gs.h"
@ -82,6 +82,52 @@ int ogs_nas_5gs_encode_additional_information(ogs_pkbuf_t *pkbuf, ogs_nas_additi
return size;
}
/* 9.11.2.10 Service-level-AA container
* O TLV-E 6-n */
int ogs_nas_5gs_decode_service_level_aa_container(ogs_nas_service_level_aa_container_t *service_level_aa_container, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_service_level_aa_container_t *source = (ogs_nas_service_level_aa_container_t *)pkbuf->data;
service_level_aa_container->length = be16toh(source->length);
size = service_level_aa_container->length + sizeof(service_level_aa_container->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
service_level_aa_container->buffer = pkbuf->data - size + sizeof(service_level_aa_container->length);
ogs_trace(" SERVICE_LEVEL_AA_CONTAINER - ");
ogs_log_hexdump(OGS_LOG_TRACE, (void*)service_level_aa_container->buffer, service_level_aa_container->length);
return size;
}
int ogs_nas_5gs_encode_service_level_aa_container(ogs_pkbuf_t *pkbuf, ogs_nas_service_level_aa_container_t *service_level_aa_container)
{
int size = 0;
int target;
ogs_assert(service_level_aa_container);
ogs_assert(service_level_aa_container->buffer);
size = sizeof(service_level_aa_container->length);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
target = htobe16(service_level_aa_container->length);
memcpy(pkbuf->data - size, &target, size);
size = service_level_aa_container->length;
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, service_level_aa_container->buffer, size);
ogs_trace(" SERVICE_LEVEL_AA_CONTAINER - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return service_level_aa_container->length + sizeof(service_level_aa_container->length);
}
/* 9.11.2.1A Access type
* M V 1/2 */
int ogs_nas_5gs_decode_access_type(ogs_nas_access_type_t *access_type, ogs_pkbuf_t *pkbuf)
@ -794,7 +840,7 @@ int ogs_nas_5gs_encode_cag_information_list(ogs_pkbuf_t *pkbuf, ogs_nas_cag_info
}
/* 9.11.3.18C Ciphering key data
* O TLV-E x-n */
* O TLV-E 34-n */
int ogs_nas_5gs_decode_ciphering_key_data(ogs_nas_ciphering_key_data_t *ciphering_key_data, ogs_pkbuf_t *pkbuf)
{
int size = 0;
@ -1151,7 +1197,7 @@ int ogs_nas_5gs_encode_extended_emergency_number_list(ogs_pkbuf_t *pkbuf, ogs_na
}
/* 9.11.3.26A Extended DRX parameters
* O TLV 3 */
* O TLV 3-4 */
int ogs_nas_5gs_decode_extended_drx_parameters(ogs_nas_extended_drx_parameters_t *extended_drx_parameters, ogs_pkbuf_t *pkbuf)
{
int size = 0;
@ -1815,7 +1861,7 @@ int ogs_nas_5gs_encode_nssai_inclusion_mode(ogs_pkbuf_t *pkbuf, ogs_nas_nssai_in
}
/* 9.11.3.38 Operator-defined access category definitions
* O TLV-E 3-n */
* O TLV-E 3-8323 */
int ogs_nas_5gs_decode_operator_defined_access_category_definitions(ogs_nas_operator_defined_access_category_definitions_t *operator_defined_access_category_definitions, ogs_pkbuf_t *pkbuf)
{
int size = 0;
@ -3016,7 +3062,7 @@ int ogs_nas_5gs_encode_wus_assistance_information(ogs_pkbuf_t *pkbuf, ogs_nas_wu
}
/* 9.11.3.72 N5GC indication
* O T 1 */
* O TV 1 */
int ogs_nas_5gs_decode_n5gc_indication(ogs_nas_n5gc_indication_t *n5gc_indication, ogs_pkbuf_t *pkbuf)
{
int size = sizeof(ogs_nas_n5gc_indication_t);
@ -3047,6 +3093,233 @@ int ogs_nas_5gs_encode_n5gc_indication(ogs_pkbuf_t *pkbuf, ogs_nas_n5gc_indicati
return size;
}
/* 9.11.3.73 NB-N1 mode DRX parameters
* O TLV 3 */
int ogs_nas_5gs_decode_nb_n1_mode_drx_parameters(ogs_nas_nb_n1_mode_drx_parameters_t *nb_n1_mode_drx_parameters, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_nb_n1_mode_drx_parameters_t *source = (ogs_nas_nb_n1_mode_drx_parameters_t *)pkbuf->data;
nb_n1_mode_drx_parameters->length = source->length;
size = nb_n1_mode_drx_parameters->length + sizeof(nb_n1_mode_drx_parameters->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*nb_n1_mode_drx_parameters) < size) return -1;
memcpy(nb_n1_mode_drx_parameters, pkbuf->data - size, size);
ogs_trace(" NB_N1_MODE_DRX_PARAMETERS - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_nb_n1_mode_drx_parameters(ogs_pkbuf_t *pkbuf, ogs_nas_nb_n1_mode_drx_parameters_t *nb_n1_mode_drx_parameters)
{
int size = nb_n1_mode_drx_parameters->length + sizeof(nb_n1_mode_drx_parameters->length);
ogs_nas_nb_n1_mode_drx_parameters_t target;
memcpy(&target, nb_n1_mode_drx_parameters, sizeof(ogs_nas_nb_n1_mode_drx_parameters_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" NB_N1_MODE_DRX_PARAMETERS - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.74 Additional configuration indication
* O TV 1 */
int ogs_nas_5gs_decode_additional_configuration_indication(ogs_nas_additional_configuration_indication_t *additional_configuration_indication, ogs_pkbuf_t *pkbuf)
{
int size = sizeof(ogs_nas_additional_configuration_indication_t);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
memcpy(additional_configuration_indication, pkbuf->data - size, size);
ogs_trace(" ADDITIONAL_CONFIGURATION_INDICATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_additional_configuration_indication(ogs_pkbuf_t *pkbuf, ogs_nas_additional_configuration_indication_t *additional_configuration_indication)
{
int size = sizeof(ogs_nas_additional_configuration_indication_t);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, additional_configuration_indication, size);
ogs_trace(" ADDITIONAL_CONFIGURATION_INDICATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.75 Extended rejected NSSAI
* O TLV 5-90 */
int ogs_nas_5gs_decode_extended_rejected_nssai(ogs_nas_extended_rejected_nssai_t *extended_rejected_nssai, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_extended_rejected_nssai_t *source = (ogs_nas_extended_rejected_nssai_t *)pkbuf->data;
extended_rejected_nssai->length = source->length;
size = extended_rejected_nssai->length + sizeof(extended_rejected_nssai->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*extended_rejected_nssai) < size) return -1;
memcpy(extended_rejected_nssai, pkbuf->data - size, size);
ogs_trace(" EXTENDED_REJECTED_NSSAI - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_extended_rejected_nssai(ogs_pkbuf_t *pkbuf, ogs_nas_extended_rejected_nssai_t *extended_rejected_nssai)
{
int size = extended_rejected_nssai->length + sizeof(extended_rejected_nssai->length);
ogs_nas_extended_rejected_nssai_t target;
memcpy(&target, extended_rejected_nssai, sizeof(ogs_nas_extended_rejected_nssai_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" EXTENDED_REJECTED_NSSAI - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.76 UE request type
* O TLV 3 */
int ogs_nas_5gs_decode_ue_request_type(ogs_nas_ue_request_type_t *ue_request_type, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_ue_request_type_t *source = (ogs_nas_ue_request_type_t *)pkbuf->data;
ue_request_type->length = source->length;
size = ue_request_type->length + sizeof(ue_request_type->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*ue_request_type) < size) return -1;
memcpy(ue_request_type, pkbuf->data - size, size);
ogs_trace(" UE_REQUEST_TYPE - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_ue_request_type(ogs_pkbuf_t *pkbuf, ogs_nas_ue_request_type_t *ue_request_type)
{
int size = ue_request_type->length + sizeof(ue_request_type->length);
ogs_nas_ue_request_type_t target;
memcpy(&target, ue_request_type, sizeof(ogs_nas_ue_request_type_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" UE_REQUEST_TYPE - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.77 Paging restriction
* O TLV 3-35 */
int ogs_nas_5gs_decode_paging_restriction(ogs_nas_paging_restriction_t *paging_restriction, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_paging_restriction_t *source = (ogs_nas_paging_restriction_t *)pkbuf->data;
paging_restriction->length = source->length;
size = paging_restriction->length + sizeof(paging_restriction->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*paging_restriction) < size) return -1;
memcpy(paging_restriction, pkbuf->data - size, size);
ogs_trace(" PAGING_RESTRICTION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_paging_restriction(ogs_pkbuf_t *pkbuf, ogs_nas_paging_restriction_t *paging_restriction)
{
int size = paging_restriction->length + sizeof(paging_restriction->length);
ogs_nas_paging_restriction_t target;
memcpy(&target, paging_restriction, sizeof(ogs_nas_paging_restriction_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" PAGING_RESTRICTION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.79 NID
* O TLV 8 */
int ogs_nas_5gs_decode_nid(ogs_nas_nid_t *nid, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_nid_t *source = (ogs_nas_nid_t *)pkbuf->data;
nid->length = source->length;
size = nid->length + sizeof(nid->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*nid) < size) return -1;
memcpy(nid, pkbuf->data - size, size);
ogs_trace(" NID - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_nid(ogs_pkbuf_t *pkbuf, ogs_nas_nid_t *nid)
{
int size = nid->length + sizeof(nid->length);
ogs_nas_nid_t target;
memcpy(&target, nid, sizeof(ogs_nas_nid_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" NID - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.8 5GS tracking area identity
* O TV 7 */
int ogs_nas_5gs_decode_5gs_tracking_area_identity(ogs_nas_5gs_tracking_area_identity_t *tracking_area_identity, ogs_pkbuf_t *pkbuf)
@ -3085,6 +3358,339 @@ int ogs_nas_5gs_encode_5gs_tracking_area_identity(ogs_pkbuf_t *pkbuf, ogs_nas_5g
return size;
}
/* 9.11.3.80 PEIPS assistance information
* O TLV 3-n */
int ogs_nas_5gs_decode_peips_assistance_information(ogs_nas_peips_assistance_information_t *peips_assistance_information, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_peips_assistance_information_t *source = (ogs_nas_peips_assistance_information_t *)pkbuf->data;
peips_assistance_information->length = source->length;
size = peips_assistance_information->length + sizeof(peips_assistance_information->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*peips_assistance_information) < size) return -1;
memcpy(peips_assistance_information, pkbuf->data - size, size);
ogs_trace(" PEIPS_ASSISTANCE_INFORMATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_peips_assistance_information(ogs_pkbuf_t *pkbuf, ogs_nas_peips_assistance_information_t *peips_assistance_information)
{
int size = peips_assistance_information->length + sizeof(peips_assistance_information->length);
ogs_nas_peips_assistance_information_t target;
memcpy(&target, peips_assistance_information, sizeof(ogs_nas_peips_assistance_information_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" PEIPS_ASSISTANCE_INFORMATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.81 5GS additional request result
* O TLV 3 */
int ogs_nas_5gs_decode_5gs_additional_request_result(ogs_nas_5gs_additional_request_result_t *additional_request_result, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_5gs_additional_request_result_t *source = (ogs_nas_5gs_additional_request_result_t *)pkbuf->data;
additional_request_result->length = source->length;
size = additional_request_result->length + sizeof(additional_request_result->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*additional_request_result) < size) return -1;
memcpy(additional_request_result, pkbuf->data - size, size);
ogs_trace(" 5GS_ADDITIONAL_REQUEST_RESULT - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_5gs_additional_request_result(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_additional_request_result_t *additional_request_result)
{
int size = additional_request_result->length + sizeof(additional_request_result->length);
ogs_nas_5gs_additional_request_result_t target;
memcpy(&target, additional_request_result, sizeof(ogs_nas_5gs_additional_request_result_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" 5GS_ADDITIONAL_REQUEST_RESULT - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.82 NSSRG information
* O TLV-E 7-4099 */
int ogs_nas_5gs_decode_nssrg_information(ogs_nas_nssrg_information_t *nssrg_information, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_nssrg_information_t *source = (ogs_nas_nssrg_information_t *)pkbuf->data;
nssrg_information->length = be16toh(source->length);
size = nssrg_information->length + sizeof(nssrg_information->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
nssrg_information->buffer = pkbuf->data - size + sizeof(nssrg_information->length);
ogs_trace(" NSSRG_INFORMATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, (void*)nssrg_information->buffer, nssrg_information->length);
return size;
}
int ogs_nas_5gs_encode_nssrg_information(ogs_pkbuf_t *pkbuf, ogs_nas_nssrg_information_t *nssrg_information)
{
int size = 0;
int target;
ogs_assert(nssrg_information);
ogs_assert(nssrg_information->buffer);
size = sizeof(nssrg_information->length);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
target = htobe16(nssrg_information->length);
memcpy(pkbuf->data - size, &target, size);
size = nssrg_information->length;
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, nssrg_information->buffer, size);
ogs_trace(" NSSRG_INFORMATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return nssrg_information->length + sizeof(nssrg_information->length);
}
/* 9.11.3.83 List of PLMNs to be used in disaster condition
* O TLV 2-n */
int ogs_nas_5gs_decode_list_of_plmns_to_be_used_in_disaster_condition(ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t *list_of_plmns_to_be_used_in_disaster_condition, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t *source = (ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t *)pkbuf->data;
list_of_plmns_to_be_used_in_disaster_condition->length = source->length;
size = list_of_plmns_to_be_used_in_disaster_condition->length + sizeof(list_of_plmns_to_be_used_in_disaster_condition->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*list_of_plmns_to_be_used_in_disaster_condition) < size) return -1;
memcpy(list_of_plmns_to_be_used_in_disaster_condition, pkbuf->data - size, size);
ogs_trace(" LIST_OF_PLMNS_TO_BE_USED_IN_DISASTER_CONDITION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_list_of_plmns_to_be_used_in_disaster_condition(ogs_pkbuf_t *pkbuf, ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t *list_of_plmns_to_be_used_in_disaster_condition)
{
int size = list_of_plmns_to_be_used_in_disaster_condition->length + sizeof(list_of_plmns_to_be_used_in_disaster_condition->length);
ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t target;
memcpy(&target, list_of_plmns_to_be_used_in_disaster_condition, sizeof(ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" LIST_OF_PLMNS_TO_BE_USED_IN_DISASTER_CONDITION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.84 Registration wait range
* O TLV 4 */
int ogs_nas_5gs_decode_registration_wait_range(ogs_nas_registration_wait_range_t *registration_wait_range, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_registration_wait_range_t *source = (ogs_nas_registration_wait_range_t *)pkbuf->data;
registration_wait_range->length = source->length;
size = registration_wait_range->length + sizeof(registration_wait_range->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*registration_wait_range) < size) return -1;
memcpy(registration_wait_range, pkbuf->data - size, size);
ogs_trace(" REGISTRATION_WAIT_RANGE - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_registration_wait_range(ogs_pkbuf_t *pkbuf, ogs_nas_registration_wait_range_t *registration_wait_range)
{
int size = registration_wait_range->length + sizeof(registration_wait_range->length);
ogs_nas_registration_wait_range_t target;
memcpy(&target, registration_wait_range, sizeof(ogs_nas_registration_wait_range_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" REGISTRATION_WAIT_RANGE - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.85 PLMN identity
* O TLV 5 */
int ogs_nas_5gs_decode_plmn_identity(ogs_nas_plmn_identity_t *plmn_identity, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_plmn_identity_t *source = (ogs_nas_plmn_identity_t *)pkbuf->data;
plmn_identity->length = source->length;
size = plmn_identity->length + sizeof(plmn_identity->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*plmn_identity) < size) return -1;
memcpy(plmn_identity, pkbuf->data - size, size);
ogs_trace(" PLMN_IDENTITY - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_plmn_identity(ogs_pkbuf_t *pkbuf, ogs_nas_plmn_identity_t *plmn_identity)
{
int size = plmn_identity->length + sizeof(plmn_identity->length);
ogs_nas_plmn_identity_t target;
memcpy(&target, plmn_identity, sizeof(ogs_nas_plmn_identity_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" PLMN_IDENTITY - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.86 Extended CAG information list
* O TLV-E 3-n */
int ogs_nas_5gs_decode_extended_cag_information_list(ogs_nas_extended_cag_information_list_t *extended_cag_information_list, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_extended_cag_information_list_t *source = (ogs_nas_extended_cag_information_list_t *)pkbuf->data;
extended_cag_information_list->length = be16toh(source->length);
size = extended_cag_information_list->length + sizeof(extended_cag_information_list->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
extended_cag_information_list->buffer = pkbuf->data - size + sizeof(extended_cag_information_list->length);
ogs_trace(" EXTENDED_CAG_INFORMATION_LIST - ");
ogs_log_hexdump(OGS_LOG_TRACE, (void*)extended_cag_information_list->buffer, extended_cag_information_list->length);
return size;
}
int ogs_nas_5gs_encode_extended_cag_information_list(ogs_pkbuf_t *pkbuf, ogs_nas_extended_cag_information_list_t *extended_cag_information_list)
{
int size = 0;
int target;
ogs_assert(extended_cag_information_list);
ogs_assert(extended_cag_information_list->buffer);
size = sizeof(extended_cag_information_list->length);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
target = htobe16(extended_cag_information_list->length);
memcpy(pkbuf->data - size, &target, size);
size = extended_cag_information_list->length;
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, extended_cag_information_list->buffer, size);
ogs_trace(" EXTENDED_CAG_INFORMATION_LIST - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return extended_cag_information_list->length + sizeof(extended_cag_information_list->length);
}
/* 9.11.3.87 NSAG information
* O TLV-E 9-3143 */
int ogs_nas_5gs_decode_nsag_information(ogs_nas_nsag_information_t *nsag_information, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_nsag_information_t *source = (ogs_nas_nsag_information_t *)pkbuf->data;
nsag_information->length = be16toh(source->length);
size = nsag_information->length + sizeof(nsag_information->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
nsag_information->buffer = pkbuf->data - size + sizeof(nsag_information->length);
ogs_trace(" NSAG_INFORMATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, (void*)nsag_information->buffer, nsag_information->length);
return size;
}
int ogs_nas_5gs_encode_nsag_information(ogs_pkbuf_t *pkbuf, ogs_nas_nsag_information_t *nsag_information)
{
int size = 0;
int target;
ogs_assert(nsag_information);
ogs_assert(nsag_information->buffer);
size = sizeof(nsag_information->length);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
target = htobe16(nsag_information->length);
memcpy(pkbuf->data - size, &target, size);
size = nsag_information->length;
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, nsag_information->buffer, size);
ogs_trace(" NSAG_INFORMATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return nsag_information->length + sizeof(nsag_information->length);
}
/* 9.11.3.9 5GS tracking area identity list
* O TLV 9-114 */
int ogs_nas_5gs_decode_5gs_tracking_area_identity_list(ogs_nas_5gs_tracking_area_identity_list_t *tracking_area_identity_list, ogs_pkbuf_t *pkbuf)
@ -3124,6 +3730,38 @@ int ogs_nas_5gs_encode_5gs_tracking_area_identity_list(ogs_pkbuf_t *pkbuf, ogs_n
return size;
}
/* 9.11.3.91 Priority indicator
* O TV 1 */
int ogs_nas_5gs_decode_priority_indicator(ogs_nas_priority_indicator_t *priority_indicator, ogs_pkbuf_t *pkbuf)
{
int size = sizeof(ogs_nas_priority_indicator_t);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
memcpy(priority_indicator, pkbuf->data - size, size);
ogs_trace(" PRIORITY_INDICATOR - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_priority_indicator(ogs_pkbuf_t *pkbuf, ogs_nas_priority_indicator_t *priority_indicator)
{
int size = sizeof(ogs_nas_priority_indicator_t);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, priority_indicator, size);
ogs_trace(" PRIORITY_INDICATOR - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.9A 5GS update type
* O TLV 3 */
int ogs_nas_5gs_decode_5gs_update_type(ogs_nas_5gs_update_type_t *update_type, ogs_pkbuf_t *pkbuf)
@ -3203,7 +3841,7 @@ int ogs_nas_5gs_encode_5gsm_capability(ogs_pkbuf_t *pkbuf, ogs_nas_5gsm_capabili
}
/* 9.11.4.10 PDU address
* O TLV 7, 11 or 15 */
* O TLV 11 */
int ogs_nas_5gs_decode_pdu_address(ogs_nas_pdu_address_t *pdu_address, ogs_pkbuf_t *pkbuf)
{
int size = 0;
@ -3749,6 +4387,45 @@ int ogs_nas_5gs_encode_control_plane_only_indication(ogs_pkbuf_t *pkbuf, ogs_nas
return size;
}
/* 9.11.4.24 IP header compression configuration
* O TLV 5-257 */
int ogs_nas_5gs_decode_ip_header_compression_configuration(ogs_nas_ip_header_compression_configuration_t *ip_header_compression_configuration, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_ip_header_compression_configuration_t *source = (ogs_nas_ip_header_compression_configuration_t *)pkbuf->data;
ip_header_compression_configuration->length = source->length;
size = ip_header_compression_configuration->length + sizeof(ip_header_compression_configuration->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*ip_header_compression_configuration) < size) return -1;
memcpy(ip_header_compression_configuration, pkbuf->data - size, size);
ogs_trace(" IP_HEADER_COMPRESSION_CONFIGURATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_ip_header_compression_configuration(ogs_pkbuf_t *pkbuf, ogs_nas_ip_header_compression_configuration_t *ip_header_compression_configuration)
{
int size = ip_header_compression_configuration->length + sizeof(ip_header_compression_configuration->length);
ogs_nas_ip_header_compression_configuration_t target;
memcpy(&target, ip_header_compression_configuration, sizeof(ogs_nas_ip_header_compression_configuration_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" IP_HEADER_COMPRESSION_CONFIGURATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.4.24 Header compression configuration
* O TLV 5-257 */
int ogs_nas_5gs_decode_header_compression_configuration(ogs_nas_header_compression_configuration_t *header_compression_configuration, ogs_pkbuf_t *pkbuf)
@ -3871,7 +4548,7 @@ int ogs_nas_5gs_encode_ue_ds_tt_residence_time(ogs_pkbuf_t *pkbuf, ogs_nas_ue_ds
}
/* 9.11.4.27 Port management information container
* O TLV-E 4-65538 */
* O TLV-E 8-65538 */
int ogs_nas_5gs_decode_port_management_information_container(ogs_nas_port_management_information_container_t *port_management_information_container, ogs_pkbuf_t *pkbuf)
{
int size = 0;
@ -3916,6 +4593,45 @@ int ogs_nas_5gs_encode_port_management_information_container(ogs_pkbuf_t *pkbuf,
return port_management_information_container->length + sizeof(port_management_information_container->length);
}
/* 9.11.4.28 Ethernet header compression configuration
* O TLV 3 */
int ogs_nas_5gs_decode_ethernet_header_compression_configuration(ogs_nas_ethernet_header_compression_configuration_t *ethernet_header_compression_configuration, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_ethernet_header_compression_configuration_t *source = (ogs_nas_ethernet_header_compression_configuration_t *)pkbuf->data;
ethernet_header_compression_configuration->length = source->length;
size = ethernet_header_compression_configuration->length + sizeof(ethernet_header_compression_configuration->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*ethernet_header_compression_configuration) < size) return -1;
memcpy(ethernet_header_compression_configuration, pkbuf->data - size, size);
ogs_trace(" ETHERNET_HEADER_COMPRESSION_CONFIGURATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_ethernet_header_compression_configuration(ogs_pkbuf_t *pkbuf, ogs_nas_ethernet_header_compression_configuration_t *ethernet_header_compression_configuration)
{
int size = ethernet_header_compression_configuration->length + sizeof(ethernet_header_compression_configuration->length);
ogs_nas_ethernet_header_compression_configuration_t target;
memcpy(&target, ethernet_header_compression_configuration, sizeof(ogs_nas_ethernet_header_compression_configuration_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" ETHERNET_HEADER_COMPRESSION_CONFIGURATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.4.3 Always-on PDU session indication
* O TV 1 */
int ogs_nas_5gs_decode_always_on_pdu_session_indication(ogs_nas_always_on_pdu_session_indication_t *always_on_pdu_session_indication, ogs_pkbuf_t *pkbuf)
@ -3948,6 +4664,176 @@ int ogs_nas_5gs_encode_always_on_pdu_session_indication(ogs_pkbuf_t *pkbuf, ogs_
return size;
}
/* 9.11.4.30 Requested MBS container
* O TLV-E 8-65538 */
int ogs_nas_5gs_decode_requested_mbs_container(ogs_nas_requested_mbs_container_t *requested_mbs_container, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_requested_mbs_container_t *source = (ogs_nas_requested_mbs_container_t *)pkbuf->data;
requested_mbs_container->length = be16toh(source->length);
size = requested_mbs_container->length + sizeof(requested_mbs_container->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
requested_mbs_container->buffer = pkbuf->data - size + sizeof(requested_mbs_container->length);
ogs_trace(" REQUESTED_MBS_CONTAINER - ");
ogs_log_hexdump(OGS_LOG_TRACE, (void*)requested_mbs_container->buffer, requested_mbs_container->length);
return size;
}
int ogs_nas_5gs_encode_requested_mbs_container(ogs_pkbuf_t *pkbuf, ogs_nas_requested_mbs_container_t *requested_mbs_container)
{
int size = 0;
int target;
ogs_assert(requested_mbs_container);
ogs_assert(requested_mbs_container->buffer);
size = sizeof(requested_mbs_container->length);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
target = htobe16(requested_mbs_container->length);
memcpy(pkbuf->data - size, &target, size);
size = requested_mbs_container->length;
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, requested_mbs_container->buffer, size);
ogs_trace(" REQUESTED_MBS_CONTAINER - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return requested_mbs_container->length + sizeof(requested_mbs_container->length);
}
/* 9.11.4.31 Received MBS container
* O TLV-E 9-65538 */
int ogs_nas_5gs_decode_received_mbs_container(ogs_nas_received_mbs_container_t *received_mbs_container, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_received_mbs_container_t *source = (ogs_nas_received_mbs_container_t *)pkbuf->data;
received_mbs_container->length = be16toh(source->length);
size = received_mbs_container->length + sizeof(received_mbs_container->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
received_mbs_container->buffer = pkbuf->data - size + sizeof(received_mbs_container->length);
ogs_trace(" RECEIVED_MBS_CONTAINER - ");
ogs_log_hexdump(OGS_LOG_TRACE, (void*)received_mbs_container->buffer, received_mbs_container->length);
return size;
}
int ogs_nas_5gs_encode_received_mbs_container(ogs_pkbuf_t *pkbuf, ogs_nas_received_mbs_container_t *received_mbs_container)
{
int size = 0;
int target;
ogs_assert(received_mbs_container);
ogs_assert(received_mbs_container->buffer);
size = sizeof(received_mbs_container->length);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
target = htobe16(received_mbs_container->length);
memcpy(pkbuf->data - size, &target, size);
size = received_mbs_container->length;
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, received_mbs_container->buffer, size);
ogs_trace(" RECEIVED_MBS_CONTAINER - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return received_mbs_container->length + sizeof(received_mbs_container->length);
}
/* 9.11.4.32 PDU session pair ID
* O TLV 3 */
int ogs_nas_5gs_decode_pdu_session_pair_id(ogs_nas_pdu_session_pair_id_t *pdu_session_pair_id, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_pdu_session_pair_id_t *source = (ogs_nas_pdu_session_pair_id_t *)pkbuf->data;
pdu_session_pair_id->length = source->length;
size = pdu_session_pair_id->length + sizeof(pdu_session_pair_id->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*pdu_session_pair_id) < size) return -1;
memcpy(pdu_session_pair_id, pkbuf->data - size, size);
ogs_trace(" PDU_SESSION_PAIR_ID - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_pdu_session_pair_id(ogs_pkbuf_t *pkbuf, ogs_nas_pdu_session_pair_id_t *pdu_session_pair_id)
{
int size = pdu_session_pair_id->length + sizeof(pdu_session_pair_id->length);
ogs_nas_pdu_session_pair_id_t target;
memcpy(&target, pdu_session_pair_id, sizeof(ogs_nas_pdu_session_pair_id_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" PDU_SESSION_PAIR_ID - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.4.33 RSN
* O TLV 3 */
int ogs_nas_5gs_decode_rsn(ogs_nas_rsn_t *rsn, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_rsn_t *source = (ogs_nas_rsn_t *)pkbuf->data;
rsn->length = source->length;
size = rsn->length + sizeof(rsn->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*rsn) < size) return -1;
memcpy(rsn, pkbuf->data - size, size);
ogs_trace(" RSN - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_rsn(ogs_pkbuf_t *pkbuf, ogs_nas_rsn_t *rsn)
{
int size = rsn->length + sizeof(rsn->length);
ogs_nas_rsn_t target;
memcpy(&target, rsn, sizeof(ogs_nas_rsn_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" RSN - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.4.4 Always-on PDU session requested
* O TV 1 */
int ogs_nas_5gs_decode_always_on_pdu_session_requested(ogs_nas_always_on_pdu_session_requested_t *always_on_pdu_session_requested, ogs_pkbuf_t *pkbuf)

View File

@ -1,7 +1,7 @@
/*
* The MIT License
*
* Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
* Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
@ -28,8 +28,8 @@
/*******************************************************************************
* This file had been created by nas-message.py script v0.2.0
* Please do not modify this file but regenerate it via script.
* Created on: 2022-07-11 07:09:47.146947 by ubuntu
* from 24501-g41.docx
* Created on: 2023-03-04 20:50:00.872007 by acetcom
* from 24501-h90.docx
******************************************************************************/
#if !defined(OGS_NAS_INSIDE) && !defined(OGS_NAS_COMPILATION)
@ -46,6 +46,7 @@ extern "C" {
int ogs_nas_5gs_encode_optional_type(ogs_pkbuf_t *pkbuf, uint8_t type);
int ogs_nas_5gs_decode_additional_information(ogs_nas_additional_information_t *additional_information, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_service_level_aa_container(ogs_nas_service_level_aa_container_t *service_level_aa_container, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_access_type(ogs_nas_access_type_t *access_type, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_dnn(ogs_nas_dnn_t *dnn, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_eap_message(ogs_nas_eap_message_t *eap_message, ogs_pkbuf_t *pkbuf);
@ -123,8 +124,23 @@ int ogs_nas_5gs_decode_5gs_registration_type(ogs_nas_5gs_registration_type_t *re
int ogs_nas_5gs_decode_truncated_5g_s_tmsi_configuration(ogs_nas_truncated_5g_s_tmsi_configuration_t *truncated_s_tmsi_configuration, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_wus_assistance_information(ogs_nas_wus_assistance_information_t *wus_assistance_information, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_n5gc_indication(ogs_nas_n5gc_indication_t *n5gc_indication, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_nb_n1_mode_drx_parameters(ogs_nas_nb_n1_mode_drx_parameters_t *nb_n1_mode_drx_parameters, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_additional_configuration_indication(ogs_nas_additional_configuration_indication_t *additional_configuration_indication, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_extended_rejected_nssai(ogs_nas_extended_rejected_nssai_t *extended_rejected_nssai, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_ue_request_type(ogs_nas_ue_request_type_t *ue_request_type, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_paging_restriction(ogs_nas_paging_restriction_t *paging_restriction, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_nid(ogs_nas_nid_t *nid, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_5gs_tracking_area_identity(ogs_nas_5gs_tracking_area_identity_t *tracking_area_identity, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_peips_assistance_information(ogs_nas_peips_assistance_information_t *peips_assistance_information, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_5gs_additional_request_result(ogs_nas_5gs_additional_request_result_t *additional_request_result, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_nssrg_information(ogs_nas_nssrg_information_t *nssrg_information, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_list_of_plmns_to_be_used_in_disaster_condition(ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t *list_of_plmns_to_be_used_in_disaster_condition, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_registration_wait_range(ogs_nas_registration_wait_range_t *registration_wait_range, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_plmn_identity(ogs_nas_plmn_identity_t *plmn_identity, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_extended_cag_information_list(ogs_nas_extended_cag_information_list_t *extended_cag_information_list, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_nsag_information(ogs_nas_nsag_information_t *nsag_information, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_5gs_tracking_area_identity_list(ogs_nas_5gs_tracking_area_identity_list_t *tracking_area_identity_list, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_priority_indicator(ogs_nas_priority_indicator_t *priority_indicator, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_5gs_update_type(ogs_nas_5gs_update_type_t *update_type, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_5gsm_capability(ogs_nas_5gsm_capability_t *gsm_capability, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_pdu_address(ogs_nas_pdu_address_t *pdu_address, ogs_pkbuf_t *pkbuf);
@ -141,11 +157,17 @@ int ogs_nas_5gs_decode_serving_plmn_rate_control(ogs_nas_serving_plmn_rate_contr
int ogs_nas_5gs_decode_5gsm_congestion_re_attempt_indicator(ogs_nas_5gsm_congestion_re_attempt_indicator_t *gsm_congestion_re_attempt_indicator, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_atsss_container(ogs_nas_atsss_container_t *atsss_container, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_control_plane_only_indication(ogs_nas_control_plane_only_indication_t *control_plane_only_indication, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_ip_header_compression_configuration(ogs_nas_ip_header_compression_configuration_t *ip_header_compression_configuration, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_header_compression_configuration(ogs_nas_header_compression_configuration_t *header_compression_configuration, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_ds_tt_ethernet_port_mac_address(ogs_nas_ds_tt_ethernet_port_mac_address_t *ds_tt_ethernet_port_mac_address, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_ue_ds_tt_residence_time(ogs_nas_ue_ds_tt_residence_time_t *ue_ds_tt_residence_time, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_port_management_information_container(ogs_nas_port_management_information_container_t *port_management_information_container, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_ethernet_header_compression_configuration(ogs_nas_ethernet_header_compression_configuration_t *ethernet_header_compression_configuration, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_always_on_pdu_session_indication(ogs_nas_always_on_pdu_session_indication_t *always_on_pdu_session_indication, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_requested_mbs_container(ogs_nas_requested_mbs_container_t *requested_mbs_container, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_received_mbs_container(ogs_nas_received_mbs_container_t *received_mbs_container, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_pdu_session_pair_id(ogs_nas_pdu_session_pair_id_t *pdu_session_pair_id, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_rsn(ogs_nas_rsn_t *rsn, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_always_on_pdu_session_requested(ogs_nas_always_on_pdu_session_requested_t *always_on_pdu_session_requested, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_allowed_ssc_mode(ogs_nas_allowed_ssc_mode_t *allowed_ssc_mode, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_extended_protocol_configuration_options(ogs_nas_extended_protocol_configuration_options_t *extended_protocol_configuration_options, ogs_pkbuf_t *pkbuf);
@ -154,6 +176,7 @@ int ogs_nas_5gs_decode_mapped_eps_bearer_contexts(ogs_nas_mapped_eps_bearer_cont
int ogs_nas_5gs_decode_maximum_number_of_supported_packet_filters(ogs_nas_maximum_number_of_supported_packet_filters_t *maximum_number_of_supported_packet_filters, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_encode_additional_information(ogs_pkbuf_t *pkbuf, ogs_nas_additional_information_t *additional_information);
int ogs_nas_5gs_encode_service_level_aa_container(ogs_pkbuf_t *pkbuf, ogs_nas_service_level_aa_container_t *service_level_aa_container);
int ogs_nas_5gs_encode_access_type(ogs_pkbuf_t *pkbuf, ogs_nas_access_type_t *access_type);
int ogs_nas_5gs_encode_dnn(ogs_pkbuf_t *pkbuf, ogs_nas_dnn_t *dnn);
int ogs_nas_5gs_encode_eap_message(ogs_pkbuf_t *pkbuf, ogs_nas_eap_message_t *eap_message);
@ -231,8 +254,23 @@ int ogs_nas_5gs_encode_5gs_registration_type(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_reg
int ogs_nas_5gs_encode_truncated_5g_s_tmsi_configuration(ogs_pkbuf_t *pkbuf, ogs_nas_truncated_5g_s_tmsi_configuration_t *truncated_s_tmsi_configuration);
int ogs_nas_5gs_encode_wus_assistance_information(ogs_pkbuf_t *pkbuf, ogs_nas_wus_assistance_information_t *wus_assistance_information);
int ogs_nas_5gs_encode_n5gc_indication(ogs_pkbuf_t *pkbuf, ogs_nas_n5gc_indication_t *n5gc_indication);
int ogs_nas_5gs_encode_nb_n1_mode_drx_parameters(ogs_pkbuf_t *pkbuf, ogs_nas_nb_n1_mode_drx_parameters_t *nb_n1_mode_drx_parameters);
int ogs_nas_5gs_encode_additional_configuration_indication(ogs_pkbuf_t *pkbuf, ogs_nas_additional_configuration_indication_t *additional_configuration_indication);
int ogs_nas_5gs_encode_extended_rejected_nssai(ogs_pkbuf_t *pkbuf, ogs_nas_extended_rejected_nssai_t *extended_rejected_nssai);
int ogs_nas_5gs_encode_ue_request_type(ogs_pkbuf_t *pkbuf, ogs_nas_ue_request_type_t *ue_request_type);
int ogs_nas_5gs_encode_paging_restriction(ogs_pkbuf_t *pkbuf, ogs_nas_paging_restriction_t *paging_restriction);
int ogs_nas_5gs_encode_nid(ogs_pkbuf_t *pkbuf, ogs_nas_nid_t *nid);
int ogs_nas_5gs_encode_5gs_tracking_area_identity(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_tracking_area_identity_t *tracking_area_identity);
int ogs_nas_5gs_encode_peips_assistance_information(ogs_pkbuf_t *pkbuf, ogs_nas_peips_assistance_information_t *peips_assistance_information);
int ogs_nas_5gs_encode_5gs_additional_request_result(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_additional_request_result_t *additional_request_result);
int ogs_nas_5gs_encode_nssrg_information(ogs_pkbuf_t *pkbuf, ogs_nas_nssrg_information_t *nssrg_information);
int ogs_nas_5gs_encode_list_of_plmns_to_be_used_in_disaster_condition(ogs_pkbuf_t *pkbuf, ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t *list_of_plmns_to_be_used_in_disaster_condition);
int ogs_nas_5gs_encode_registration_wait_range(ogs_pkbuf_t *pkbuf, ogs_nas_registration_wait_range_t *registration_wait_range);
int ogs_nas_5gs_encode_plmn_identity(ogs_pkbuf_t *pkbuf, ogs_nas_plmn_identity_t *plmn_identity);
int ogs_nas_5gs_encode_extended_cag_information_list(ogs_pkbuf_t *pkbuf, ogs_nas_extended_cag_information_list_t *extended_cag_information_list);
int ogs_nas_5gs_encode_nsag_information(ogs_pkbuf_t *pkbuf, ogs_nas_nsag_information_t *nsag_information);
int ogs_nas_5gs_encode_5gs_tracking_area_identity_list(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_tracking_area_identity_list_t *tracking_area_identity_list);
int ogs_nas_5gs_encode_priority_indicator(ogs_pkbuf_t *pkbuf, ogs_nas_priority_indicator_t *priority_indicator);
int ogs_nas_5gs_encode_5gs_update_type(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_update_type_t *update_type);
int ogs_nas_5gs_encode_5gsm_capability(ogs_pkbuf_t *pkbuf, ogs_nas_5gsm_capability_t *gsm_capability);
int ogs_nas_5gs_encode_pdu_address(ogs_pkbuf_t *pkbuf, ogs_nas_pdu_address_t *pdu_address);
@ -249,11 +287,17 @@ int ogs_nas_5gs_encode_serving_plmn_rate_control(ogs_pkbuf_t *pkbuf, ogs_nas_ser
int ogs_nas_5gs_encode_5gsm_congestion_re_attempt_indicator(ogs_pkbuf_t *pkbuf, ogs_nas_5gsm_congestion_re_attempt_indicator_t *gsm_congestion_re_attempt_indicator);
int ogs_nas_5gs_encode_atsss_container(ogs_pkbuf_t *pkbuf, ogs_nas_atsss_container_t *atsss_container);
int ogs_nas_5gs_encode_control_plane_only_indication(ogs_pkbuf_t *pkbuf, ogs_nas_control_plane_only_indication_t *control_plane_only_indication);
int ogs_nas_5gs_encode_ip_header_compression_configuration(ogs_pkbuf_t *pkbuf, ogs_nas_ip_header_compression_configuration_t *ip_header_compression_configuration);
int ogs_nas_5gs_encode_header_compression_configuration(ogs_pkbuf_t *pkbuf, ogs_nas_header_compression_configuration_t *header_compression_configuration);
int ogs_nas_5gs_encode_ds_tt_ethernet_port_mac_address(ogs_pkbuf_t *pkbuf, ogs_nas_ds_tt_ethernet_port_mac_address_t *ds_tt_ethernet_port_mac_address);
int ogs_nas_5gs_encode_ue_ds_tt_residence_time(ogs_pkbuf_t *pkbuf, ogs_nas_ue_ds_tt_residence_time_t *ue_ds_tt_residence_time);
int ogs_nas_5gs_encode_port_management_information_container(ogs_pkbuf_t *pkbuf, ogs_nas_port_management_information_container_t *port_management_information_container);
int ogs_nas_5gs_encode_ethernet_header_compression_configuration(ogs_pkbuf_t *pkbuf, ogs_nas_ethernet_header_compression_configuration_t *ethernet_header_compression_configuration);
int ogs_nas_5gs_encode_always_on_pdu_session_indication(ogs_pkbuf_t *pkbuf, ogs_nas_always_on_pdu_session_indication_t *always_on_pdu_session_indication);
int ogs_nas_5gs_encode_requested_mbs_container(ogs_pkbuf_t *pkbuf, ogs_nas_requested_mbs_container_t *requested_mbs_container);
int ogs_nas_5gs_encode_received_mbs_container(ogs_pkbuf_t *pkbuf, ogs_nas_received_mbs_container_t *received_mbs_container);
int ogs_nas_5gs_encode_pdu_session_pair_id(ogs_pkbuf_t *pkbuf, ogs_nas_pdu_session_pair_id_t *pdu_session_pair_id);
int ogs_nas_5gs_encode_rsn(ogs_pkbuf_t *pkbuf, ogs_nas_rsn_t *rsn);
int ogs_nas_5gs_encode_always_on_pdu_session_requested(ogs_pkbuf_t *pkbuf, ogs_nas_always_on_pdu_session_requested_t *always_on_pdu_session_requested);
int ogs_nas_5gs_encode_allowed_ssc_mode(ogs_pkbuf_t *pkbuf, ogs_nas_allowed_ssc_mode_t *allowed_ssc_mode);
int ogs_nas_5gs_encode_extended_protocol_configuration_options(ogs_pkbuf_t *pkbuf, ogs_nas_extended_protocol_configuration_options_t *extended_protocol_configuration_options);

View File

@ -1,7 +1,7 @@
/*
* The MIT License
*
* Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
* Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
@ -28,8 +28,8 @@
/*******************************************************************************
* This file had been created by nas-message.py script v0.2.0
* Please do not modify this file but regenerate it via script.
* Created on: 2022-07-11 07:09:47.165005 by ubuntu
* from 24501-g41.docx
* Created on: 2023-03-04 20:50:00.882958 by acetcom
* from 24501-h90.docx
******************************************************************************/
#if !defined(OGS_NAS_INSIDE) && !defined(OGS_NAS_COMPILATION)
@ -148,6 +148,14 @@ typedef struct ogs_nas_5gs_security_header_s {
#define OGS_NAS_5GS_REGISTRATION_REQUEST_ADDITIONAL_INFORMATION_REQUESTED_PRESENT ((uint64_t)1<<28)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_WUS_ASSISTANCE_INFORMATION_PRESENT ((uint64_t)1<<29)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_N5GC_INDICATION_PRESENT ((uint64_t)1<<30)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_NB_N1_MODE_DRX_PARAMETERS_PRESENT ((uint64_t)1<<31)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_UE_REQUEST_TYPE_PRESENT ((uint64_t)1<<32)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_PAGING_RESTRICTION_PRESENT ((uint64_t)1<<33)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_SERVICE_LEVEL_AA_CONTAINER_PRESENT ((uint64_t)1<<34)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_NID_PRESENT ((uint64_t)1<<35)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_MS_DETERMINED_PLMN_WITH_DISASTER_CONDITION_PRESENT ((uint64_t)1<<36)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_PEIPS_ASSISTANCE_INFORMATION_PRESENT ((uint64_t)1<<37)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_T3512_VALUE_PRESENT ((uint64_t)1<<38)
#define OGS_NAS_5GS_REGISTRATION_REQUEST_NON_CURRENT_NATIVE_NAS_KEY_SET_IDENTIFIER_TYPE 0xC0
#define OGS_NAS_5GS_REGISTRATION_REQUEST_5GMM_CAPABILITY_TYPE 0x10
#define OGS_NAS_5GS_REGISTRATION_REQUEST_UE_SECURITY_CAPABILITY_TYPE 0x2E
@ -178,7 +186,15 @@ typedef struct ogs_nas_5gs_security_header_s {
#define OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_MAPPED_NSSAI_TYPE 0x35
#define OGS_NAS_5GS_REGISTRATION_REQUEST_ADDITIONAL_INFORMATION_REQUESTED_TYPE 0x48
#define OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_WUS_ASSISTANCE_INFORMATION_TYPE 0x1A
#define OGS_NAS_5GS_REGISTRATION_REQUEST_N5GC_INDICATION_TYPE 0xA1
#define OGS_NAS_5GS_REGISTRATION_REQUEST_N5GC_INDICATION_TYPE 0xA0
#define OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_NB_N1_MODE_DRX_PARAMETERS_TYPE 0x30
#define OGS_NAS_5GS_REGISTRATION_REQUEST_UE_REQUEST_TYPE_TYPE 0x29
#define OGS_NAS_5GS_REGISTRATION_REQUEST_PAGING_RESTRICTION_TYPE 0x28
#define OGS_NAS_5GS_REGISTRATION_REQUEST_SERVICE_LEVEL_AA_CONTAINER_TYPE 0x72
#define OGS_NAS_5GS_REGISTRATION_REQUEST_NID_TYPE 0x32
#define OGS_NAS_5GS_REGISTRATION_REQUEST_MS_DETERMINED_PLMN_WITH_DISASTER_CONDITION_TYPE 0x16
#define OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_PEIPS_ASSISTANCE_INFORMATION_TYPE 0x2A
#define OGS_NAS_5GS_REGISTRATION_REQUEST_REQUESTED_T3512_VALUE_TYPE 0x3B
typedef struct ogs_nas_5gs_registration_request_s {
/* Mandatory fields */
@ -218,6 +234,14 @@ typedef struct ogs_nas_5gs_registration_request_s {
ogs_nas_additional_information_requested_t additional_information_requested;
ogs_nas_wus_assistance_information_t requested_wus_assistance_information;
ogs_nas_n5gc_indication_t n5gc_indication;
ogs_nas_nb_n1_mode_drx_parameters_t requested_nb_n1_mode_drx_parameters;
ogs_nas_ue_request_type_t ue_request_type;
ogs_nas_paging_restriction_t paging_restriction;
ogs_nas_service_level_aa_container_t service_level_aa_container;
ogs_nas_nid_t nid;
ogs_nas_plmn_identity_t ms_determined_plmn_with_disaster_condition;
ogs_nas_peips_assistance_information_t requested_peips_assistance_information;
ogs_nas_gprs_timer_3_t requested_t3512_value;
} ogs_nas_5gs_registration_request_t;
@ -261,6 +285,19 @@ typedef struct ogs_nas_5gs_registration_request_s {
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_CAG_INFORMATION_LIST_PRESENT ((uint64_t)1<<34)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_TRUNCATED_5G_S_TMSI_CONFIGURATION_PRESENT ((uint64_t)1<<35)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_NEGOTIATED_WUS_ASSISTANCE_INFORMATION_PRESENT ((uint64_t)1<<36)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_NEGOTIATED_NB_N1_MODE_DRX_PARAMETERS_PRESENT ((uint64_t)1<<37)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_EXTENDED_REJECTED_NSSAI_PRESENT ((uint64_t)1<<38)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_SERVICE_LEVEL_AA_CONTAINER_PRESENT ((uint64_t)1<<39)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_NEGOTIATED_PEIPS_ASSISTANCE_INFORMATION_PRESENT ((uint64_t)1<<40)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_5GS_ADDITIONAL_REQUEST_RESULT_PRESENT ((uint64_t)1<<41)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_NSSRG_INFORMATION_PRESENT ((uint64_t)1<<42)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_DISASTER_ROAMING_WAIT_RANGE_PRESENT ((uint64_t)1<<43)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_DISASTER_RETURN_WAIT_RANGE_PRESENT ((uint64_t)1<<44)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_LIST_OF_PLMNS_TO_BE_USED_IN_DISASTER_CONDITION_PRESENT ((uint64_t)1<<45)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT ((uint64_t)1<<46)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT ((uint64_t)1<<47)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_EXTENDED_CAG_INFORMATION_LIST_PRESENT ((uint64_t)1<<48)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_NSAG_INFORMATION_PRESENT ((uint64_t)1<<49)
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_5G_GUTI_TYPE 0x77
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_EQUIVALENT_PLMNS_TYPE 0x4A
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_TAI_LIST_TYPE 0x54
@ -292,12 +329,25 @@ typedef struct ogs_nas_5gs_registration_request_s {
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_T3448_VALUE_TYPE 0x6B
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_T3324_VALUE_TYPE 0x6A
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_UE_RADIO_CAPABILITY_ID_TYPE 0x67
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_UE_RADIO_CAPABILITY_ID_DELETION_INDICATION_TYPE 0x68
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_UE_RADIO_CAPABILITY_ID_DELETION_INDICATION_TYPE 0xE0
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_PENDING_NSSAI_TYPE 0x39
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_CIPHERING_KEY_DATA_TYPE 0x74
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_CAG_INFORMATION_LIST_TYPE 0x75
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_TRUNCATED_5G_S_TMSI_CONFIGURATION_TYPE 0x1B
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_NEGOTIATED_WUS_ASSISTANCE_INFORMATION_TYPE 0x1C
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_NEGOTIATED_NB_N1_MODE_DRX_PARAMETERS_TYPE 0x29
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_EXTENDED_REJECTED_NSSAI_TYPE 0x68
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_SERVICE_LEVEL_AA_CONTAINER_TYPE 0x7B
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_NEGOTIATED_PEIPS_ASSISTANCE_INFORMATION_TYPE 0x33
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_5GS_ADDITIONAL_REQUEST_RESULT_TYPE 0x34
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_NSSRG_INFORMATION_TYPE 0x70
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_DISASTER_ROAMING_WAIT_RANGE_TYPE 0x14
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_DISASTER_RETURN_WAIT_RANGE_TYPE 0x2C
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_LIST_OF_PLMNS_TO_BE_USED_IN_DISASTER_CONDITION_TYPE 0x13
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE 0x1D
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE 0x1E
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_EXTENDED_CAG_INFORMATION_LIST_TYPE 0x71
#define OGS_NAS_5GS_REGISTRATION_ACCEPT_NSAG_INFORMATION_TYPE 0x7C
typedef struct ogs_nas_5gs_registration_accept_s {
/* Mandatory fields */
@ -333,7 +383,7 @@ typedef struct ogs_nas_5gs_registration_accept_s {
ogs_nas_eps_bearer_context_status_t eps_bearer_context_status;
ogs_nas_extended_drx_parameters_t negotiated_extended_drx_parameters;
ogs_nas_gprs_timer_3_t t3447_value;
ogs_nas_gprs_timer_3_t t3448_value;
ogs_nas_gprs_timer_2_t t3448_value;
ogs_nas_gprs_timer_3_t t3324_value;
ogs_nas_ue_radio_capability_id_t ue_radio_capability_id;
ogs_nas_ue_radio_capability_id_deletion_indication_t ue_radio_capability_id_deletion_indication;
@ -342,6 +392,19 @@ typedef struct ogs_nas_5gs_registration_accept_s {
ogs_nas_cag_information_list_t cag_information_list;
ogs_nas_truncated_5g_s_tmsi_configuration_t truncated_s_tmsi_configuration;
ogs_nas_wus_assistance_information_t negotiated_wus_assistance_information;
ogs_nas_nb_n1_mode_drx_parameters_t negotiated_nb_n1_mode_drx_parameters;
ogs_nas_extended_rejected_nssai_t extended_rejected_nssai;
ogs_nas_service_level_aa_container_t service_level_aa_container;
ogs_nas_peips_assistance_information_t negotiated_peips_assistance_information;
ogs_nas_5gs_additional_request_result_t additional_request_result;
ogs_nas_nssrg_information_t nssrg_information;
ogs_nas_registration_wait_range_t disaster_roaming_wait_range;
ogs_nas_registration_wait_range_t disaster_return_wait_range;
ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t list_of_plmns_to_be_used_in_disaster_condition;
ogs_nas_5gs_tracking_area_identity_list_t forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming;
ogs_nas_5gs_tracking_area_identity_list_t forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service;
ogs_nas_extended_cag_information_list_t extended_cag_information_list;
ogs_nas_nsag_information_t nsag_information;
} ogs_nas_5gs_registration_accept_t;
@ -366,10 +429,24 @@ typedef struct ogs_nas_5gs_registration_complete_s {
#define OGS_NAS_5GS_REGISTRATION_REJECT_T3502_VALUE_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_REGISTRATION_REJECT_EAP_MESSAGE_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_REGISTRATION_REJECT_REJECTED_NSSAI_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_REGISTRATION_REJECT_CAG_INFORMATION_LIST_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_REGISTRATION_REJECT_EXTENDED_REJECTED_NSSAI_PRESENT ((uint64_t)1<<5)
#define OGS_NAS_5GS_REGISTRATION_REJECT_DISASTER_RETURN_WAIT_RANGE_PRESENT ((uint64_t)1<<6)
#define OGS_NAS_5GS_REGISTRATION_REJECT_EXTENDED_CAG_INFORMATION_LIST_PRESENT ((uint64_t)1<<7)
#define OGS_NAS_5GS_REGISTRATION_REJECT_LOWER_BOUND_TIMER_VALUE_PRESENT ((uint64_t)1<<8)
#define OGS_NAS_5GS_REGISTRATION_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT ((uint64_t)1<<9)
#define OGS_NAS_5GS_REGISTRATION_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT ((uint64_t)1<<10)
#define OGS_NAS_5GS_REGISTRATION_REJECT_T3346_VALUE_TYPE 0x5F
#define OGS_NAS_5GS_REGISTRATION_REJECT_T3502_VALUE_TYPE 0x16
#define OGS_NAS_5GS_REGISTRATION_REJECT_EAP_MESSAGE_TYPE 0x78
#define OGS_NAS_5GS_REGISTRATION_REJECT_REJECTED_NSSAI_TYPE 0x69
#define OGS_NAS_5GS_REGISTRATION_REJECT_CAG_INFORMATION_LIST_TYPE 0x75
#define OGS_NAS_5GS_REGISTRATION_REJECT_EXTENDED_REJECTED_NSSAI_TYPE 0x68
#define OGS_NAS_5GS_REGISTRATION_REJECT_DISASTER_RETURN_WAIT_RANGE_TYPE 0x2C
#define OGS_NAS_5GS_REGISTRATION_REJECT_EXTENDED_CAG_INFORMATION_LIST_TYPE 0x71
#define OGS_NAS_5GS_REGISTRATION_REJECT_LOWER_BOUND_TIMER_VALUE_TYPE 0x3A
#define OGS_NAS_5GS_REGISTRATION_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE 0x1D
#define OGS_NAS_5GS_REGISTRATION_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE 0x1E
typedef struct ogs_nas_5gs_registration_reject_s {
/* Mandatory fields */
@ -381,6 +458,13 @@ typedef struct ogs_nas_5gs_registration_reject_s {
ogs_nas_gprs_timer_2_t t3502_value;
ogs_nas_eap_message_t eap_message;
ogs_nas_rejected_nssai_t rejected_nssai;
ogs_nas_cag_information_list_t cag_information_list;
ogs_nas_extended_rejected_nssai_t extended_rejected_nssai;
ogs_nas_registration_wait_range_t disaster_return_wait_range;
ogs_nas_extended_cag_information_list_t extended_cag_information_list;
ogs_nas_gprs_timer_3_t lower_bound_timer_value;
ogs_nas_5gs_tracking_area_identity_list_t forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming;
ogs_nas_5gs_tracking_area_identity_list_t forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service;
} ogs_nas_5gs_registration_reject_t;
@ -401,9 +485,23 @@ typedef struct ogs_nas_5gs_deregistration_request_from_ue_s {
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_5GMM_CAUSE_PRESENT ((uint64_t)1<<0)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_T3346_VALUE_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_REJECTED_NSSAI_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_CAG_INFORMATION_LIST_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_EXTENDED_REJECTED_NSSAI_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_DISASTER_RETURN_WAIT_RANGE_PRESENT ((uint64_t)1<<5)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_EXTENDED_CAG_INFORMATION_LIST_PRESENT ((uint64_t)1<<6)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_LOWER_BOUND_TIMER_VALUE_PRESENT ((uint64_t)1<<7)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT ((uint64_t)1<<8)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT ((uint64_t)1<<9)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_5GMM_CAUSE_TYPE 0x58
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_T3346_VALUE_TYPE 0x5F
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_REJECTED_NSSAI_TYPE 0x6D
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_CAG_INFORMATION_LIST_TYPE 0x75
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_EXTENDED_REJECTED_NSSAI_TYPE 0x68
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_DISASTER_RETURN_WAIT_RANGE_TYPE 0x2C
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_EXTENDED_CAG_INFORMATION_LIST_TYPE 0x71
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_LOWER_BOUND_TIMER_VALUE_TYPE 0x3A
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE 0x1D
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE 0x1E
typedef struct ogs_nas_5gs_deregistration_request_to_ue_s {
/* Mandatory fields */
@ -414,6 +512,13 @@ typedef struct ogs_nas_5gs_deregistration_request_to_ue_s {
ogs_nas_5gmm_cause_t gmm_cause;
ogs_nas_gprs_timer_2_t t3346_value;
ogs_nas_rejected_nssai_t rejected_nssai;
ogs_nas_cag_information_list_t cag_information_list;
ogs_nas_extended_rejected_nssai_t extended_rejected_nssai;
ogs_nas_registration_wait_range_t disaster_return_wait_range;
ogs_nas_extended_cag_information_list_t extended_cag_information_list;
ogs_nas_gprs_timer_3_t lower_bound_timer_value;
ogs_nas_5gs_tracking_area_identity_list_t forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming;
ogs_nas_5gs_tracking_area_identity_list_t forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service;
} ogs_nas_5gs_deregistration_request_to_ue_t;
@ -424,10 +529,14 @@ typedef struct ogs_nas_5gs_deregistration_request_to_ue_s {
#define OGS_NAS_5GS_SERVICE_REQUEST_PDU_SESSION_STATUS_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_SERVICE_REQUEST_ALLOWED_PDU_SESSION_STATUS_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_SERVICE_REQUEST_NAS_MESSAGE_CONTAINER_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_SERVICE_REQUEST_UE_REQUEST_TYPE_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_SERVICE_REQUEST_PAGING_RESTRICTION_PRESENT ((uint64_t)1<<5)
#define OGS_NAS_5GS_SERVICE_REQUEST_UPLINK_DATA_STATUS_TYPE 0x40
#define OGS_NAS_5GS_SERVICE_REQUEST_PDU_SESSION_STATUS_TYPE 0x50
#define OGS_NAS_5GS_SERVICE_REQUEST_ALLOWED_PDU_SESSION_STATUS_TYPE 0x25
#define OGS_NAS_5GS_SERVICE_REQUEST_NAS_MESSAGE_CONTAINER_TYPE 0x71
#define OGS_NAS_5GS_SERVICE_REQUEST_UE_REQUEST_TYPE_TYPE 0x29
#define OGS_NAS_5GS_SERVICE_REQUEST_PAGING_RESTRICTION_TYPE 0x28
typedef struct ogs_nas_5gs_service_request_s {
/* Mandatory fields */
@ -440,6 +549,8 @@ typedef struct ogs_nas_5gs_service_request_s {
ogs_nas_pdu_session_status_t pdu_session_status;
ogs_nas_allowed_pdu_session_status_t allowed_pdu_session_status;
ogs_nas_message_container_t nas_message_container;
ogs_nas_ue_request_type_t ue_request_type;
ogs_nas_paging_restriction_t paging_restriction;
} ogs_nas_5gs_service_request_t;
@ -450,10 +561,22 @@ typedef struct ogs_nas_5gs_service_request_s {
#define OGS_NAS_5GS_SERVICE_REJECT_T3346_VALUE_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_SERVICE_REJECT_EAP_MESSAGE_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_SERVICE_REJECT_T3448_VALUE_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_SERVICE_REJECT_CAG_INFORMATION_LIST_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_SERVICE_REJECT_DISASTER_RETURN_WAIT_RANGE_PRESENT ((uint64_t)1<<5)
#define OGS_NAS_5GS_SERVICE_REJECT_EXTENDED_CAG_INFORMATION_LIST_PRESENT ((uint64_t)1<<6)
#define OGS_NAS_5GS_SERVICE_REJECT_LOWER_BOUND_TIMER_VALUE_PRESENT ((uint64_t)1<<7)
#define OGS_NAS_5GS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT ((uint64_t)1<<8)
#define OGS_NAS_5GS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT ((uint64_t)1<<9)
#define OGS_NAS_5GS_SERVICE_REJECT_PDU_SESSION_STATUS_TYPE 0x50
#define OGS_NAS_5GS_SERVICE_REJECT_T3346_VALUE_TYPE 0x5F
#define OGS_NAS_5GS_SERVICE_REJECT_EAP_MESSAGE_TYPE 0x78
#define OGS_NAS_5GS_SERVICE_REJECT_T3448_VALUE_TYPE 0x6B
#define OGS_NAS_5GS_SERVICE_REJECT_CAG_INFORMATION_LIST_TYPE 0x75
#define OGS_NAS_5GS_SERVICE_REJECT_DISASTER_RETURN_WAIT_RANGE_TYPE 0x2C
#define OGS_NAS_5GS_SERVICE_REJECT_EXTENDED_CAG_INFORMATION_LIST_TYPE 0x71
#define OGS_NAS_5GS_SERVICE_REJECT_LOWER_BOUND_TIMER_VALUE_TYPE 0x3A
#define OGS_NAS_5GS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE 0x1D
#define OGS_NAS_5GS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE 0x1E
typedef struct ogs_nas_5gs_service_reject_s {
/* Mandatory fields */
@ -464,7 +587,13 @@ typedef struct ogs_nas_5gs_service_reject_s {
ogs_nas_pdu_session_status_t pdu_session_status;
ogs_nas_gprs_timer_2_t t3346_value;
ogs_nas_eap_message_t eap_message;
ogs_nas_gprs_timer_3_t t3448_value;
ogs_nas_gprs_timer_2_t t3448_value;
ogs_nas_cag_information_list_t cag_information_list;
ogs_nas_registration_wait_range_t disaster_return_wait_range;
ogs_nas_extended_cag_information_list_t extended_cag_information_list;
ogs_nas_gprs_timer_3_t lower_bound_timer_value;
ogs_nas_5gs_tracking_area_identity_list_t forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming;
ogs_nas_5gs_tracking_area_identity_list_t forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service;
} ogs_nas_5gs_service_reject_t;
@ -476,11 +605,17 @@ typedef struct ogs_nas_5gs_service_reject_s {
#define OGS_NAS_5GS_SERVICE_ACCEPT_PDU_SESSION_REACTIVATION_RESULT_ERROR_CAUSE_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_SERVICE_ACCEPT_EAP_MESSAGE_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_SERVICE_ACCEPT_T3448_VALUE_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_SERVICE_ACCEPT_5GS_ADDITIONAL_REQUEST_RESULT_PRESENT ((uint64_t)1<<5)
#define OGS_NAS_5GS_SERVICE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT ((uint64_t)1<<6)
#define OGS_NAS_5GS_SERVICE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT ((uint64_t)1<<7)
#define OGS_NAS_5GS_SERVICE_ACCEPT_PDU_SESSION_STATUS_TYPE 0x50
#define OGS_NAS_5GS_SERVICE_ACCEPT_PDU_SESSION_REACTIVATION_RESULT_TYPE 0x26
#define OGS_NAS_5GS_SERVICE_ACCEPT_PDU_SESSION_REACTIVATION_RESULT_ERROR_CAUSE_TYPE 0x72
#define OGS_NAS_5GS_SERVICE_ACCEPT_EAP_MESSAGE_TYPE 0x78
#define OGS_NAS_5GS_SERVICE_ACCEPT_T3448_VALUE_TYPE 0x6B
#define OGS_NAS_5GS_SERVICE_ACCEPT_5GS_ADDITIONAL_REQUEST_RESULT_TYPE 0x34
#define OGS_NAS_5GS_SERVICE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE 0x1D
#define OGS_NAS_5GS_SERVICE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_5GS_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE 0x1E
typedef struct ogs_nas_5gs_service_accept_s {
@ -490,7 +625,10 @@ typedef struct ogs_nas_5gs_service_accept_s {
ogs_nas_pdu_session_reactivation_result_t pdu_session_reactivation_result;
ogs_nas_pdu_session_reactivation_result_error_cause_t pdu_session_reactivation_result_error_cause;
ogs_nas_eap_message_t eap_message;
ogs_nas_gprs_timer_3_t t3448_value;
ogs_nas_gprs_timer_2_t t3448_value;
ogs_nas_5gs_additional_request_result_t additional_request_result;
ogs_nas_5gs_tracking_area_identity_list_t forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming;
ogs_nas_5gs_tracking_area_identity_list_t forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service;
} ogs_nas_5gs_service_accept_t;
@ -520,6 +658,17 @@ typedef struct ogs_nas_5gs_service_accept_s {
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_UE_RADIO_CAPABILITY_ID_DELETION_INDICATION_PRESENT ((uint64_t)1<<20)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_5GS_REGISTRATION_RESULT_PRESENT ((uint64_t)1<<21)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_TRUNCATED_5G_S_TMSI_CONFIGURATION_PRESENT ((uint64_t)1<<22)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_ADDITIONAL_CONFIGURATION_INDICATION_PRESENT ((uint64_t)1<<23)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_EXTENDED_REJECTED_NSSAI_PRESENT ((uint64_t)1<<24)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_SERVICE_LEVEL_AA_CONTAINER_PRESENT ((uint64_t)1<<25)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_NSSRG_INFORMATION_PRESENT ((uint64_t)1<<26)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_DISASTER_ROAMING_WAIT_RANGE_PRESENT ((uint64_t)1<<27)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_DISASTER_RETURN_WAIT_RANGE_PRESENT ((uint64_t)1<<28)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_LIST_OF_PLMNS_TO_BE_USED_IN_DISASTER_CONDITION_PRESENT ((uint64_t)1<<29)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_EXTENDED_CAG_INFORMATION_LIST_PRESENT ((uint64_t)1<<30)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_UPDATED_PEIPS_ASSISTANCE_INFORMATION_PRESENT ((uint64_t)1<<31)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_NSAG_INFORMATION_PRESENT ((uint64_t)1<<32)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_PRIORITY_INDICATOR_PRESENT ((uint64_t)1<<33)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_CONFIGURATION_UPDATE_INDICATION_TYPE 0xD0
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_5G_GUTI_TYPE 0x77
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_TAI_LIST_TYPE 0x54
@ -540,9 +689,20 @@ typedef struct ogs_nas_5gs_service_accept_s {
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_T3447_VALUE_TYPE 0x6C
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_CAG_INFORMATION_LIST_TYPE 0x75
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_UE_RADIO_CAPABILITY_ID_TYPE 0x67
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_UE_RADIO_CAPABILITY_ID_DELETION_INDICATION_TYPE 0x68
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_UE_RADIO_CAPABILITY_ID_DELETION_INDICATION_TYPE 0xA0
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_5GS_REGISTRATION_RESULT_TYPE 0x44
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_TRUNCATED_5G_S_TMSI_CONFIGURATION_TYPE 0x1B
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_ADDITIONAL_CONFIGURATION_INDICATION_TYPE 0xC0
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_EXTENDED_REJECTED_NSSAI_TYPE 0x68
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_SERVICE_LEVEL_AA_CONTAINER_TYPE 0x72
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_NSSRG_INFORMATION_TYPE 0x70
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_DISASTER_ROAMING_WAIT_RANGE_TYPE 0x14
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_DISASTER_RETURN_WAIT_RANGE_TYPE 0x2C
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_LIST_OF_PLMNS_TO_BE_USED_IN_DISASTER_CONDITION_TYPE 0x13
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_EXTENDED_CAG_INFORMATION_LIST_TYPE 0x71
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_UPDATED_PEIPS_ASSISTANCE_INFORMATION_TYPE 0x1F
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_NSAG_INFORMATION_TYPE 0x73
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMMAND_PRIORITY_INDICATOR_TYPE 0xE0
typedef struct ogs_nas_5gs_configuration_update_command_s {
@ -571,6 +731,17 @@ typedef struct ogs_nas_5gs_configuration_update_command_s {
ogs_nas_ue_radio_capability_id_deletion_indication_t ue_radio_capability_id_deletion_indication;
ogs_nas_5gs_registration_result_t registration_result;
ogs_nas_truncated_5g_s_tmsi_configuration_t truncated_s_tmsi_configuration;
ogs_nas_additional_configuration_indication_t additional_configuration_indication;
ogs_nas_extended_rejected_nssai_t extended_rejected_nssai;
ogs_nas_service_level_aa_container_t service_level_aa_container;
ogs_nas_nssrg_information_t nssrg_information;
ogs_nas_registration_wait_range_t disaster_roaming_wait_range;
ogs_nas_registration_wait_range_t disaster_return_wait_range;
ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t list_of_plmns_to_be_used_in_disaster_condition;
ogs_nas_extended_cag_information_list_t extended_cag_information_list;
ogs_nas_peips_assistance_information_t updated_peips_assistance_information;
ogs_nas_nsag_information_t nsag_information;
ogs_nas_priority_indicator_t priority_indicator;
} ogs_nas_5gs_configuration_update_command_t;
@ -823,10 +994,12 @@ typedef struct ogs_nas_5gs_ul_nas_transport_s {
#define OGS_NAS_5GS_DL_NAS_TRANSPORT_ADDITIONAL_INFORMATION_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_DL_NAS_TRANSPORT_5GMM_CAUSE_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_DL_NAS_TRANSPORT_BACK_OFF_TIMER_VALUE_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_DL_NAS_TRANSPORT_LOWER_BOUND_TIMER_VALUE_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_DL_NAS_TRANSPORT_PDU_SESSION_ID_TYPE 0x12
#define OGS_NAS_5GS_DL_NAS_TRANSPORT_ADDITIONAL_INFORMATION_TYPE 0x24
#define OGS_NAS_5GS_DL_NAS_TRANSPORT_5GMM_CAUSE_TYPE 0x58
#define OGS_NAS_5GS_DL_NAS_TRANSPORT_BACK_OFF_TIMER_VALUE_TYPE 0x37
#define OGS_NAS_5GS_DL_NAS_TRANSPORT_LOWER_BOUND_TIMER_VALUE_TYPE 0x3A
typedef struct ogs_nas_5gs_dl_nas_transport_s {
/* Mandatory fields */
@ -839,6 +1012,7 @@ typedef struct ogs_nas_5gs_dl_nas_transport_s {
ogs_nas_additional_information_t additional_information;
ogs_nas_5gmm_cause_t gmm_cause;
ogs_nas_gprs_timer_3_t back_off_timer_value;
ogs_nas_gprs_timer_3_t lower_bound_timer_value;
} ogs_nas_5gs_dl_nas_transport_t;
@ -852,10 +1026,16 @@ typedef struct ogs_nas_5gs_dl_nas_transport_s {
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_ALWAYS_ON_PDU_SESSION_REQUESTED_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SM_PDU_DN_REQUEST_CONTAINER_PRESENT ((uint64_t)1<<5)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT ((uint64_t)1<<6)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<7)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_IP_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<7)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_DS_TT_ETHERNET_PORT_MAC_ADDRESS_PRESENT ((uint64_t)1<<8)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_UE_DS_TT_RESIDENCE_TIME_PRESENT ((uint64_t)1<<9)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_PORT_MANAGEMENT_INFORMATION_CONTAINER_PRESENT ((uint64_t)1<<10)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<11)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SUGGESTED_INTERFACE_IDENTIFIER_PRESENT ((uint64_t)1<<12)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SERVICE_LEVEL_AA_CONTAINER_PRESENT ((uint64_t)1<<13)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_REQUESTED_MBS_CONTAINER_PRESENT ((uint64_t)1<<14)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_PDU_SESSION_PAIR_ID_PRESENT ((uint64_t)1<<15)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_RSN_PRESENT ((uint64_t)1<<16)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_PDU_SESSION_TYPE_TYPE 0x90
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SSC_MODE_TYPE 0xA0
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_5GSM_CAPABILITY_TYPE 0x28
@ -863,10 +1043,16 @@ typedef struct ogs_nas_5gs_dl_nas_transport_s {
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_ALWAYS_ON_PDU_SESSION_REQUESTED_TYPE 0xB0
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SM_PDU_DN_REQUEST_CONTAINER_TYPE 0x39
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_TYPE 0x7B
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x66
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_IP_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x66
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_DS_TT_ETHERNET_PORT_MAC_ADDRESS_TYPE 0x6E
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_UE_DS_TT_RESIDENCE_TIME_TYPE 0x6F
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_PORT_MANAGEMENT_INFORMATION_CONTAINER_TYPE 0x7C
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_PORT_MANAGEMENT_INFORMATION_CONTAINER_TYPE 0x74
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x1F
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SUGGESTED_INTERFACE_IDENTIFIER_TYPE 0x29
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_SERVICE_LEVEL_AA_CONTAINER_TYPE 0x72
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_REQUESTED_MBS_CONTAINER_TYPE 0x70
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_PDU_SESSION_PAIR_ID_TYPE 0x34
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REQUEST_RSN_TYPE 0x35
typedef struct ogs_nas_5gs_pdu_session_establishment_request_s {
/* Mandatory fields */
@ -881,10 +1067,16 @@ typedef struct ogs_nas_5gs_pdu_session_establishment_request_s {
ogs_nas_always_on_pdu_session_requested_t always_on_pdu_session_requested;
ogs_nas_sm_pdu_dn_request_container_t sm_pdu_dn_request_container;
ogs_nas_extended_protocol_configuration_options_t extended_protocol_configuration_options;
ogs_nas_header_compression_configuration_t header_compression_configuration;
ogs_nas_ip_header_compression_configuration_t ip_header_compression_configuration;
ogs_nas_ds_tt_ethernet_port_mac_address_t ds_tt_ethernet_port_mac_address;
ogs_nas_ue_ds_tt_residence_time_t ue_ds_tt_residence_time;
ogs_nas_port_management_information_container_t port_management_information_container;
ogs_nas_ethernet_header_compression_configuration_t ethernet_header_compression_configuration;
ogs_nas_pdu_address_t suggested_interface_identifier;
ogs_nas_service_level_aa_container_t service_level_aa_container;
ogs_nas_requested_mbs_container_t requested_mbs_container;
ogs_nas_pdu_session_pair_id_t pdu_session_pair_id;
ogs_nas_rsn_t rsn;
} ogs_nas_5gs_pdu_session_establishment_request_t;
@ -905,7 +1097,10 @@ typedef struct ogs_nas_5gs_pdu_session_establishment_request_s {
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_SERVING_PLMN_RATE_CONTROL_PRESENT ((uint64_t)1<<11)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_ATSSS_CONTAINER_PRESENT ((uint64_t)1<<12)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_CONTROL_PLANE_ONLY_INDICATION_PRESENT ((uint64_t)1<<13)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<14)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_IP_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<14)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<15)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_SERVICE_LEVEL_AA_CONTAINER_PRESENT ((uint64_t)1<<16)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_RECEIVED_MBS_CONTAINER_PRESENT ((uint64_t)1<<17)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_5GSM_CAUSE_TYPE 0x59
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_PDU_ADDRESS_TYPE 0x29
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_RQ_TIMER_VALUE_TYPE 0x56
@ -920,7 +1115,10 @@ typedef struct ogs_nas_5gs_pdu_session_establishment_request_s {
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_SERVING_PLMN_RATE_CONTROL_TYPE 0x18
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_ATSSS_CONTAINER_TYPE 0x77
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_CONTROL_PLANE_ONLY_INDICATION_TYPE 0xC0
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x66
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_IP_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x66
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x1F
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_SERVICE_LEVEL_AA_CONTAINER_TYPE 0x72
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_ACCEPT_RECEIVED_MBS_CONTAINER_TYPE 0x71
typedef struct ogs_nas_5gs_pdu_session_establishment_accept_s {
/* Mandatory fields */
@ -944,7 +1142,10 @@ typedef struct ogs_nas_5gs_pdu_session_establishment_accept_s {
ogs_nas_serving_plmn_rate_control_t serving_plmn_rate_control;
ogs_nas_atsss_container_t atsss_container;
ogs_nas_control_plane_only_indication_t control_plane_only_indication;
ogs_nas_header_compression_configuration_t header_compression_configuration;
ogs_nas_ip_header_compression_configuration_t ip_header_compression_configuration;
ogs_nas_ethernet_header_compression_configuration_t ethernet_header_compression_configuration;
ogs_nas_service_level_aa_container_t service_level_aa_container;
ogs_nas_received_mbs_container_t received_mbs_container;
} ogs_nas_5gs_pdu_session_establishment_accept_t;
@ -954,15 +1155,17 @@ typedef struct ogs_nas_5gs_pdu_session_establishment_accept_s {
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_BACK_OFF_TIMER_VALUE_PRESENT ((uint64_t)1<<0)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_ALLOWED_SSC_MODE_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_EAP_MESSAGE_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_RE_ATTEMPT_INDICATOR_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_PRESENT ((uint64_t)1<<5)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_RE_ATTEMPT_INDICATOR_PRESENT ((uint64_t)1<<5)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_SERVICE_LEVEL_AA_CONTAINER_PRESENT ((uint64_t)1<<6)
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_BACK_OFF_TIMER_VALUE_TYPE 0x37
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_ALLOWED_SSC_MODE_TYPE 0xF0
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_EAP_MESSAGE_TYPE 0x78
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_TYPE 0x61
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_TYPE 0x7B
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_RE_ATTEMPT_INDICATOR_TYPE 0x1D
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_TYPE 0x61
#define OGS_NAS_5GS_PDU_SESSION_ESTABLISHMENT_REJECT_SERVICE_LEVEL_AA_CONTAINER_TYPE 0x72
typedef struct ogs_nas_5gs_pdu_session_establishment_reject_s {
/* Mandatory fields */
@ -973,9 +1176,10 @@ typedef struct ogs_nas_5gs_pdu_session_establishment_reject_s {
ogs_nas_gprs_timer_3_t back_off_timer_value;
ogs_nas_allowed_ssc_mode_t allowed_ssc_mode;
ogs_nas_eap_message_t eap_message;
ogs_nas_5gsm_congestion_re_attempt_indicator_t gsm_congestion_re_attempt_indicator;
ogs_nas_extended_protocol_configuration_options_t extended_protocol_configuration_options;
ogs_nas_re_attempt_indicator_t re_attempt_indicator;
ogs_nas_5gsm_congestion_re_attempt_indicator_t gsm_congestion_re_attempt_indicator;
ogs_nas_service_level_aa_container_t service_level_aa_container;
} ogs_nas_5gs_pdu_session_establishment_reject_t;
@ -1041,7 +1245,10 @@ typedef struct ogs_nas_5gs_pdu_session_authentication_result_s {
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_MAPPED_EPS_BEARER_CONTEXTS_PRESENT ((uint64_t)1<<7)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT ((uint64_t)1<<8)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_PORT_MANAGEMENT_INFORMATION_CONTAINER_PRESENT ((uint64_t)1<<9)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<10)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_IP_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<10)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<11)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_REQUESTED_MBS_CONTAINER_PRESENT ((uint64_t)1<<12)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_SERVICE_LEVEL_AA_CONTAINER_PRESENT ((uint64_t)1<<13)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_5GSM_CAPABILITY_TYPE 0x28
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_5GSM_CAUSE_TYPE 0x59
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_MAXIMUM_NUMBER_OF_SUPPORTED_PACKET_FILTERS_TYPE 0x55
@ -1051,8 +1258,11 @@ typedef struct ogs_nas_5gs_pdu_session_authentication_result_s {
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_REQUESTED_QOS_FLOW_DESCRIPTIONS_TYPE 0x79
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_MAPPED_EPS_BEARER_CONTEXTS_TYPE 0x75
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_TYPE 0x7B
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_PORT_MANAGEMENT_INFORMATION_CONTAINER_TYPE 0x7C
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x66
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_PORT_MANAGEMENT_INFORMATION_CONTAINER_TYPE 0x74
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_IP_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x66
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x1F
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_REQUESTED_MBS_CONTAINER_TYPE 0x70
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REQUEST_SERVICE_LEVEL_AA_CONTAINER_TYPE 0x72
typedef struct ogs_nas_5gs_pdu_session_modification_request_s {
@ -1068,7 +1278,10 @@ typedef struct ogs_nas_5gs_pdu_session_modification_request_s {
ogs_nas_mapped_eps_bearer_contexts_t mapped_eps_bearer_contexts;
ogs_nas_extended_protocol_configuration_options_t extended_protocol_configuration_options;
ogs_nas_port_management_information_container_t port_management_information_container;
ogs_nas_header_compression_configuration_t header_compression_configuration;
ogs_nas_header_compression_configuration_t ip_header_compression_configuration;
ogs_nas_ethernet_header_compression_configuration_t ethernet_header_compression_configuration;
ogs_nas_requested_mbs_container_t requested_mbs_container;
ogs_nas_service_level_aa_container_t service_level_aa_container;
} ogs_nas_5gs_pdu_session_modification_request_t;
@ -1076,13 +1289,13 @@ typedef struct ogs_nas_5gs_pdu_session_modification_request_s {
* PDU SESSION MODIFICATION REJECT
******************************************************/
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_BACK_OFF_TIMER_VALUE_PRESENT ((uint64_t)1<<0)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_RE_ATTEMPT_INDICATOR_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_RE_ATTEMPT_INDICATOR_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_BACK_OFF_TIMER_VALUE_TYPE 0x37
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_TYPE 0x61
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_TYPE 0x7B
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_RE_ATTEMPT_INDICATOR_TYPE 0x1D
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_REJECT_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_TYPE 0x61
typedef struct ogs_nas_5gs_pdu_session_modification_reject_s {
/* Mandatory fields */
@ -1091,9 +1304,9 @@ typedef struct ogs_nas_5gs_pdu_session_modification_reject_s {
/* Optional fields */
uint64_t presencemask;
ogs_nas_gprs_timer_3_t back_off_timer_value;
ogs_nas_5gsm_congestion_re_attempt_indicator_t gsm_congestion_re_attempt_indicator;
ogs_nas_extended_protocol_configuration_options_t extended_protocol_configuration_options;
ogs_nas_re_attempt_indicator_t re_attempt_indicator;
ogs_nas_5gsm_congestion_re_attempt_indicator_t gsm_congestion_re_attempt_indicator;
} ogs_nas_5gs_pdu_session_modification_reject_t;
@ -1109,9 +1322,12 @@ typedef struct ogs_nas_5gs_pdu_session_modification_reject_s {
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_AUTHORIZED_QOS_FLOW_DESCRIPTIONS_PRESENT ((uint64_t)1<<6)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT ((uint64_t)1<<7)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_ATSSS_CONTAINER_PRESENT ((uint64_t)1<<8)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<9)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_IP_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<9)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_PORT_MANAGEMENT_INFORMATION_CONTAINER_PRESENT ((uint64_t)1<<10)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_SERVING_PLMN_RATE_CONTROL_PRESENT ((uint64_t)1<<11)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_PRESENT ((uint64_t)1<<12)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_RECEIVED_MBS_CONTAINER_PRESENT ((uint64_t)1<<13)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_SERVICE_LEVEL_AA_CONTAINER_PRESENT ((uint64_t)1<<14)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_5GSM_CAUSE_TYPE 0x59
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_SESSION_AMBR_TYPE 0x2A
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_RQ_TIMER_VALUE_TYPE 0x56
@ -1121,9 +1337,12 @@ typedef struct ogs_nas_5gs_pdu_session_modification_reject_s {
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_AUTHORIZED_QOS_FLOW_DESCRIPTIONS_TYPE 0x79
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_TYPE 0x7B
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_ATSSS_CONTAINER_TYPE 0x77
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x66
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_PORT_MANAGEMENT_INFORMATION_CONTAINER_TYPE 0x7C
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_IP_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x66
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_PORT_MANAGEMENT_INFORMATION_CONTAINER_TYPE 0x74
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_SERVING_PLMN_RATE_CONTROL_TYPE 0x1E
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_ETHERNET_HEADER_COMPRESSION_CONFIGURATION_TYPE 0x1F
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_RECEIVED_MBS_CONTAINER_TYPE 0x71
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMMAND_SERVICE_LEVEL_AA_CONTAINER_TYPE 0x72
typedef struct ogs_nas_5gs_pdu_session_modification_command_s {
@ -1138,9 +1357,12 @@ typedef struct ogs_nas_5gs_pdu_session_modification_command_s {
ogs_nas_qos_flow_descriptions_t authorized_qos_flow_descriptions;
ogs_nas_extended_protocol_configuration_options_t extended_protocol_configuration_options;
ogs_nas_atsss_container_t atsss_container;
ogs_nas_header_compression_configuration_t header_compression_configuration;
ogs_nas_ip_header_compression_configuration_t ip_header_compression_configuration;
ogs_nas_port_management_information_container_t port_management_information_container;
ogs_nas_serving_plmn_rate_control_t serving_plmn_rate_control;
ogs_nas_ethernet_header_compression_configuration_t ethernet_header_compression_configuration;
ogs_nas_received_mbs_container_t received_mbs_container;
ogs_nas_service_level_aa_container_t service_level_aa_container;
} ogs_nas_5gs_pdu_session_modification_command_t;
@ -1150,7 +1372,7 @@ typedef struct ogs_nas_5gs_pdu_session_modification_command_s {
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMPLETE_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT ((uint64_t)1<<0)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMPLETE_PORT_MANAGEMENT_INFORMATION_CONTAINER_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMPLETE_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_TYPE 0x7B
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMPLETE_PORT_MANAGEMENT_INFORMATION_CONTAINER_TYPE 0x7C
#define OGS_NAS_5GS_PDU_SESSION_MODIFICATION_COMPLETE_PORT_MANAGEMENT_INFORMATION_CONTAINER_TYPE 0x74
typedef struct ogs_nas_5gs_pdu_session_modification_complete_s {
@ -1218,11 +1440,13 @@ typedef struct ogs_nas_5gs_pdu_session_release_reject_s {
#define OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_ACCESS_TYPE_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_SERVICE_LEVEL_AA_CONTAINER_PRESENT ((uint64_t)1<<5)
#define OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_BACK_OFF_TIMER_VALUE_TYPE 0x37
#define OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_EAP_MESSAGE_TYPE 0x78
#define OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_5GSM_CONGESTION_RE_ATTEMPT_INDICATOR_TYPE 0x61
#define OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_TYPE 0x7B
#define OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_ACCESS_TYPE_TYPE 0xD0
#define OGS_NAS_5GS_PDU_SESSION_RELEASE_COMMAND_SERVICE_LEVEL_AA_CONTAINER_TYPE 0x72
typedef struct ogs_nas_5gs_pdu_session_release_command_s {
/* Mandatory fields */
@ -1235,6 +1459,7 @@ typedef struct ogs_nas_5gs_pdu_session_release_command_s {
ogs_nas_5gsm_congestion_re_attempt_indicator_t gsm_congestion_re_attempt_indicator;
ogs_nas_extended_protocol_configuration_options_t extended_protocol_configuration_options;
ogs_nas_access_type_t access_type;
ogs_nas_service_level_aa_container_t service_level_aa_container;
} ogs_nas_5gs_pdu_session_release_command_t;

Binary file not shown.

Binary file not shown.

View File

@ -7,6 +7,10 @@ user@host ~/Documents/git/open5gs/lib/nas/5gs/support$ \
from 24301-d80.doc to 24301-d80.docx
using Microsoft Office 2007+
* Adjust table cell in 24301-h90.docx
* Generate Message support files
user@host ~/Documents/git/open5gs/lib/nas/5gs/support$ \
python3 nas-message.py -f 24501-g41.docx -o ..
python3 nas-message.py -f 24501-h90.docx -o ..
* Add new structure to the types.h

View File

@ -5,4 +5,5 @@ ies.append({ "iei" : "12", "value" : "PDU session ID", "type" : "PDU session ide
ies.append({ "iei" : "24", "value" : "Additional information", "type" : "Additional information", "reference" : "9.11.2.1", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "58", "value" : "5GMM cause", "type" : "5GMM cause", "reference" : "9.11.3.2", "presence" : "O", "format" : "TV", "length" : "2"})
ies.append({ "iei" : "37", "value" : "Back-off timer value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "3A", "value" : "Lower bound timer value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
msg_list[key]["ies"] = ies

View File

@ -7,8 +7,14 @@ ies.append({ "iei" : "55", "value" : "Maximum number of supported packet filters
ies.append({ "iei" : "B-", "value" : "Always-on PDU session requested", "type" : "Always-on PDU session requested", "reference" : "9.11.4.4", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "39", "value" : "SM PDU DN request container", "type" : "SM PDU DN request container", "reference" : "9.11.4.15", "presence" : "O", "format" : "TLV", "length" : "3-255"})
ies.append({ "iei" : "7B", "value" : "Extended protocol configuration options", "type" : "Extended protocol configuration options", "reference" : "9.11.4.6", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "66", "value" : "Header compression configuration", "type" : "Header compression configuration", "reference" : "9.11.4.24", "presence" : "O", "format" : "TLV", "length" : "5-257"})
ies.append({ "iei" : "66", "value" : "IP header compression configuration", "type" : "IP header compression configuration", "reference" : "9.11.4.24", "presence" : "O", "format" : "TLV", "length" : "5-257"})
ies.append({ "iei" : "6E", "value" : "DS-TT Ethernet port MAC address", "type" : "DS-TT Ethernet port MAC address", "reference" : "9.11.4.25", "presence" : "O", "format" : "TLV", "length" : "8"})
ies.append({ "iei" : "6F", "value" : "UE-DS-TT residence time", "type" : "UE-DS-TT residence time", "reference" : "9.11.4.26", "presence" : "O", "format" : "TLV", "length" : "10"})
ies.append({ "iei" : "7C", "value" : "Port management information container", "type" : "Port management information container", "reference" : "9.11.4.27", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "74", "value" : "Port management information container", "type" : "Port management information container", "reference" : "9.11.4.27", "presence" : "O", "format" : "TLV-E", "length" : "8-65538"})
ies.append({ "iei" : "1F", "value" : "Ethernet header compression configuration", "type" : "Ethernet header compression configuration", "reference" : "9.11.4.28", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "29", "value" : "Suggested interface identifier", "type" : "PDU address", "reference" : "9.11.4.10", "presence" : "O", "format" : "TLV", "length" : "11"})
ies.append({ "iei" : "72", "value" : "Service-level-AA container", "type" : "Service-level-AA container", "reference" : "9.11.2.10", "presence" : "O", "format" : "TLV-E", "length" : "6-n"})
ies.append({ "iei" : "70", "value" : "Requested MBS container", "type" : "Requested MBS container", "reference" : "9.11.4.30", "presence" : "O", "format" : "TLV-E", "length" : "8-65538"})
ies.append({ "iei" : "34", "value" : "PDU session pair ID", "type" : "PDU session pair ID", "reference" : "9.11.4.32", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "35", "value" : "RSN", "type" : "RSN", "reference" : "9.11.4.33", "presence" : "O", "format" : "TLV", "length" : "3"})
msg_list[key]["ies"] = ies

View File

@ -3,7 +3,7 @@ ies.append({ "iei" : "", "value" : "Selected PDU session type", "type" : "PDU se
ies.append({ "iei" : "", "value" : "Authorized QoS rules", "type" : "QoS rules", "reference" : "9.11.4.13", "presence" : "M", "format" : "LV-E", "length" : "6-65538"})
ies.append({ "iei" : "", "value" : "Session AMBR", "type" : "Session-AMBR", "reference" : "9.11.4.14", "presence" : "M", "format" : "LV", "length" : "7"})
ies.append({ "iei" : "59", "value" : "5GSM cause", "type" : "5GSM cause", "reference" : "9.11.4.2", "presence" : "O", "format" : "TV", "length" : "2"})
ies.append({ "iei" : "29", "value" : "PDU address", "type" : "PDU address", "reference" : "9.11.4.10", "presence" : "O", "format" : "TLV", "length" : "7, 11 or 15"})
ies.append({ "iei" : "29", "value" : "PDU address", "type" : "PDU address", "reference" : "9.11.4.10", "presence" : "O", "format" : "TLV", "length" : "7-31"})
ies.append({ "iei" : "56", "value" : "RQ timer value", "type" : "GPRS timer", "reference" : "9.11.2.3", "presence" : "O", "format" : "TV", "length" : "2"})
ies.append({ "iei" : "22", "value" : "S-NSSAI", "type" : "S-NSSAI", "reference" : "9.11.2.8", "presence" : "O", "format" : "TLV", "length" : "3-10"})
ies.append({ "iei" : "8-", "value" : "Always-on PDU session indication", "type" : "Always-on PDU session indication", "reference" : "9.11.4.3", "presence" : "O", "format" : "TV", "length" : "1"})
@ -16,5 +16,8 @@ ies.append({ "iei" : "17", "value" : "5GSM network feature support", "type" : "5
ies.append({ "iei" : "18", "value" : "Serving PLMN rate control", "type" : "Serving PLMN rate control", "reference" : "9.11.4.20", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "77", "value" : "ATSSS container", "type" : "ATSSS container", "reference" : "9.11.4.22", "presence" : "O", "format" : "TLV-E", "length" : "3-65538"})
ies.append({ "iei" : "C-", "value" : "Control plane only indication", "type" : "Control plane only indication", "reference" : "9.11.4.23", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "66", "value" : "Header compression configuration", "type" : "Header compression configuration", "reference" : "9.11.4.24", "presence" : "O", "format" : "TLV", "length" : "5-257"})
ies.append({ "iei" : "66", "value" : "IP header compression configuration", "type" : "IP header compression configuration", "reference" : "9.11.4.24", "presence" : "O", "format" : "TLV", "length" : "5-257"})
ies.append({ "iei" : "1F", "value" : "Ethernet header compression configuration", "type" : "Ethernet header compression configuration", "reference" : "9.11.4.28", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "72", "value" : "Service-level-AA container", "type" : "Service-level-AA container", "reference" : "9.11.2.10", "presence" : "O", "format" : "TLV-E", "length" : "6-n"})
ies.append({ "iei" : "71", "value" : "Received MBS container", "type" : "Received MBS container", "reference" : "9.11.4.31", "presence" : "O", "format" : "TLV-E", "length" : "9-65538"})
msg_list[key]["ies"] = ies

View File

@ -3,7 +3,8 @@ ies.append({ "iei" : "", "value" : "5GSM cause", "type" : "5GSM cause", "referen
ies.append({ "iei" : "37", "value" : "Back-off timer value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "F-", "value" : "Allowed SSC mode", "type" : "Allowed SSC mode", "reference" : "9.11.4.5", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "78", "value" : "EAP message", "type" : "EAP message", "reference" : "9.11.2.2", "presence" : "O", "format" : "TLV-E", "length" : "7-1503"})
ies.append({ "iei" : "61", "value" : "5GSM congestion re-attempt indicator", "type" : "5GSM congestion re-attempt indicator", "reference" : "9.11.4.21", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "7B", "value" : "Extended protocol configuration options", "type" : "Extended protocol configuration options", "reference" : "9.11.4.6", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "1D", "value" : "Re-attempt indicator", "type" : "Re-attempt indicator", "reference" : "9.11.4.17", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "61", "value" : "5GSM congestion re-attempt indicator", "type" : "5GSM congestion re-attempt indicator", "reference" : "9.11.4.21", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "72", "value" : "Service-level-AA container", "type" : "Service-level-AA container", "reference" : "9.11.2.10", "presence" : "O", "format" : "TLV-E", "length" : "6-n"})
msg_list[key]["ies"] = ies

View File

@ -8,6 +8,9 @@ ies.append({ "iei" : "7A", "value" : "Requested QoS rules", "type" : "QoS rules"
ies.append({ "iei" : "79", "value" : "Requested QoS flow descriptions", "type" : "QoS flow descriptions", "reference" : "9.11.4.12", "presence" : "O", "format" : "TLV-E", "length" : "6-65538"})
ies.append({ "iei" : "75", "value" : "Mapped EPS bearer contexts", "type" : "Mapped EPS bearer contexts", "reference" : "9.11.4.8", "presence" : "O", "format" : "TLV-E", "length" : "7-65538"})
ies.append({ "iei" : "7B", "value" : "Extended protocol configuration options", "type" : "Extended protocol configuration options", "reference" : "9.11.4.6", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "7C", "value" : "Port management information container", "type" : "Port management information container", "reference" : "9.11.4.27", "presence" : "O", "format" : "TLV-E", "length" : "3-65538"})
ies.append({ "iei" : "66", "value" : "Header compression configuration", "type" : "Header compression configuration", "reference" : "9.11.4.24", "presence" : "O", "format" : "TLV", "length" : "5-257"})
ies.append({ "iei" : "74", "value" : "Port management information container", "type" : "Port management information container", "reference" : "9.11.4.27", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "66", "value" : "IP header compression configuration", "type" : "Header compression configuration", "reference" : "9.11.4.24", "presence" : "O", "format" : "TLV", "length" : "5-257"})
ies.append({ "iei" : "1F", "value" : "Ethernet header compression configuration", "type" : "Ethernet header compression configuration", "reference" : "9.11.4.28", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "70", "value" : "Requested MBS container", "type" : "Requested MBS container", "reference" : "9.11.4.30", "presence" : "O", "format" : "TLV-E", "length" : "8-65538"})
ies.append({ "iei" : "72", "value" : "Service-level-AA container", "type" : "Service-level-AA container", "reference" : "9.11.2.10", "presence" : "O", "format" : "TLV-E", "length" : "6-n"})
msg_list[key]["ies"] = ies

View File

@ -1,7 +1,7 @@
ies = []
ies.append({ "iei" : "", "value" : "5GSM cause", "type" : "5GSM cause", "reference" : "9.11.4.2", "presence" : "M", "format" : "V", "length" : "1"})
ies.append({ "iei" : "37", "value" : "Back-off timer value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "61", "value" : "5GSM congestion re-attempt indicator", "type" : "5GSM congestion re-attempt indicator", "reference" : "9.11.4.21", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "7B", "value" : "Extended protocol configuration options", "type" : "Extended protocol configuration options", "reference" : "9.11.4.6", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "1D", "value" : "Re-attempt indicator", "type" : "Re-attempt indicator", "reference" : "9.11.4.17", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "61", "value" : "5GSM congestion re-attempt indicator", "type" : "5GSM congestion re-attempt indicator", "reference" : "9.11.4.21", "presence" : "O", "format" : "TLV", "length" : "3"})
msg_list[key]["ies"] = ies

View File

@ -8,7 +8,10 @@ ies.append({ "iei" : "75", "value" : "Mapped EPS bearer contexts", "type" : "Map
ies.append({ "iei" : "79", "value" : "Authorized QoS flow descriptions", "type" : "QoS flow descriptions", "reference" : "9.11.4.12", "presence" : "O", "format" : "TLV-E", "length" : "6-65538"})
ies.append({ "iei" : "7B", "value" : "Extended protocol configuration options", "type" : "Extended protocol configuration options", "reference" : "9.11.4.6", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "77", "value" : "ATSSS container", "type" : "ATSSS container", "reference" : "9.11.4.22", "presence" : "O", "format" : "TLV-E", "length" : "3-65538"})
ies.append({ "iei" : "66", "value" : "Header compression configuration", "type" : "Header compression configuration", "reference" : "9.11.4.24", "presence" : "O", "format" : "TLV", "length" : "5-257"})
ies.append({ "iei" : "7C", "value" : "Port management information container", "type" : "Port management information container", "reference" : "9.11.4.27", "presence" : "O", "format" : "TLV-E", "length" : "3-65538"})
ies.append({ "iei" : "66", "value" : "IP header compression configuration", "type" : "IP header compression configuration", "reference" : "9.11.4.24", "presence" : "O", "format" : "TLV", "length" : "5-257"})
ies.append({ "iei" : "74", "value" : "Port management information container", "type" : "Port management information container", "reference" : "9.11.4.27", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "1E", "value" : "Serving PLMN rate control", "type" : "Serving PLMN rate control", "reference" : "9.11.4.20", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "1F", "value" : "Ethernet header compression configuration", "type" : "Ethernet header compression configuration", "reference" : "9.11.4.28", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "71", "value" : "Received MBS container", "type" : "Received MBS container", "reference" : "9.11.4.31", "presence" : "O", "format" : "TLV-E", "length" : "9-65538"})
ies.append({ "iei" : "72", "value" : "Service-level-AA container", "type" : "Service-level-AA container", "reference" : "9.11.2.10", "presence" : "O", "format" : "TLV-E", "length" : "6-n"})
msg_list[key]["ies"] = ies

View File

@ -1,4 +1,4 @@
ies = []
ies.append({ "iei" : "7B", "value" : "Extended protocol configuration options", "type" : "Extended protocol configuration options", "reference" : "9.11.4.6", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "7C", "value" : "Port management information container", "type" : "Port management information container", "reference" : "9.11.4.27", "presence" : "O", "format" : "TLV-E", "length" : "3-65538"})
ies.append({ "iei" : "74", "value" : "Port management information container", "type" : "Port management information container", "reference" : "9.11.4.27", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
msg_list[key]["ies"] = ies

View File

@ -5,4 +5,5 @@ ies.append({ "iei" : "78", "value" : "EAP message", "type" : "EAP message", "ref
ies.append({ "iei" : "61", "value" : "5GSM congestion re-attempt indicator", "type" : "5GSM congestion re-attempt indicator", "reference" : "9.11.4.21", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "7B", "value" : "Extended protocol configuration options", "type" : "Extended protocol configuration options", "reference" : "9.11.4.6", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "D-", "value" : "Access type", "type" : "Access type", "reference" : "9.11.2.1A", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "72", "value" : "Service-level-AA container", "type" : "Service-level-AA container", "reference" : "9.11.2.10", "presence" : "O", "format" : "TLV-E", "length" : "6-n"})
msg_list[key]["ies"] = ies

View File

@ -25,11 +25,19 @@ ies.append({ "iei" : "41", "value" : "Mobile station classmark 2", "type" : "Mob
ies.append({ "iei" : "42", "value" : "Supported codecs", "type" : "Supported codec list", "reference" : "9.11.3.51A", "presence" : "O", "format" : "TLV", "length" : "5-n"})
ies.append({ "iei" : "71", "value" : "NAS message container", "type" : "message container", "reference" : "9.11.3.33", "presence" : "O", "format" : "TLV-E", "length" : "4-n"})
ies.append({ "iei" : "60", "value" : "EPS bearer context status", "type" : "EPS bearer context status", "reference" : "9.11.3.23A", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "6E", "value" : "Requested extended DRX parameters", "type" : "Extended DRX parameters", "reference" : "9.11.3.26A", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "6E", "value" : "Requested extended DRX parameters", "type" : "Extended DRX parameters", "reference" : "9.11.3.26A", "presence" : "O", "format" : "TLV", "length" : "3-4"})
ies.append({ "iei" : "6A", "value" : "T3324 value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "67", "value" : "UE radio capability ID", "type" : "UE radio capability ID", "reference" : "9.11.3.68", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "35", "value" : "Requested mapped NSSAI", "type" : "Mapped NSSAI", "reference" : "9.11.3.31B", "presence" : "O", "format" : "TLV", "length" : "3-42"})
ies.append({ "iei" : "48", "value" : "Additional information requested", "type" : "Additional information requested", "reference" : "9.11.3.12A", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1A", "value" : "Requested WUS assistance information", "type" : "WUS assistance information", "reference" : "9.11.3.71", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "A1", "value" : "N5GC indication", "type" : "N5GC indication", "reference" : "9.11.3.72", "presence" : "O", "format" : "T", "length" : "1"})
ies.append({ "iei" : "A-", "value" : "N5GC indication", "type" : "N5GC indication", "reference" : "9.11.3.72", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "30", "value" : "Requested NB-N1 mode DRX parameters", "type" : "NB-N1 mode DRX parameters", "reference" : "9.11.3.73", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "29", "value" : "UE request type", "type" : "UE request type", "reference" : "9.11.3.76", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "28", "value" : "Paging restriction", "type" : "Paging restriction", "reference" : "9.11.3.77", "presence" : "O", "format" : "TLV", "length" : "3-35"})
ies.append({ "iei" : "72", "value" : "Service-level-AA container", "type" : "Service-level-AA container", "reference" : "9.11.2.10", "presence" : "O", "format" : "TLV-E", "length" : "6-n"})
ies.append({ "iei" : "32", "value" : "NID", "type" : "NID", "reference" : "9.11.3.79", "presence" : "O", "format" : "TLV", "length" : "8"})
ies.append({ "iei" : "16", "value" : "MS determined PLMN with disaster condition", "type" : "PLMN identity", "reference" : "9.11.3.85", "presence" : "O", "format" : "TLV", "length" : "5"})
ies.append({ "iei" : "2A", "value" : "Requested PEIPS assistance information", "type" : "PEIPS assistance information", "reference" : "9.11.3.80", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "3B", "value" : "Requested T3512 value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
msg_list[key]["ies"] = ies

View File

@ -22,19 +22,32 @@ ies.append({ "iei" : "7A", "value" : "Extended emergency number list", "type" :
ies.append({ "iei" : "73", "value" : "SOR transparent container", "type" : "SOR transparent container", "reference" : "9.11.3.51", "presence" : "O", "format" : "TLV-E", "length" : "20-n"})
ies.append({ "iei" : "78", "value" : "EAP message", "type" : "EAP message", "reference" : "9.11.2.2", "presence" : "O", "format" : "TLV-E", "length" : "7-1503"})
ies.append({ "iei" : "A-", "value" : "NSSAI inclusion mode", "type" : "NSSAI inclusion mode", "reference" : "9.11.3.37A", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "76", "value" : "Operator-defined access category definitions", "type" : "Operator-defined access category definitions", "reference" : "9.11.3.38", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "76", "value" : "Operator-defined access category definitions", "type" : "Operator-defined access category definitions", "reference" : "9.11.3.38", "presence" : "O", "format" : "TLV-E", "length" : "3-8323"})
ies.append({ "iei" : "51", "value" : "Negotiated DRX parameters", "type" : "5GS DRX parameters", "reference" : "9.11.3.2A", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "D-", "value" : "Non-3GPP NW policies", "type" : "Non-3GPP NW provided policies", "reference" : "9.11.3.36A", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "60", "value" : "EPS bearer context status", "type" : "EPS bearer context status", "reference" : "9.11.3.23A", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "6E", "value" : "Negotiated extended DRX parameters", "type" : "Extended DRX parameters", "reference" : "9.11.3.26A", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "6E", "value" : "Negotiated extended DRX parameters", "type" : "Extended DRX parameters", "reference" : "9.11.3.26A", "presence" : "O", "format" : "TLV", "length" : "3-4"})
ies.append({ "iei" : "6C", "value" : "T3447 value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "6B", "value" : "T3448 value", "type" : "GPRS timer 3", "reference" : "9.11.2.4", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "6B", "value" : "T3448 value", "type" : "GPRS timer 2", "reference" : "9.11.2.4", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "6A", "value" : "T3324 value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "67", "value" : "UE radio capability ID", "type" : "UE radio capability ID", "reference" : "9.11.3.68", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "68", "value" : "UE radio capability ID deletion indication", "type" : "UE radio capability ID deletion indication", "reference" : "9.11.3.69", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "39", "value" : "Pending NSSAI", "type" : "NSSAI", "reference" : "9.11.3.37", "presence" : "O", "format" : "TLV", "length" : "4-74"})
ies.append({ "iei" : "74", "value" : "Ciphering key data", "type" : "Ciphering key data", "reference" : "9.11.3.18C", "presence" : "O", "format" : "TLV-E", "length" : "x-n"})
ies.append({ "iei" : "E-", "value" : "UE radio capability ID deletion indication", "type" : "UE radio capability ID deletion indication", "reference" : "9.11.3.69", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "39", "value" : "Pending NSSAI", "type" : "NSSAI", "reference" : "9.11.3.37", "presence" : "O", "format" : "TLV", "length" : "4-146"})
ies.append({ "iei" : "74", "value" : "Ciphering key data", "type" : "Ciphering key data", "reference" : "9.11.3.18C", "presence" : "O", "format" : "TLV-E", "length" : "34-n"})
ies.append({ "iei" : "75", "value" : "CAG information list", "type" : "CAG information list", "reference" : "9.11.3.18A", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "1B", "value" : "Truncated 5G-S-TMSI configuration", "type" : "Truncated 5G-S-TMSI configuration", "reference" : "9.11.3.70", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1C", "value" : "Negotiated WUS assistance information", "type" : "WUS assistance information", "reference" : "9.11.3.71", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "29", "value" : "Negotiated NB-N1 mode DRX parameters", "type" : "NB-N1 mode DRX parameters", "reference" : "9.11.3.73", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "68", "value" : "Extended rejected NSSAI", "type" : "Extended rejected NSSAI", "reference" : "9.11.3.75", "presence" : "O", "format" : "TLV", "length" : "5-90"})
ies.append({ "iei" : "7B", "value" : "Service-level-AA container", "type" : "Service-level-AA container", "reference" : "9.11.2.10", "presence" : "O", "format" : "TLV-E", "length" : "6-n"})
ies.append({ "iei" : "33", "value" : "Negotiated PEIPS assistance information", "type" : "PEIPS assistance information", "reference" : "9.11.3.80", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "34", "value" : "5GS additional request result", "type" : "5GS additional request result", "reference" : "9.11.3.81", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "70", "value" : "NSSRG information", "type" : "NSSRG information", "reference" : "9.11.3.82", "presence" : "O", "format" : "TLV-E", "length" : "7-4099"})
ies.append({ "iei" : "14", "value" : "Disaster roaming wait range", "type" : "Registration wait range", "reference" : "9.11.3.84", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "2C", "value" : "Disaster return wait range", "type" : "Registration wait range", "reference" : "9.11.3.84", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "13", "value" : "List of PLMNs to be used in disaster condition", "type" : "List of PLMNs to be used in disaster condition", "reference" : "9.11.3.83", "presence" : "O", "format" : "TLV", "length" : "2-n"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of 5GS forbidden tracking areas for roaming", "type" : "5GS tracking area identity list", "reference" : "9.11.3.9", "presence" : "O", "format" : "TLV", "length" : "9-114"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of 5GS forbidden tracking areas forregional provision of service", "type" : "5GS tracking area identity list", "reference" : "9.11.3.9", "presence" : "O", "format" : "TLV", "length" : "9-114"})
ies.append({ "iei" : "71", "value" : "Extended CAG information list", "type" : "Extended CAG information list", "reference" : "9.11.3.86", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "7C", "value" : "NSAG information", "type" : "NSAG information", "reference" : "9.11.3.87", "presence" : "O", "format" : "TLV-E", "length" : "9-3143"})
msg_list[key]["ies"] = ies

View File

@ -4,4 +4,11 @@ ies.append({ "iei" : "5F", "value" : "T3346 value", "type" : "GPRS timer 2", "re
ies.append({ "iei" : "16", "value" : "T3502 value", "type" : "GPRS timer 2", "reference" : "9.11.2.4", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "78", "value" : "EAP message", "type" : "EAP message", "reference" : "9.11.2.2", "presence" : "O", "format" : "TLV-E", "length" : "7-1503"})
ies.append({ "iei" : "69", "value" : "Rejected NSSAI", "type" : "Rejected NSSAI", "reference" : "9.11.3.46", "presence" : "O", "format" : "TLV", "length" : "4-42"})
ies.append({ "iei" : "75", "value" : "CAG information list", "type" : "CAG information list", "reference" : "9.11.3.18A", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "68", "value" : "Extended rejected NSSAI", "type" : "Extended rejected NSSAI", "reference" : "9.11.3.75", "presence" : "O", "format" : "TLV", "length" : "5-90"})
ies.append({ "iei" : "2C", "value" : "Disaster return wait range", "type" : "Registration wait range", "reference" : "9.11.3.84", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "71", "value" : "Extended CAG information list", "type" : "Extended CAG information list", "reference" : "9.11.3.86", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "3A", "value" : "Lower bound timer value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of 5GS forbidden tracking areas for roaming", "type" : "5GS tracking area identity list", "reference" : "9.11.3.9", "presence" : "O", "format" : "TLV", "length" : "9-114"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of 5GS forbidden tracking areas forregional provision of service", "type" : "5GS tracking area identity list", "reference" : "9.11.3.9", "presence" : "O", "format" : "TLV", "length" : "9-114"})
msg_list[key]["ies"] = ies

View File

@ -3,4 +3,11 @@ ies.append({ "iei" : "", "value" : "De-registration type", "type" : "De-registra
ies.append({ "iei" : "58", "value" : "5GMM cause", "type" : "5GMM cause", "reference" : "9.11.3.2", "presence" : "O", "format" : "TV", "length" : "2"})
ies.append({ "iei" : "5F", "value" : "T3346 value", "type" : "GPRS timer 2", "reference" : "9.11.2.4", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "6D", "value" : "Rejected NSSAI", "type" : "Rejected NSSAI", "reference" : "9.11.3.46", "presence" : "O", "format" : "TLV", "length" : "4-42"})
ies.append({ "iei" : "75", "value" : "CAG information list", "type" : "CAG information list", "reference" : "9.11.3.18A", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "68", "value" : "Extended rejected NSSAI", "type" : "Extended rejected NSSAI", "reference" : "9.11.3.75", "presence" : "O", "format" : "TLV", "length" : "5-90"})
ies.append({ "iei" : "2C", "value" : "Disaster return wait range", "type" : "Registration wait range", "reference" : "9.11.3.84", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "71", "value" : "Extended CAG information list", "type" : "Extended CAG information list", "reference" : "9.11.3.86", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "3A", "value" : "Lower bound timer value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of 5GS forbidden tracking areas for roaming", "type" : "5GS tracking area identity list", "reference" : "9.11.3.9", "presence" : "O", "format" : "TLV", "length" : "9-114"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of 5GS forbidden tracking areas forregional provision of service", "type" : "5GS tracking area identity list", "reference" : "9.11.3.9", "presence" : "O", "format" : "TLV", "length" : "9-114"})
msg_list[key]["ies"] = ies

View File

@ -5,4 +5,6 @@ ies.append({ "iei" : "40", "value" : "Uplink data status", "type" : "Uplink data
ies.append({ "iei" : "50", "value" : "PDU session status", "type" : "PDU session status", "reference" : "9.11.3.44", "presence" : "O", "format" : "TLV", "length" : "4-34"})
ies.append({ "iei" : "25", "value" : "Allowed PDU session status", "type" : "Allowed PDU session status", "reference" : "9.11.3.13", "presence" : "O", "format" : "TLV", "length" : "4-34"})
ies.append({ "iei" : "71", "value" : "NAS message container", "type" : "message container", "reference" : "9.11.3.33", "presence" : "O", "format" : "TLV-E", "length" : "4-n"})
ies.append({ "iei" : "29", "value" : "UE request type", "type" : "UE request type", "reference" : "9.11.3.76", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "28", "value" : "Paging restriction", "type" : "Paging restriction", "reference" : "9.11.3.77", "presence" : "O", "format" : "TLV", "length" : "3-35"})
msg_list[key]["ies"] = ies

View File

@ -3,5 +3,11 @@ ies.append({ "iei" : "", "value" : "5GMM cause", "type" : "5GMM cause", "referen
ies.append({ "iei" : "50", "value" : "PDU session status", "type" : "PDU session status", "reference" : "9.11.3.44", "presence" : "O", "format" : "TLV", "length" : "4-34"})
ies.append({ "iei" : "5F", "value" : "T3346 value", "type" : "GPRS timer 2", "reference" : "9.11.2.4", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "78", "value" : "EAP message", "type" : "EAP message", "reference" : "9.11.2.2", "presence" : "O", "format" : "TLV-E", "length" : "7-1503"})
ies.append({ "iei" : "6B", "value" : "T3448 value", "type" : "GPRS timer 3", "reference" : "9.11.2.4", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "6B", "value" : "T3448 value", "type" : "GPRS timer 2", "reference" : "9.11.2.4", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "75", "value" : "CAG information list", "type" : "CAG information list", "reference" : "9.11.3.18A", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "2C", "value" : "Disaster return wait range", "type" : "Registration wait range", "reference" : "9.11.3.84", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "71", "value" : "Extended CAG information list", "type" : "Extended CAG information list", "reference" : "9.11.3.86", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "3A", "value" : "Lower bound timer value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of 5GS forbidden tracking areas for roaming", "type" : "5GS tracking area identity list", "reference" : "9.11.3.9", "presence" : "O", "format" : "TLV", "length" : "9-114"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of 5GS forbidden tracking areas forregional provision of service", "type" : "5GS tracking area identity list", "reference" : "9.11.3.9", "presence" : "O", "format" : "TLV", "length" : "9-114"})
msg_list[key]["ies"] = ies

View File

@ -3,5 +3,8 @@ ies.append({ "iei" : "50", "value" : "PDU session status", "type" : "PDU session
ies.append({ "iei" : "26", "value" : "PDU session reactivation result", "type" : "PDU session reactivation result", "reference" : "9.11.3.42", "presence" : "O", "format" : "TLV", "length" : "4-34"})
ies.append({ "iei" : "72", "value" : "PDU session reactivation result error cause", "type" : "PDU session reactivation result error cause", "reference" : "9.11.3.43", "presence" : "O", "format" : "TLV-E", "length" : "5-515"})
ies.append({ "iei" : "78", "value" : "EAP message", "type" : "EAP message", "reference" : "9.11.2.2", "presence" : "O", "format" : "TLV-E", "length" : "7-1503"})
ies.append({ "iei" : "6B", "value" : "T3448 value", "type" : "GPRS timer 3", "reference" : "9.11.2.4", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "6B", "value" : "T3448 value", "type" : "GPRS timer 2", "reference" : "9.11.2.4", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "34", "value" : "5GS additional request result", "type" : "5GS additional request result", "reference" : "9.11.3.81", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of 5GS forbidden tracking areas for roaming", "type" : "5GS tracking area identity list", "reference" : "9.11.3.9", "presence" : "O", "format" : "TLV", "length" : "9-114"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of 5GS forbidden tracking areas forregional provision of service", "type" : "5GS tracking area identity list", "reference" : "9.11.3.9", "presence" : "O", "format" : "TLV", "length" : "9-114"})
msg_list[key]["ies"] = ies

View File

@ -14,12 +14,23 @@ ies.append({ "iei" : "B-", "value" : "MICO indication", "type" : "MICO indicatio
ies.append({ "iei" : "9-", "value" : "Network slicing indication", "type" : "Network slicing indication", "reference" : "9.11.3.36", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "31", "value" : "Configured NSSAI", "type" : "NSSAI", "reference" : "9.11.3.37", "presence" : "O", "format" : "TLV", "length" : "4-146"})
ies.append({ "iei" : "11", "value" : "Rejected NSSAI", "type" : "Rejected NSSAI", "reference" : "9.11.3.46", "presence" : "O", "format" : "TLV", "length" : "4-42"})
ies.append({ "iei" : "76", "value" : "Operator-defined access category definitions", "type" : "Operator-defined access category definitions", "reference" : "9.11.3.38", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "76", "value" : "Operator-defined access category definitions", "type" : "Operator-defined access category definitions", "reference" : "9.11.3.38", "presence" : "O", "format" : "TLV-E", "length" : "3-8323"})
ies.append({ "iei" : "F-", "value" : "SMS indication", "type" : "SMS indication", "reference" : "9.11.3.50A", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "6C", "value" : "T3447 value", "type" : "GPRS timer 3", "reference" : "9.11.2.5", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "75", "value" : "CAG information list", "type" : "CAG information list", "reference" : "9.11.3.18A", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "67", "value" : "UE radio capability ID", "type" : "UE radio capability ID", "reference" : "9.11.3.68", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "68", "value" : "UE radio capability ID deletion indication", "type" : "UE radio capability ID deletion indication", "reference" : "9.11.3.69", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "A-", "value" : "UE radio capability ID deletion indication", "type" : "UE radio capability ID deletion indication", "reference" : "9.11.3.69", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "44", "value" : "5GS registration result", "type" : "5GS registration result", "reference" : "9.11.3.6", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1B", "value" : "Truncated 5G-S-TMSI configuration", "type" : "Truncated 5G-S-TMSI configuration", "reference" : "9.11.3.70", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "C-", "value" : "Additional configuration indication", "type" : "Additional configuration indication", "reference" : "9.11.3.74", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "68", "value" : "Extended rejected NSSAI", "type" : "Extended rejected NSSAI", "reference" : "9.11.3.75", "presence" : "O", "format" : "TLV", "length" : "5-90"})
ies.append({ "iei" : "72", "value" : "Service-level-AA container", "type" : "Service-level-AA container", "reference" : "9.11.2.10", "presence" : "O", "format" : "TLV-E", "length" : "6-n"})
ies.append({ "iei" : "70", "value" : "NSSRG information", "type" : "NSSRG information", "reference" : "9.11.3.82", "presence" : "O", "format" : "TLV-E", "length" : "7-4099"})
ies.append({ "iei" : "14", "value" : "Disaster roaming wait range", "type" : "Registration wait range", "reference" : "9.11.3.84", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "2C", "value" : "Disaster return wait range", "type" : "Registration wait range", "reference" : "9.11.3.84", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "13", "value" : "List of PLMNs to be used in disaster condition", "type" : "List of PLMNs to be used in disaster condition", "reference" : "9.11.3.83", "presence" : "O", "format" : "TLV", "length" : "2-n"})
ies.append({ "iei" : "71", "value" : "Extended CAG information list", "type" : "Extended CAG information list", "reference" : "9.11.3.86", "presence" : "O", "format" : "TLV-E", "length" : "3-n"})
ies.append({ "iei" : "1F", "value" : "Updated PEIPS assistance information", "type" : "PEIPS assistance information", "reference" : "9.11.3.80", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "73", "value" : "NSAG information", "type" : "NSAG information", "reference" : "9.11.3.87", "presence" : "O", "format" : "TLV-E", "length" : "9-3143"})
ies.append({ "iei" : "E-", "value" : "Priority indicator", "type" : "Priority indicator", "reference" : "9.11.3.91", "presence" : "O", "format" : "TV", "length" : "1"})
msg_list[key]["ies"] = ies

View File

@ -1,6 +1,6 @@
# The MIT License
# Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
# Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
# This file is part of Open5GS.
@ -64,7 +64,7 @@ def output_header_to_file(f):
f.write("""/*
* The MIT License
*
* Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
* Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
@ -116,7 +116,8 @@ def get_value(v):
def get_cells(cells):
iei = cells[0].text
value = re.sub("\s*$", "", re.sub("\s*\n*\s*\([^\)]*\)*", "", re.sub("'s", "", cells[1].text)))
value = cells[1].text.encode('ascii', 'ignore').decode('utf-8')
value = re.sub("\s*$", "", re.sub("\s*\n*\s*\([^\)]*\)*", "", re.sub("\"|'s", "", value)))
type = re.sub("^NAS ", "", re.sub("'s", "", re.sub('\s*\n\s*[a-zA-Z0-9.]*', '', cells[2].text)))
reference = re.sub('[a-zA-Z0-9\'\-\s]*\n\s*', '', cells[2].text)
presence = cells[3].text
@ -240,22 +241,22 @@ msg_list["SECURITY MODE COMPLETE"]["table"] = 25
msg_list["SECURITY MODE REJECT"]["table"] = 26
msg_list["5GMM STATUS"]["table"] = 28
msg_list["PDU SESSION ESTABLISHMENT REQUEST"]["table"] = 33
msg_list["PDU SESSION ESTABLISHMENT ACCEPT"]["table"] = 34
msg_list["PDU SESSION ESTABLISHMENT REJECT"]["table"] = 35
msg_list["PDU SESSION AUTHENTICATION COMMAND"]["table"] = 36
msg_list["PDU SESSION AUTHENTICATION COMPLETE"]["table"] = 37
msg_list["PDU SESSION AUTHENTICATION RESULT"]["table"] = 38
msg_list["PDU SESSION MODIFICATION REQUEST"]["table"] = 39
msg_list["PDU SESSION MODIFICATION REJECT"]["table"] = 40
msg_list["PDU SESSION MODIFICATION COMMAND"]["table"] = 41
msg_list["PDU SESSION MODIFICATION COMPLETE"]["table"] = 42
msg_list["PDU SESSION MODIFICATION COMMAND REJECT"]["table"] = 43
msg_list["PDU SESSION RELEASE REQUEST"]["table"] = 44
msg_list["PDU SESSION RELEASE REJECT"]["table"] = 45
msg_list["PDU SESSION RELEASE COMMAND"]["table"] = 46
msg_list["PDU SESSION RELEASE COMPLETE"]["table"] = 47
msg_list["5GSM STATUS"]["table"] = 48
msg_list["PDU SESSION ESTABLISHMENT REQUEST"]["table"] = 38
msg_list["PDU SESSION ESTABLISHMENT ACCEPT"]["table"] = 39
msg_list["PDU SESSION ESTABLISHMENT REJECT"]["table"] = 40
msg_list["PDU SESSION AUTHENTICATION COMMAND"]["table"] = 41
msg_list["PDU SESSION AUTHENTICATION COMPLETE"]["table"] = 42
msg_list["PDU SESSION AUTHENTICATION RESULT"]["table"] = 43
msg_list["PDU SESSION MODIFICATION REQUEST"]["table"] = 44
msg_list["PDU SESSION MODIFICATION REJECT"]["table"] = 45
msg_list["PDU SESSION MODIFICATION COMMAND"]["table"] = 46
msg_list["PDU SESSION MODIFICATION COMPLETE"]["table"] = 47
msg_list["PDU SESSION MODIFICATION COMMAND REJECT"]["table"] = 48
msg_list["PDU SESSION RELEASE REQUEST"]["table"] = 49
msg_list["PDU SESSION RELEASE REJECT"]["table"] = 50
msg_list["PDU SESSION RELEASE COMMAND"]["table"] = 51
msg_list["PDU SESSION RELEASE COMPLETE"]["table"] = 52
msg_list["5GSM STATUS"]["table"] = 53
for key in msg_list.keys():
if "table" not in msg_list[key].keys():

View File

@ -50,7 +50,7 @@ typedef struct ogs_nas_eap_message_s {
void *buffer;
} ogs_nas_eap_message_t;
/* 9.11.2.8.1 S-NSSAI
/* 9.11.2.8 S-NSSAI
* O TLV 3-10 */
#define OGS_NAS_S_NSSAI_SST_LEN 1
#define OGS_NAS_S_NSSAI_SST_AND_MAPPED_HPLMN_SST_LEN 2
@ -76,6 +76,14 @@ void ogs_nas_build_s_nssai2(
ogs_s_nssai_t *s_nssai, ogs_s_nssai_t *mapped_hplmn);
int ogs_nas_parse_s_nssai(
ogs_nas_s_nssai_ie_t *nas_s_nssai_ie, ogs_nas_s_nssai_t *nas_s_nssai);
/* 9.11.2.10 Service-level-AA container
* O TLV-E 6-n */
typedef struct ogs_nas_service_level_aa_container_s {
uint16_t length;
void *buffer;
} __attribute__ ((packed)) ogs_nas_service_level_aa_container_t;
/* 9.11.3.1 5GMM capability
* O TLV 3-15 */
typedef struct ogs_nas_5gmm_capability_s {
@ -480,7 +488,7 @@ ED4(uint8_t type:4;,
/* 9.11.3.37 NSSAI
* O TLV 4-72 */
#define OGS_NAS_MAX_NSSAI_LEN 70
#define OGS_NAS_MAX_NSSAI_LEN 142
typedef struct ogs_nas_nssai_s {
uint8_t length;
uint8_t buffer[OGS_NAS_MAX_NSSAI_LEN];
@ -609,7 +617,7 @@ ED2(uint8_t type:4;,
/* 9.11.3.51 SOR transparent container
* O TLV-E 20-n */
typedef struct ogs_nas_sor_transparent_container_s {
uint8_t length;
uint16_t length;
void *buffer;
} ogs_nas_sor_transparent_container_t;
@ -643,6 +651,117 @@ ED2(uint8_t amf_set_id:4;,
uint8_t amf_pointer_value:4;)
} __attribute__ ((packed)) ogs_nas_truncated_5g_s_tmsi_configuration_t;
/* 9.11.3.72 N5GC indication
* O T 1 */
typedef struct ogs_nas_n5gc_indication_s {
uint8_t type;
} __attribute__ ((packed)) ogs_nas_n5gc_indication_t;
/* 9.11.3.73 NB-N1 mode DRX parameters
* O TLV 3 */
typedef struct ogs_nas_nb_n1_mode_drx_parameters_s {
uint8_t length;
ED2(uint8_t type:4;,
uint8_t value:4;)
} __attribute__ ((packed)) ogs_nas_nb_n1_mode_drx_parameters_t;
/* 9.11.3.74 Additional configuration indication
* O T 1 */
typedef struct ogs_nas_additional_configuration_indication_s {
uint8_t type;
} __attribute__ ((packed)) ogs_nas_additional_configuration_indication_t;
/* 9.11.3.75 Extended rejected NSSAI
* O TLV 5-90 */
#define OGS_NAS_MAX_EXTENDED_REJECTED_NSSAI_LEN 88
typedef struct ogs_nas_extended_rejected_nssai_s {
uint8_t length;
uint8_t buffer[OGS_NAS_MAX_EXTENDED_REJECTED_NSSAI_LEN];
} __attribute__ ((packed)) ogs_nas_extended_rejected_nssai_t;
/* 9.11.3.79 NID
* See subclause 9.2.7 in 3GPP TS 24.502 [18]
* O TLV 8 */
typedef struct ogs_nas_nid_s {
uint8_t length;
ED2(uint8_t digit1:4;,
uint8_t assignment_mode:4;)
ED2(uint8_t digit3:4;,
uint8_t digit2:4;)
ED2(uint8_t digit5:4;,
uint8_t digit4:4;)
ED2(uint8_t digit7:4;,
uint8_t digit6:4;)
ED2(uint8_t digit9:4;,
uint8_t digit8:4;)
ED2(uint8_t spare:4;,
uint8_t digit10:4;)
} __attribute__ ((packed)) ogs_nas_nid_t;
/* 9.11.3.80 PEIPS assistance information
* O TLV 3-n */
typedef struct ogs_nas_peips_assistance_information_s {
uint8_t length;
uint8_t spare[255];
} __attribute__ ((packed)) ogs_nas_peips_assistance_information_t;
/* 9.11.3.81 5GS additional request result
* O TLV 3 */
typedef struct ogs_nas_5gs_additional_request_result_s {
uint8_t length;
ED2(uint8_t spare:6;,
uint8_t prd:2;)
} __attribute__ ((packed)) ogs_nas_5gs_additional_request_result_t;
/* 9.11.3.82 NSSRG information
* O TLV-E 7-65538 */
typedef struct ogs_nas_nssrg_information_s {
uint16_t length;
void *buffer;
} __attribute__ ((packed)) ogs_nas_nssrg_information_t;
/* 9.11.3.83 List of PLMNs to be used in disaster condition
* O TLV 2-n */
typedef struct ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_s {
uint8_t length;
uint8_t spare[255];
} __attribute__ ((packed)) ogs_nas_list_of_plmns_to_be_used_in_disaster_condition_t;
/* 9.11.3.84 Registration wait range
* O TLV 4 */
typedef struct ogs_nas_registration_wait_range_s {
uint8_t length;
uint8_t min_time;
uint8_t max_time;
} __attribute__ ((packed)) ogs_nas_registration_wait_range_t;
/* 9.11.3.85 PLMN identity
* O TLV 5 */
typedef struct ogs_nas_plmn_identity_s {
uint8_t length;
ogs_nas_plmn_id_t nas_plmn_id;
} __attribute__ ((packed)) ogs_nas_plmn_identity_t;
/* 9.11.3.86 Extended CAG information list
* O TLV-E 3-n */
typedef struct ogs_nas_extended_cag_information_list_s {
uint8_t length;
void *buffer;
} __attribute__ ((packed)) ogs_nas_extended_cag_information_list_t;
/* 9.11.3.87 NSAG information
* O TLV-E 10-n */
typedef struct ogs_nas_nsag_information_s {
uint8_t length;
void *buffer;
} __attribute__ ((packed)) ogs_nas_nsag_information_t;
/* 9.11.3.91 Priority indicator
* O TV 1 */
typedef struct ogs_nas_priority_indicator_s {
uint8_t type;
} __attribute__ ((packed)) ogs_nas_priority_indicator_t;
/* 9.11.4.1 5GSM capability
* O TLV 3-15 */
typedef struct ogs_nas_5gsm_capability_s {
@ -748,7 +867,7 @@ typedef struct ogs_nas_integrity_protection_maximum_data_rate_s {
/* 9.11.4.8 Mapped EPS bearer contexts
* O TLV-E 7-65535 */
typedef struct ogs_nas_mapped_eps_bearer_contexts_s {
uint8_t length;
uint16_t length;
void *buffer;
} __attribute__ ((packed)) ogs_nas_mapped_eps_bearer_contexts_t;
@ -916,14 +1035,15 @@ ED3(uint8_t type:4;,
* O TLV 3-15 */
typedef struct ogs_nas_5gsm_network_feature_support_s {
uint8_t length;
ED2(uint8_t spare:7;,
ED2(uint8_t spare1:7;,
uint8_t s1:1;)
uint8_t spare2[12];
} __attribute__ ((packed)) ogs_nas_5gsm_network_feature_support_t;
/* 9.11.4.22 ATSSS container
* O TLV-E 3-65535 */
typedef struct ogs_nas_atsss_container_s {
uint8_t length;
uint16_t length;
void *buffer;
} ogs_nas_atsss_container_t;
@ -949,6 +1069,13 @@ ED3(uint8_t type:4;,
uint8_t value:2;)
} __attribute__ ((packed)) ogs_nas_release_assistance_indication_t;
/* 9.11.4.24 IP header compression configuration
* O TLV 5-257 */
typedef struct ogs_nas_ip_header_compression_configuration_s {
uint8_t length;
uint8_t spare[255];
} __attribute__ ((packed)) ogs_nas_ip_header_compression_configuration_t;
/* 9.11.4.25 DS-TT Ethernet port MAC address
* O TLV 8 */
#define OGS_NAX_MAX_EHTERNET_MAC_ADDRESS_LEN 6
@ -968,16 +1095,45 @@ typedef struct ogs_nas_ue_ds_tt_residence_time_s {
/* 9.11.4.27 Port management information container
* O TLV-E 4-65535 */
typedef struct ogs_nas_port_management_information_container_s {
uint8_t length;
uint16_t length;
void *buffer;
} ogs_nas_port_management_information_container_t;
/* 9.11.3.72 N5GC indication
* O T 1 */
typedef struct ogs_nas_n5gc_indication_s {
uint8_t type;
} ogs_nas_n5gc_indication_t;
/* 9.11.4.28 Ethernet header compression configuration
* O TLV 3 */
typedef struct ogs_nas_ethernet_header_compression_configuration_s {
uint8_t length;
ED2(uint8_t spare:6;,
uint8_t cid_length:2;)
} __attribute__ ((packed)) ogs_nas_ethernet_header_compression_configuration_t;
/* 9.11.4.30 Requested MBS container
* O TLV-E 8-65538 */
typedef struct ogs_nas_requested_mbs_container_s {
uint16_t length;
void *buffer;
} __attribute__ ((packed)) ogs_nas_requested_mbs_container_t;
/* 9.11.4.31 Received MBS container
* O TLV-E 9-65538 */
typedef struct ogs_nas_received_mbs_container_s {
uint8_t length;
void *buffer;
} __attribute__ ((packed)) ogs_nas_received_mbs_container_t;
/* 9.11.4.32 PDU session pair ID
* O TLV 3 */
typedef struct ogs_nas_pdu_session_pair_id_s {
uint8_t length;
uint8_t value;
} __attribute__ ((packed)) ogs_nas_pdu_session_pair_id_t;
/* 9.11.4.33 RSN
* O TLV 3 */
typedef struct ogs_nas_rsn_s {
uint8_t length;
uint8_t value;
} __attribute__ ((packed)) ogs_nas_rsn_t;
#ifdef __cplusplus
}

View File

@ -700,7 +700,7 @@ typedef struct ogs_nas_emergency_number_list_s {
/* 9.9.3.37A Extended emergency number list
* O TLV-E 7-65535 */
typedef struct ogs_nas_extended_emergency_number_list_s {
uint8_t length;
uint16_t length;
void *buffer;
} ogs_nas_extended_emergency_number_list_t;
@ -733,6 +733,28 @@ ED3(uint8_t type:4;,
uint8_t value:3;)
} __attribute__ ((packed)) ogs_nas_ue_radio_capability_id_deletion_indication_t;
/* 9.9.3.65 UE request type
* O TLV 3
* 9.11.3.76 UE request type
* O TLV 3 */
typedef struct ogs_nas_ue_request_type_s {
uint8_t length;
ED2(uint8_t spare:4;,
uint8_t type:4;)
} __attribute__ ((packed)) ogs_nas_ue_request_type_t;
/* 9.9.3.66 Paging restriction
* O TLV 3-5
* 9.11.3.77 Paging restriction
* O TLV 3-35 */
typedef struct ogs_nas_paging_restriction_s {
uint8_t length;
ED2(uint8_t spare1:4;,
uint8_t type:4;)
uint16_t ebi;
uint8_t spare2[30];
} __attribute__ ((packed)) ogs_nas_paging_restriction_t;
/* 9.9.4.2 APN aggregate maximum bit rate
* O TLV 4-8 */
typedef struct ogs_nas_apn_aggregate_maximum_bit_rate_s {
@ -793,6 +815,7 @@ ED2(uint8_t reserved:5;,
uint32_t addr;
} both;
};
uint8_t smf_ipv6_link_local_address[OGS_IPV6_LEN];
} __attribute__ ((packed)) ogs_nas_pdu_address_t;
/* 9.9.4.14 Request type

View File

@ -1,7 +1,7 @@
/*
* The MIT License
*
* Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
* Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
@ -28,8 +28,8 @@
/*******************************************************************************
* This file had been created by nas-message.py script v0.1.0
* Please do not modify this file but regenerate it via script.
* Created on: 2022-01-22 09:24:28.380730 by acetcom
* from 24301-g40.docx
* Created on: 2023-03-02 22:57:51.860294 by acetcom
* from 24301-h90.docx
******************************************************************************/
#include "ogs-nas-eps.h"
@ -375,6 +375,46 @@ int ogs_nas_eps_decode_attach_request(ogs_nas_eps_message_t *message, ogs_pkbuf_
attach_request->presencemask |= OGS_NAS_EPS_ATTACH_REQUEST_N1_UE_NETWORK_CAPABILITY_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_REQUEST_UE_RADIO_CAPABILITY_ID_AVAILABILITY_TYPE:
size = ogs_nas_eps_decode_ue_radio_capability_id_availability(&attach_request->ue_radio_capability_id_availability, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_ue_radio_capability_id_availability() failed");
return size;
}
attach_request->presencemask |= OGS_NAS_EPS_ATTACH_REQUEST_UE_RADIO_CAPABILITY_ID_AVAILABILITY_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_REQUEST_REQUESTED_WUS_ASSISTANCE_INFORMATION_TYPE:
size = ogs_nas_eps_decode_wus_assistance_information(&attach_request->requested_wus_assistance_information, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_wus_assistance_information() failed");
return size;
}
attach_request->presencemask |= OGS_NAS_EPS_ATTACH_REQUEST_REQUESTED_WUS_ASSISTANCE_INFORMATION_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_REQUEST_DRX_PARAMETER_IN_NB_S1_MODE_TYPE:
size = ogs_nas_eps_decode_nb_s1_drx_parameter(&attach_request->drx_parameter_in_nb_s1_mode, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_nb_s1_drx_parameter() failed");
return size;
}
attach_request->presencemask |= OGS_NAS_EPS_ATTACH_REQUEST_DRX_PARAMETER_IN_NB_S1_MODE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_REQUEST_REQUESTED_IMSI_OFFSET_TYPE:
size = ogs_nas_eps_decode_imsi_offset(&attach_request->requested_imsi_offset, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_imsi_offset() failed");
return size;
}
attach_request->presencemask |= OGS_NAS_EPS_ATTACH_REQUEST_REQUESTED_IMSI_OFFSET_PRESENT;
decoded += size;
break;
default:
ogs_warn("Unknown type(0x%x) or not implemented\n", type);
break;
@ -676,6 +716,56 @@ int ogs_nas_eps_decode_attach_accept(ogs_nas_eps_message_t *message, ogs_pkbuf_t
attach_accept->presencemask |= OGS_NAS_EPS_ATTACH_ACCEPT_UE_RADIO_CAPABILITY_ID_DELETION_INDICATION_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_WUS_ASSISTANCE_INFORMATION_TYPE:
size = ogs_nas_eps_decode_wus_assistance_information(&attach_accept->negotiated_wus_assistance_information, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_wus_assistance_information() failed");
return size;
}
attach_accept->presencemask |= OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_WUS_ASSISTANCE_INFORMATION_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_DRX_PARAMETER_IN_NB_S1_MODE_TYPE:
size = ogs_nas_eps_decode_nb_s1_drx_parameter(&attach_accept->negotiated_drx_parameter_in_nb_s1_mode, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_nb_s1_drx_parameter() failed");
return size;
}
attach_accept->presencemask |= OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_DRX_PARAMETER_IN_NB_S1_MODE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_IMSI_OFFSET_TYPE:
size = ogs_nas_eps_decode_imsi_offset(&attach_accept->negotiated_imsi_offset, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_imsi_offset() failed");
return size;
}
attach_accept->presencemask |= OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_IMSI_OFFSET_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&attach_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
attach_accept->presencemask |= OGS_NAS_EPS_ATTACH_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&attach_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
attach_accept->presencemask |= OGS_NAS_EPS_ATTACH_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT;
decoded += size;
break;
default:
ogs_warn("Unknown type(0x%x) or not implemented\n", type);
break;
@ -774,6 +864,36 @@ int ogs_nas_eps_decode_attach_reject(ogs_nas_eps_message_t *message, ogs_pkbuf_t
attach_reject->presencemask |= OGS_NAS_EPS_ATTACH_REJECT_EXTENDED_EMM_CAUSE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_REJECT_LOWER_BOUND_TIMER_VALUE_TYPE:
size = ogs_nas_eps_decode_gprs_timer_3(&attach_reject->lower_bound_timer_value, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_gprs_timer_3() failed");
return size;
}
attach_reject->presencemask |= OGS_NAS_EPS_ATTACH_REJECT_LOWER_BOUND_TIMER_VALUE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&attach_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
attach_reject->presencemask |= OGS_NAS_EPS_ATTACH_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_ATTACH_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&attach_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
attach_reject->presencemask |= OGS_NAS_EPS_ATTACH_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT;
decoded += size;
break;
default:
ogs_warn("Unknown type(0x%x) or not implemented\n", type);
break;
@ -848,6 +968,36 @@ int ogs_nas_eps_decode_detach_request_to_ue(ogs_nas_eps_message_t *message, ogs_
detach_request_to_ue->presencemask |= OGS_NAS_EPS_DETACH_REQUEST_EMM_CAUSE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_DETACH_REQUEST_LOWER_BOUND_TIMER_VALUE_TYPE:
size = ogs_nas_eps_decode_gprs_timer_3(&detach_request_to_ue->lower_bound_timer_value, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_gprs_timer_3() failed");
return size;
}
detach_request_to_ue->presencemask |= OGS_NAS_EPS_DETACH_REQUEST_LOWER_BOUND_TIMER_VALUE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_DETACH_REQUEST_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&detach_request_to_ue->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
detach_request_to_ue->presencemask |= OGS_NAS_EPS_DETACH_REQUEST_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_DETACH_REQUEST_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&detach_request_to_ue->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
detach_request_to_ue->presencemask |= OGS_NAS_EPS_DETACH_REQUEST_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT;
decoded += size;
break;
default:
ogs_warn("Unknown type(0x%x) or not implemented\n", type);
break;
@ -1199,6 +1349,66 @@ int ogs_nas_eps_decode_tracking_area_update_request(ogs_nas_eps_message_t *messa
tracking_area_update_request->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_N1_UE_NETWORK_CAPABILITY_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_UE_RADIO_CAPABILITY_ID_AVAILABILITY_TYPE:
size = ogs_nas_eps_decode_ue_radio_capability_id_availability(&tracking_area_update_request->ue_radio_capability_id_availability, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_ue_radio_capability_id_availability() failed");
return size;
}
tracking_area_update_request->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_UE_RADIO_CAPABILITY_ID_AVAILABILITY_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_REQUESTED_WUS_ASSISTANCE_INFORMATION_TYPE:
size = ogs_nas_eps_decode_wus_assistance_information(&tracking_area_update_request->requested_wus_assistance_information, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_wus_assistance_information() failed");
return size;
}
tracking_area_update_request->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_REQUESTED_WUS_ASSISTANCE_INFORMATION_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_DRX_PARAMETER_IN_NB_S1_MODE_TYPE:
size = ogs_nas_eps_decode_nb_s1_drx_parameter(&tracking_area_update_request->drx_parameter_in_nb_s1_mode, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_nb_s1_drx_parameter() failed");
return size;
}
tracking_area_update_request->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_DRX_PARAMETER_IN_NB_S1_MODE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_REQUESTED_IMSI_OFFSET_TYPE:
size = ogs_nas_eps_decode_imsi_offset(&tracking_area_update_request->requested_imsi_offset, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_imsi_offset() failed");
return size;
}
tracking_area_update_request->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_REQUESTED_IMSI_OFFSET_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_UE_REQUEST_TYPE_TYPE:
size = ogs_nas_eps_decode_ue_request_type(&tracking_area_update_request->ue_request_type, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_ue_request_type() failed");
return size;
}
tracking_area_update_request->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_UE_REQUEST_TYPE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_PAGING_RESTRICTION_TYPE:
size = ogs_nas_eps_decode_paging_restriction(&tracking_area_update_request->paging_restriction, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_paging_restriction() failed");
return size;
}
tracking_area_update_request->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_PAGING_RESTRICTION_PRESENT;
decoded += size;
break;
default:
ogs_warn("Unknown type(0x%x) or not implemented\n", type);
break;
@ -1516,6 +1726,66 @@ int ogs_nas_eps_decode_tracking_area_update_accept(ogs_nas_eps_message_t *messag
tracking_area_update_accept->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_UE_RADIO_CAPABILITY_ID_DELETION_INDICATION_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_WUS_ASSISTANCE_INFORMATION_TYPE:
size = ogs_nas_eps_decode_wus_assistance_information(&tracking_area_update_accept->negotiated_wus_assistance_information, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_wus_assistance_information() failed");
return size;
}
tracking_area_update_accept->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_WUS_ASSISTANCE_INFORMATION_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_DRX_PARAMETER_IN_NB_S1_MODE_TYPE:
size = ogs_nas_eps_decode_nb_s1_drx_parameter(&tracking_area_update_accept->negotiated_drx_parameter_in_nb_s1_mode, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_nb_s1_drx_parameter() failed");
return size;
}
tracking_area_update_accept->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_DRX_PARAMETER_IN_NB_S1_MODE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_IMSI_OFFSET_TYPE:
size = ogs_nas_eps_decode_imsi_offset(&tracking_area_update_accept->negotiated_imsi_offset, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_imsi_offset() failed");
return size;
}
tracking_area_update_accept->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_IMSI_OFFSET_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_EPS_ADDITIONAL_REQUEST_RESULT_TYPE:
size = ogs_nas_eps_decode_eps_additional_request_result(&tracking_area_update_accept->eps_additional_request_result, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_eps_additional_request_result() failed");
return size;
}
tracking_area_update_accept->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_EPS_ADDITIONAL_REQUEST_RESULT_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&tracking_area_update_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
tracking_area_update_accept->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&tracking_area_update_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
tracking_area_update_accept->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT;
decoded += size;
break;
default:
ogs_warn("Unknown type(0x%x) or not implemented\n", type);
break;
@ -1575,6 +1845,36 @@ int ogs_nas_eps_decode_tracking_area_update_reject(ogs_nas_eps_message_t *messag
tracking_area_update_reject->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_EXTENDED_EMM_CAUSE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_LOWER_BOUND_TIMER_VALUE_TYPE:
size = ogs_nas_eps_decode_gprs_timer_3(&tracking_area_update_reject->lower_bound_timer_value, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_gprs_timer_3() failed");
return size;
}
tracking_area_update_reject->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_LOWER_BOUND_TIMER_VALUE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&tracking_area_update_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
tracking_area_update_reject->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&tracking_area_update_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
tracking_area_update_reject->presencemask |= OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT;
decoded += size;
break;
default:
ogs_warn("Unknown type(0x%x) or not implemented\n", type);
break;
@ -1654,6 +1954,26 @@ int ogs_nas_eps_decode_extended_service_request(ogs_nas_eps_message_t *message,
extended_service_request->presencemask |= OGS_NAS_EPS_EXTENDED_SERVICE_REQUEST_DEVICE_PROPERTIES_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_EXTENDED_SERVICE_REQUEST_UE_REQUEST_TYPE_TYPE:
size = ogs_nas_eps_decode_ue_request_type(&extended_service_request->ue_request_type, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_ue_request_type() failed");
return size;
}
extended_service_request->presencemask |= OGS_NAS_EPS_EXTENDED_SERVICE_REQUEST_UE_REQUEST_TYPE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_EXTENDED_SERVICE_REQUEST_PAGING_RESTRICTION_TYPE:
size = ogs_nas_eps_decode_paging_restriction(&extended_service_request->paging_restriction, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_paging_restriction() failed");
return size;
}
extended_service_request->presencemask |= OGS_NAS_EPS_EXTENDED_SERVICE_REQUEST_PAGING_RESTRICTION_PRESENT;
decoded += size;
break;
default:
ogs_warn("Unknown type(0x%x) or not implemented\n", type);
break;
@ -1718,6 +2038,16 @@ int ogs_nas_eps_decode_service_reject(ogs_nas_eps_message_t *message, ogs_pkbuf_
decoded += size;
switch (type) {
case OGS_NAS_EPS_SERVICE_REJECT_T3442_VALUE_TYPE:
size = ogs_nas_eps_decode_gprs_timer(&service_reject->t3442_value, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_gprs_timer() failed");
return size;
}
service_reject->presencemask |= OGS_NAS_EPS_SERVICE_REJECT_T3442_VALUE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_SERVICE_REJECT_T3346_VALUE_TYPE:
size = ogs_nas_eps_decode_gprs_timer_2(&service_reject->t3346_value, pkbuf);
if (size < 0) {
@ -1738,6 +2068,36 @@ int ogs_nas_eps_decode_service_reject(ogs_nas_eps_message_t *message, ogs_pkbuf_
service_reject->presencemask |= OGS_NAS_EPS_SERVICE_REJECT_T3448_VALUE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_SERVICE_REJECT_LOWER_BOUND_TIMER_VALUE_TYPE:
size = ogs_nas_eps_decode_gprs_timer_3(&service_reject->lower_bound_timer_value, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_gprs_timer_3() failed");
return size;
}
service_reject->presencemask |= OGS_NAS_EPS_SERVICE_REJECT_LOWER_BOUND_TIMER_VALUE_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&service_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
service_reject->presencemask |= OGS_NAS_EPS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT;
decoded += size;
break;
case OGS_NAS_EPS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE:
size = ogs_nas_eps_decode_tracking_area_identity_list(&service_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_tracking_area_identity_list() failed");
return size;
}
service_reject->presencemask |= OGS_NAS_EPS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT;
decoded += size;
break;
default:
ogs_warn("Unknown type(0x%x) or not implemented\n", type);
break;
@ -2062,8 +2422,6 @@ int ogs_nas_eps_decode_security_mode_command(ogs_nas_eps_message_t *message, ogs
decoded += size;
break;
case OGS_NAS_EPS_SECURITY_MODE_COMMAND_UE_RADIO_CAPABILITY_ID_REQUEST_TYPE:
decoded--;
ogs_assert(ogs_pkbuf_push(pkbuf, 1));
size = ogs_nas_eps_decode_ue_radio_capability_id_request(&security_mode_command->ue_radio_capability_id_request, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_eps_decode_ue_radio_capability_id_request() failed");

View File

@ -1,7 +1,7 @@
/*
* The MIT License
*
* Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
* Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
@ -28,8 +28,8 @@
/*******************************************************************************
* This file had been created by nas-message.py script v0.1.0
* Please do not modify this file but regenerate it via script.
* Created on: 2022-01-22 09:24:28.390156 by acetcom
* from 24301-g40.docx
* Created on: 2023-03-02 22:57:51.871237 by acetcom
* from 24301-h90.docx
******************************************************************************/
#include "ogs-nas-eps.h"
@ -327,6 +327,46 @@ int ogs_nas_eps_encode_attach_request(ogs_pkbuf_t *pkbuf, ogs_nas_eps_message_t
encoded += size;
}
if (attach_request->presencemask & OGS_NAS_EPS_ATTACH_REQUEST_UE_RADIO_CAPABILITY_ID_AVAILABILITY_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_REQUEST_UE_RADIO_CAPABILITY_ID_AVAILABILITY_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_ue_radio_capability_id_availability(pkbuf, &attach_request->ue_radio_capability_id_availability);
ogs_assert(size >= 0);
encoded += size;
}
if (attach_request->presencemask & OGS_NAS_EPS_ATTACH_REQUEST_REQUESTED_WUS_ASSISTANCE_INFORMATION_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_REQUEST_REQUESTED_WUS_ASSISTANCE_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_wus_assistance_information(pkbuf, &attach_request->requested_wus_assistance_information);
ogs_assert(size >= 0);
encoded += size;
}
if (attach_request->presencemask & OGS_NAS_EPS_ATTACH_REQUEST_DRX_PARAMETER_IN_NB_S1_MODE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_REQUEST_DRX_PARAMETER_IN_NB_S1_MODE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_nb_s1_drx_parameter(pkbuf, &attach_request->drx_parameter_in_nb_s1_mode);
ogs_assert(size >= 0);
encoded += size;
}
if (attach_request->presencemask & OGS_NAS_EPS_ATTACH_REQUEST_REQUESTED_IMSI_OFFSET_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_REQUEST_REQUESTED_IMSI_OFFSET_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_imsi_offset(pkbuf, &attach_request->requested_imsi_offset);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -574,6 +614,56 @@ int ogs_nas_eps_encode_attach_accept(ogs_pkbuf_t *pkbuf, ogs_nas_eps_message_t *
encoded += size;
}
if (attach_accept->presencemask & OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_WUS_ASSISTANCE_INFORMATION_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_WUS_ASSISTANCE_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_wus_assistance_information(pkbuf, &attach_accept->negotiated_wus_assistance_information);
ogs_assert(size >= 0);
encoded += size;
}
if (attach_accept->presencemask & OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_DRX_PARAMETER_IN_NB_S1_MODE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_DRX_PARAMETER_IN_NB_S1_MODE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_nb_s1_drx_parameter(pkbuf, &attach_accept->negotiated_drx_parameter_in_nb_s1_mode);
ogs_assert(size >= 0);
encoded += size;
}
if (attach_accept->presencemask & OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_IMSI_OFFSET_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_ACCEPT_NEGOTIATED_IMSI_OFFSET_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_imsi_offset(pkbuf, &attach_accept->negotiated_imsi_offset);
ogs_assert(size >= 0);
encoded += size;
}
if (attach_accept->presencemask & OGS_NAS_EPS_ATTACH_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &attach_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (attach_accept->presencemask & OGS_NAS_EPS_ATTACH_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &attach_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -642,6 +732,36 @@ int ogs_nas_eps_encode_attach_reject(ogs_pkbuf_t *pkbuf, ogs_nas_eps_message_t *
encoded += size;
}
if (attach_reject->presencemask & OGS_NAS_EPS_ATTACH_REJECT_LOWER_BOUND_TIMER_VALUE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_REJECT_LOWER_BOUND_TIMER_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_gprs_timer_3(pkbuf, &attach_reject->lower_bound_timer_value);
ogs_assert(size >= 0);
encoded += size;
}
if (attach_reject->presencemask & OGS_NAS_EPS_ATTACH_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &attach_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (attach_reject->presencemask & OGS_NAS_EPS_ATTACH_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_ATTACH_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &attach_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -686,6 +806,36 @@ int ogs_nas_eps_encode_detach_request_to_ue(ogs_pkbuf_t *pkbuf, ogs_nas_eps_mess
encoded += size;
}
if (detach_request_to_ue->presencemask & OGS_NAS_EPS_DETACH_REQUEST_LOWER_BOUND_TIMER_VALUE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_DETACH_REQUEST_LOWER_BOUND_TIMER_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_gprs_timer_3(pkbuf, &detach_request_to_ue->lower_bound_timer_value);
ogs_assert(size >= 0);
encoded += size;
}
if (detach_request_to_ue->presencemask & OGS_NAS_EPS_DETACH_REQUEST_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_DETACH_REQUEST_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &detach_request_to_ue->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (detach_request_to_ue->presencemask & OGS_NAS_EPS_DETACH_REQUEST_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_DETACH_REQUEST_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &detach_request_to_ue->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -979,6 +1129,66 @@ int ogs_nas_eps_encode_tracking_area_update_request(ogs_pkbuf_t *pkbuf, ogs_nas_
encoded += size;
}
if (tracking_area_update_request->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_UE_RADIO_CAPABILITY_ID_AVAILABILITY_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_UE_RADIO_CAPABILITY_ID_AVAILABILITY_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_ue_radio_capability_id_availability(pkbuf, &tracking_area_update_request->ue_radio_capability_id_availability);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_request->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_REQUESTED_WUS_ASSISTANCE_INFORMATION_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_REQUESTED_WUS_ASSISTANCE_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_wus_assistance_information(pkbuf, &tracking_area_update_request->requested_wus_assistance_information);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_request->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_DRX_PARAMETER_IN_NB_S1_MODE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_DRX_PARAMETER_IN_NB_S1_MODE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_nb_s1_drx_parameter(pkbuf, &tracking_area_update_request->drx_parameter_in_nb_s1_mode);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_request->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_REQUESTED_IMSI_OFFSET_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_REQUESTED_IMSI_OFFSET_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_imsi_offset(pkbuf, &tracking_area_update_request->requested_imsi_offset);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_request->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_UE_REQUEST_TYPE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_UE_REQUEST_TYPE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_ue_request_type(pkbuf, &tracking_area_update_request->ue_request_type);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_request->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_PAGING_RESTRICTION_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_PAGING_RESTRICTION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_paging_restriction(pkbuf, &tracking_area_update_request->paging_restriction);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -1254,6 +1464,66 @@ int ogs_nas_eps_encode_tracking_area_update_accept(ogs_pkbuf_t *pkbuf, ogs_nas_e
encoded += size;
}
if (tracking_area_update_accept->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_WUS_ASSISTANCE_INFORMATION_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_WUS_ASSISTANCE_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_wus_assistance_information(pkbuf, &tracking_area_update_accept->negotiated_wus_assistance_information);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_accept->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_DRX_PARAMETER_IN_NB_S1_MODE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_DRX_PARAMETER_IN_NB_S1_MODE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_nb_s1_drx_parameter(pkbuf, &tracking_area_update_accept->negotiated_drx_parameter_in_nb_s1_mode);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_accept->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_IMSI_OFFSET_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_NEGOTIATED_IMSI_OFFSET_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_imsi_offset(pkbuf, &tracking_area_update_accept->negotiated_imsi_offset);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_accept->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_EPS_ADDITIONAL_REQUEST_RESULT_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_EPS_ADDITIONAL_REQUEST_RESULT_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_eps_additional_request_result(pkbuf, &tracking_area_update_accept->eps_additional_request_result);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_accept->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &tracking_area_update_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_accept->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_ACCEPT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &tracking_area_update_accept->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -1287,6 +1557,36 @@ int ogs_nas_eps_encode_tracking_area_update_reject(ogs_pkbuf_t *pkbuf, ogs_nas_e
encoded += size;
}
if (tracking_area_update_reject->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_LOWER_BOUND_TIMER_VALUE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_LOWER_BOUND_TIMER_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_gprs_timer_3(pkbuf, &tracking_area_update_reject->lower_bound_timer_value);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_reject->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &tracking_area_update_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (tracking_area_update_reject->presencemask & OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_TRACKING_AREA_UPDATE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &tracking_area_update_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -1332,6 +1632,26 @@ int ogs_nas_eps_encode_extended_service_request(ogs_pkbuf_t *pkbuf, ogs_nas_eps_
encoded += size;
}
if (extended_service_request->presencemask & OGS_NAS_EPS_EXTENDED_SERVICE_REQUEST_UE_REQUEST_TYPE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_EXTENDED_SERVICE_REQUEST_UE_REQUEST_TYPE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_ue_request_type(pkbuf, &extended_service_request->ue_request_type);
ogs_assert(size >= 0);
encoded += size;
}
if (extended_service_request->presencemask & OGS_NAS_EPS_EXTENDED_SERVICE_REQUEST_PAGING_RESTRICTION_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_EXTENDED_SERVICE_REQUEST_PAGING_RESTRICTION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_paging_restriction(pkbuf, &extended_service_request->paging_restriction);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -1366,6 +1686,16 @@ int ogs_nas_eps_encode_service_reject(ogs_pkbuf_t *pkbuf, ogs_nas_eps_message_t
ogs_assert(size >= 0);
encoded += size;
if (service_reject->presencemask & OGS_NAS_EPS_SERVICE_REJECT_T3442_VALUE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_SERVICE_REJECT_T3442_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_gprs_timer(pkbuf, &service_reject->t3442_value);
ogs_assert(size >= 0);
encoded += size;
}
if (service_reject->presencemask & OGS_NAS_EPS_SERVICE_REJECT_T3346_VALUE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_SERVICE_REJECT_T3346_VALUE_TYPE);
ogs_assert(size >= 0);
@ -1386,6 +1716,36 @@ int ogs_nas_eps_encode_service_reject(ogs_pkbuf_t *pkbuf, ogs_nas_eps_message_t
encoded += size;
}
if (service_reject->presencemask & OGS_NAS_EPS_SERVICE_REJECT_LOWER_BOUND_TIMER_VALUE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_SERVICE_REJECT_LOWER_BOUND_TIMER_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_gprs_timer_3(pkbuf, &service_reject->lower_bound_timer_value);
ogs_assert(size >= 0);
encoded += size;
}
if (service_reject->presencemask & OGS_NAS_EPS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FOR_ROAMING_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &service_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_for_roaming);
ogs_assert(size >= 0);
encoded += size;
}
if (service_reject->presencemask & OGS_NAS_EPS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_PRESENT) {
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_SERVICE_REJECT_FORBIDDEN_TAI_FOR_THE_LIST_OF_FORBIDDEN_TRACKING_AREAS_FORREGIONAL_PROVISION_OF_SERVICE_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_tracking_area_identity_list(pkbuf, &service_reject->forbidden_tai_for_the_list_of_forbidden_tracking_areas_forregional_provision_of_service);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
@ -1604,7 +1964,9 @@ int ogs_nas_eps_encode_security_mode_command(ogs_pkbuf_t *pkbuf, ogs_nas_eps_mes
}
if (security_mode_command->presencemask & OGS_NAS_EPS_SECURITY_MODE_COMMAND_UE_RADIO_CAPABILITY_ID_REQUEST_PRESENT) {
security_mode_command->ue_radio_capability_id_request.type = (OGS_NAS_EPS_SECURITY_MODE_COMMAND_UE_RADIO_CAPABILITY_ID_REQUEST_TYPE >> 4);
size = ogs_nas_eps_encode_optional_type(pkbuf, OGS_NAS_EPS_SECURITY_MODE_COMMAND_UE_RADIO_CAPABILITY_ID_REQUEST_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_eps_encode_ue_radio_capability_id_request(pkbuf, &security_mode_command->ue_radio_capability_id_request);
ogs_assert(size >= 0);

View File

@ -1,7 +1,7 @@
/*
* The MIT License
*
* Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
* Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
@ -28,8 +28,8 @@
/*******************************************************************************
* This file had been created by nas-message.py script v0.1.0
* Please do not modify this file but regenerate it via script.
* Created on: 2022-01-22 09:24:28.368722 by acetcom
* from 24301-g40.docx
* Created on: 2023-03-02 22:57:51.846548 by acetcom
* from 24301-h90.docx
******************************************************************************/
#include "ogs-nas-eps.h"
@ -2405,7 +2405,7 @@ int ogs_nas_eps_encode_ciphering_key_sequence_number(ogs_pkbuf_t *pkbuf, ogs_nas
}
/* 9.9.3.5 CSFB response
* O TV 1 */
* C TV 1 */
int ogs_nas_eps_decode_csfb_response(ogs_nas_csfb_response_t *csfb_response, ogs_pkbuf_t *pkbuf)
{
int size = sizeof(ogs_nas_csfb_response_t);
@ -2750,17 +2750,61 @@ int ogs_nas_eps_encode_n1_ue_network_capability(ogs_pkbuf_t *pkbuf, ogs_nas_n1_u
return size;
}
/* 9.9.3.59 UE radio capability ID request
* O TV 1 */
int ogs_nas_eps_decode_ue_radio_capability_id_request(ogs_nas_ue_radio_capability_id_request_t *ue_radio_capability_id_request, ogs_pkbuf_t *pkbuf)
/* 9.9.3.58 UE radio capability ID availability
* O TLV 3 */
int ogs_nas_eps_decode_ue_radio_capability_id_availability(ogs_nas_ue_radio_capability_id_availability_t *ue_radio_capability_id_availability, ogs_pkbuf_t *pkbuf)
{
int size = sizeof(ogs_nas_ue_radio_capability_id_request_t);
int size = 0;
ogs_nas_ue_radio_capability_id_availability_t *source = (ogs_nas_ue_radio_capability_id_availability_t *)pkbuf->data;
ue_radio_capability_id_availability->length = source->length;
size = ue_radio_capability_id_availability->length + sizeof(ue_radio_capability_id_availability->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*ue_radio_capability_id_availability) < size) return -1;
memcpy(ue_radio_capability_id_availability, pkbuf->data - size, size);
ogs_trace(" UE_RADIO_CAPABILITY_ID_AVAILABILITY - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_eps_encode_ue_radio_capability_id_availability(ogs_pkbuf_t *pkbuf, ogs_nas_ue_radio_capability_id_availability_t *ue_radio_capability_id_availability)
{
int size = ue_radio_capability_id_availability->length + sizeof(ue_radio_capability_id_availability->length);
ogs_nas_ue_radio_capability_id_availability_t target;
memcpy(&target, ue_radio_capability_id_availability, sizeof(ogs_nas_ue_radio_capability_id_availability_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" UE_RADIO_CAPABILITY_ID_AVAILABILITY - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.9.3.59 UE radio capability ID request
* O TLV 3 */
int ogs_nas_eps_decode_ue_radio_capability_id_request(ogs_nas_ue_radio_capability_id_request_t *ue_radio_capability_id_request, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_ue_radio_capability_id_request_t *source = (ogs_nas_ue_radio_capability_id_request_t *)pkbuf->data;
ue_radio_capability_id_request->length = source->length;
size = ue_radio_capability_id_request->length + sizeof(ue_radio_capability_id_request->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*ue_radio_capability_id_request) < size) return -1;
memcpy(ue_radio_capability_id_request, pkbuf->data - size, size);
ogs_trace(" UE_RADIO_CAPABILITY_ID_REQUEST - ");
@ -2771,10 +2815,12 @@ int ogs_nas_eps_decode_ue_radio_capability_id_request(ogs_nas_ue_radio_capabilit
int ogs_nas_eps_encode_ue_radio_capability_id_request(ogs_pkbuf_t *pkbuf, ogs_nas_ue_radio_capability_id_request_t *ue_radio_capability_id_request)
{
int size = sizeof(ogs_nas_ue_radio_capability_id_request_t);
int size = ue_radio_capability_id_request->length + sizeof(ue_radio_capability_id_request->length);
ogs_nas_ue_radio_capability_id_request_t target;
memcpy(&target, ue_radio_capability_id_request, sizeof(ogs_nas_ue_radio_capability_id_request_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, ue_radio_capability_id_request, size);
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" UE_RADIO_CAPABILITY_ID_REQUEST - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
@ -2892,6 +2938,240 @@ int ogs_nas_eps_encode_ue_radio_capability_id_deletion_indication(ogs_pkbuf_t *p
return size;
}
/* 9.9.3.62 WUS assistance information
* O TLV 3-n */
int ogs_nas_eps_decode_wus_assistance_information(ogs_nas_wus_assistance_information_t *wus_assistance_information, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_wus_assistance_information_t *source = (ogs_nas_wus_assistance_information_t *)pkbuf->data;
wus_assistance_information->length = source->length;
size = wus_assistance_information->length + sizeof(wus_assistance_information->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*wus_assistance_information) < size) return -1;
memcpy(wus_assistance_information, pkbuf->data - size, size);
ogs_trace(" WUS_ASSISTANCE_INFORMATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_eps_encode_wus_assistance_information(ogs_pkbuf_t *pkbuf, ogs_nas_wus_assistance_information_t *wus_assistance_information)
{
int size = wus_assistance_information->length + sizeof(wus_assistance_information->length);
ogs_nas_wus_assistance_information_t target;
memcpy(&target, wus_assistance_information, sizeof(ogs_nas_wus_assistance_information_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" WUS_ASSISTANCE_INFORMATION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.9.3.63 NB-S1 DRX parameter
* O TLV 3 */
int ogs_nas_eps_decode_nb_s1_drx_parameter(ogs_nas_nb_s1_drx_parameter_t *nb_s1_drx_parameter, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_nb_s1_drx_parameter_t *source = (ogs_nas_nb_s1_drx_parameter_t *)pkbuf->data;
nb_s1_drx_parameter->length = source->length;
size = nb_s1_drx_parameter->length + sizeof(nb_s1_drx_parameter->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*nb_s1_drx_parameter) < size) return -1;
memcpy(nb_s1_drx_parameter, pkbuf->data - size, size);
ogs_trace(" NB_S1_DRX_PARAMETER - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_eps_encode_nb_s1_drx_parameter(ogs_pkbuf_t *pkbuf, ogs_nas_nb_s1_drx_parameter_t *nb_s1_drx_parameter)
{
int size = nb_s1_drx_parameter->length + sizeof(nb_s1_drx_parameter->length);
ogs_nas_nb_s1_drx_parameter_t target;
memcpy(&target, nb_s1_drx_parameter, sizeof(ogs_nas_nb_s1_drx_parameter_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" NB_S1_DRX_PARAMETER - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.9.3.64 IMSI offset
* O TLV 4 */
int ogs_nas_eps_decode_imsi_offset(ogs_nas_imsi_offset_t *imsi_offset, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_imsi_offset_t *source = (ogs_nas_imsi_offset_t *)pkbuf->data;
imsi_offset->length = source->length;
size = imsi_offset->length + sizeof(imsi_offset->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*imsi_offset) < size) return -1;
memcpy(imsi_offset, pkbuf->data - size, size);
ogs_trace(" IMSI_OFFSET - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_eps_encode_imsi_offset(ogs_pkbuf_t *pkbuf, ogs_nas_imsi_offset_t *imsi_offset)
{
int size = imsi_offset->length + sizeof(imsi_offset->length);
ogs_nas_imsi_offset_t target;
memcpy(&target, imsi_offset, sizeof(ogs_nas_imsi_offset_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" IMSI_OFFSET - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.9.3.65 UE request type
* O TLV 3 */
int ogs_nas_eps_decode_ue_request_type(ogs_nas_ue_request_type_t *ue_request_type, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_ue_request_type_t *source = (ogs_nas_ue_request_type_t *)pkbuf->data;
ue_request_type->length = source->length;
size = ue_request_type->length + sizeof(ue_request_type->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*ue_request_type) < size) return -1;
memcpy(ue_request_type, pkbuf->data - size, size);
ogs_trace(" UE_REQUEST_TYPE - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_eps_encode_ue_request_type(ogs_pkbuf_t *pkbuf, ogs_nas_ue_request_type_t *ue_request_type)
{
int size = ue_request_type->length + sizeof(ue_request_type->length);
ogs_nas_ue_request_type_t target;
memcpy(&target, ue_request_type, sizeof(ogs_nas_ue_request_type_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" UE_REQUEST_TYPE - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.9.3.66 Paging restriction
* O TLV 3-5 */
int ogs_nas_eps_decode_paging_restriction(ogs_nas_paging_restriction_t *paging_restriction, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_paging_restriction_t *source = (ogs_nas_paging_restriction_t *)pkbuf->data;
paging_restriction->length = source->length;
size = paging_restriction->length + sizeof(paging_restriction->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*paging_restriction) < size) return -1;
memcpy(paging_restriction, pkbuf->data - size, size);
ogs_trace(" PAGING_RESTRICTION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_eps_encode_paging_restriction(ogs_pkbuf_t *pkbuf, ogs_nas_paging_restriction_t *paging_restriction)
{
int size = paging_restriction->length + sizeof(paging_restriction->length);
ogs_nas_paging_restriction_t target;
memcpy(&target, paging_restriction, sizeof(ogs_nas_paging_restriction_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" PAGING_RESTRICTION - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.9.3.67 EPS additional request result
* O TLV 3 */
int ogs_nas_eps_decode_eps_additional_request_result(ogs_nas_eps_additional_request_result_t *eps_additional_request_result, ogs_pkbuf_t *pkbuf)
{
int size = 0;
ogs_nas_eps_additional_request_result_t *source = (ogs_nas_eps_additional_request_result_t *)pkbuf->data;
eps_additional_request_result->length = source->length;
size = eps_additional_request_result->length + sizeof(eps_additional_request_result->length);
if (ogs_pkbuf_pull(pkbuf, size) == NULL) {
ogs_error("ogs_pkbuf_pull() failed [size:%d]", (int)size);
return -1;
}
if (sizeof(*eps_additional_request_result) < size) return -1;
memcpy(eps_additional_request_result, pkbuf->data - size, size);
ogs_trace(" EPS_ADDITIONAL_REQUEST_RESULT - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_eps_encode_eps_additional_request_result(ogs_pkbuf_t *pkbuf, ogs_nas_eps_additional_request_result_t *eps_additional_request_result)
{
int size = eps_additional_request_result->length + sizeof(eps_additional_request_result->length);
ogs_nas_eps_additional_request_result_t target;
memcpy(&target, eps_additional_request_result, sizeof(ogs_nas_eps_additional_request_result_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" EPS_ADDITIONAL_REQUEST_RESULT - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.9.3.7 Detach type
* M V 1/2 */
int ogs_nas_eps_decode_detach_type(ogs_nas_detach_type_t *detach_type, ogs_pkbuf_t *pkbuf)

View File

@ -1,7 +1,7 @@
/*
* The MIT License
*
* Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
* Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
@ -28,8 +28,8 @@
/*******************************************************************************
* This file had been created by nas-message.py script v0.1.0
* Please do not modify this file but regenerate it via script.
* Created on: 2022-01-22 09:24:28.366939 by acetcom
* from 24301-g40.docx
* Created on: 2023-03-02 22:57:51.844510 by acetcom
* from 24301-h90.docx
******************************************************************************/
#if !defined(OGS_NAS_INSIDE) && !defined(OGS_NAS_COMPILATION)
@ -118,10 +118,17 @@ int ogs_nas_eps_decode_ue_status(ogs_nas_ue_status_t *ue_status, ogs_pkbuf_t *pk
int ogs_nas_eps_decode_additional_information_requested(ogs_nas_additional_information_requested_t *additional_information_requested, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_ciphering_key_data(ogs_nas_ciphering_key_data_t *ciphering_key_data, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_n1_ue_network_capability(ogs_nas_n1_ue_network_capability_t *n1_ue_network_capability, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_ue_radio_capability_id_availability(ogs_nas_ue_radio_capability_id_availability_t *ue_radio_capability_id_availability, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_ue_radio_capability_id_request(ogs_nas_ue_radio_capability_id_request_t *ue_radio_capability_id_request, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_daylight_saving_time(ogs_nas_daylight_saving_time_t *daylight_saving_time, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_ue_radio_capability_id(ogs_nas_ue_radio_capability_id_t *ue_radio_capability_id, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_ue_radio_capability_id_deletion_indication(ogs_nas_ue_radio_capability_id_deletion_indication_t *ue_radio_capability_id_deletion_indication, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_wus_assistance_information(ogs_nas_wus_assistance_information_t *wus_assistance_information, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_nb_s1_drx_parameter(ogs_nas_nb_s1_drx_parameter_t *nb_s1_drx_parameter, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_imsi_offset(ogs_nas_imsi_offset_t *imsi_offset, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_ue_request_type(ogs_nas_ue_request_type_t *ue_request_type, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_paging_restriction(ogs_nas_paging_restriction_t *paging_restriction, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_eps_additional_request_result(ogs_nas_eps_additional_request_result_t *eps_additional_request_result, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_detach_type(ogs_nas_detach_type_t *detach_type, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_drx_parameter(ogs_nas_drx_parameter_t *drx_parameter, ogs_pkbuf_t *pkbuf);
int ogs_nas_eps_decode_emm_cause(ogs_nas_emm_cause_t *emm_cause, ogs_pkbuf_t *pkbuf);
@ -226,10 +233,17 @@ int ogs_nas_eps_encode_ue_status(ogs_pkbuf_t *pkbuf, ogs_nas_ue_status_t *ue_sta
int ogs_nas_eps_encode_additional_information_requested(ogs_pkbuf_t *pkbuf, ogs_nas_additional_information_requested_t *additional_information_requested);
int ogs_nas_eps_encode_ciphering_key_data(ogs_pkbuf_t *pkbuf, ogs_nas_ciphering_key_data_t *ciphering_key_data);
int ogs_nas_eps_encode_n1_ue_network_capability(ogs_pkbuf_t *pkbuf, ogs_nas_n1_ue_network_capability_t *n1_ue_network_capability);
int ogs_nas_eps_encode_ue_radio_capability_id_availability(ogs_pkbuf_t *pkbuf, ogs_nas_ue_radio_capability_id_availability_t *ue_radio_capability_id_availability);
int ogs_nas_eps_encode_ue_radio_capability_id_request(ogs_pkbuf_t *pkbuf, ogs_nas_ue_radio_capability_id_request_t *ue_radio_capability_id_request);
int ogs_nas_eps_encode_daylight_saving_time(ogs_pkbuf_t *pkbuf, ogs_nas_daylight_saving_time_t *daylight_saving_time);
int ogs_nas_eps_encode_ue_radio_capability_id(ogs_pkbuf_t *pkbuf, ogs_nas_ue_radio_capability_id_t *ue_radio_capability_id);
int ogs_nas_eps_encode_ue_radio_capability_id_deletion_indication(ogs_pkbuf_t *pkbuf, ogs_nas_ue_radio_capability_id_deletion_indication_t *ue_radio_capability_id_deletion_indication);
int ogs_nas_eps_encode_wus_assistance_information(ogs_pkbuf_t *pkbuf, ogs_nas_wus_assistance_information_t *wus_assistance_information);
int ogs_nas_eps_encode_nb_s1_drx_parameter(ogs_pkbuf_t *pkbuf, ogs_nas_nb_s1_drx_parameter_t *nb_s1_drx_parameter);
int ogs_nas_eps_encode_imsi_offset(ogs_pkbuf_t *pkbuf, ogs_nas_imsi_offset_t *imsi_offset);
int ogs_nas_eps_encode_ue_request_type(ogs_pkbuf_t *pkbuf, ogs_nas_ue_request_type_t *ue_request_type);
int ogs_nas_eps_encode_paging_restriction(ogs_pkbuf_t *pkbuf, ogs_nas_paging_restriction_t *paging_restriction);
int ogs_nas_eps_encode_eps_additional_request_result(ogs_pkbuf_t *pkbuf, ogs_nas_eps_additional_request_result_t *eps_additional_request_result);
int ogs_nas_eps_encode_detach_type(ogs_pkbuf_t *pkbuf, ogs_nas_detach_type_t *detach_type);
int ogs_nas_eps_encode_drx_parameter(ogs_pkbuf_t *pkbuf, ogs_nas_drx_parameter_t *drx_parameter);
int ogs_nas_eps_encode_emm_cause(ogs_pkbuf_t *pkbuf, ogs_nas_emm_cause_t *emm_cause);

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -4,9 +4,13 @@ user@host ~/Documents/git/open5gs/lib/nas/eps/support$ \
sudo pip3 install python-docx
* Change the format of standard specification
from 24301-d80.doc to 24301-d80.docx
from 24301-h90.doc to 24301-h90.docx
using Microsoft Office 2007+
* Adjust table cell in 24301-h90.docx
* Generate Message support files
user@host ~/Documents/git/open5gs/lib/nas/eps/support$ \
python3 nas-message.py -f 24301-g40.docx -o ..
python3 nas-message.py -f 24301-h90.docx -o ..
* Add new structure to the types.h

View File

@ -26,4 +26,8 @@ ies.append({ "iei" : "6F", "value" : "UE additional security capability", "type"
ies.append({ "iei" : "6D", "value" : "UE status", "type" : "UE status", "reference" : "9.9.3.54", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "17", "value" : "Additional information requested", "type" : "Additional information requested", "reference" : "9.9.3.55", "presence" : "O", "format" : "TV", "length" : "2"})
ies.append({ "iei" : "32", "value" : "N1 UE network capability", "type" : "N1 UE network capability", "reference" : "9.9.3.57", "presence" : "O", "format" : "TLV", "length" : "3-15"})
ies.append({ "iei" : "34", "value" : "UE radio capability ID availability", "type" : "UE radio capability ID availability", "reference" : "9.9.3.58", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "35", "value" : "Requested WUS assistance information", "type" : "WUS assistance information", "reference" : "9.9.3.62", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "36", "value" : "DRX parameter in NB-S1 mode", "type" : "NB-S1 DRX parameter", "reference" : "9.9.3.63", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "38", "value" : "Requested IMSI offset", "type" : "IMSI offset", "reference" : "9.9.3.64", "presence" : "O", "format" : "TLV", "length" : "4"})
msg_list[key]["ies"] = ies

View File

@ -26,4 +26,9 @@ ies.append({ "iei" : "7A", "value" : "Extended emergency number list", "type" :
ies.append({ "iei" : "7C", "value" : "Ciphering key data", "type" : "Ciphering key data", "reference" : "9.9.3.56", "presence" : "O", "format" : "TLV-E", "length" : "35-2291"})
ies.append({ "iei" : "66", "value" : "UE radio capability ID", "type" : "UE radio capability ID", "reference" : "9.9.3.60", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "B-", "value" : "UE radio capability ID deletion indication", "type" : "UE radio capability ID deletion indication", "reference" : "9.9.3.61", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "35", "value" : "Negotiated WUS assistance information", "type" : "WUS assistance information", "reference" : "9.9.3.62", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "36", "value" : "Negotiated DRX parameter in NB-S1 mode", "type" : "NB-S1 DRX parameter", "reference" : "9.9.3.63", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "38", "value" : "Negotiated IMSI offset", "type" : "IMSI offset", "reference" : "9.9.3.64", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of forbidden tracking areas for roaming", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "8-98"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of forbidden tracking areas forregional provision of service", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "8-98"})
msg_list[key]["ies"] = ies

View File

@ -4,4 +4,7 @@ ies.append({ "iei" : "78", "value" : "ESM message container", "type" : "ESM mess
ies.append({ "iei" : "5F", "value" : "T3346 value", "type" : "GPRS timer 2", "reference" : "9.9.3.16A", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "16", "value" : "T3402 value", "type" : "GPRS timer 2", "reference" : "9.9.3.16A", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "A-", "value" : "Extended EMM cause", "type" : "Extended EMM cause", "reference" : "9.9.3.26A", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "1C", "value" : "Lower bound timer value", "type" : "GPRS timer 3", "reference" : "9.9.3.16B", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of forbidden tracking areas for roaming", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "8-98"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of forbidden tracking areas forregional provision of service", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "8-98"})
msg_list[key]["ies"] = ies

View File

@ -1,4 +1,7 @@
ies = []
ies.append({ "iei" : "", "value" : "Detach type", "type" : "Detach type", "reference" : "9.9.3.7", "presence" : "M", "format" : "V", "length" : "1/2"})
ies.append({ "iei" : "53", "value" : "EMM cause", "type" : "EMM cause", "reference" : "9.9.3.9", "presence" : "O", "format" : "TV", "length" : "2"})
ies.append({ "iei" : "1C", "value" : "Lower bound timer value", "type" : "GPRS timer 3", "reference" : "9.9.3.16B", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of forbidden tracking areas for roaming", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "9-98"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of forbidden tracking areas forregional provision of service", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "9-98"})
msg_list[key]["ies"] = ies

View File

@ -30,4 +30,10 @@ ies.append({ "iei" : "6F", "value" : "UE additional security capability", "type"
ies.append({ "iei" : "6D", "value" : "UE status", "type" : "UE status", "reference" : "9.9.3.54", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "17", "value" : "Additional information requested", "type" : "Additional information requested", "reference" : "9.9.3.55", "presence" : "O", "format" : "TV", "length" : "2"})
ies.append({ "iei" : "32", "value" : "N1 UE network capability", "type" : "N1 UE network capability", "reference" : "9.9.3.57", "presence" : "O", "format" : "TLV", "length" : "3-15"})
ies.append({ "iei" : "34", "value" : "UE radio capability ID availability", "type" : "UE radio capability ID availability", "reference" : "9.9.3.58", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "35", "value" : "Requested WUS assistance information", "type" : "WUS assistance information", "reference" : "9.9.3.62", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "36", "value" : "DRX parameter in NB-S1 mode", "type" : "NB-S1 DRX parameter", "reference" : "9.9.3.63", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "38", "value" : "Requested IMSI offset", "type" : "IMSI offset", "reference" : "9.9.3.64", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "29", "value" : "UE request type", "type" : "UE request type", "reference" : "9.9.3.65", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "28", "value" : "Paging restriction", "type" : "Paging restriction", "reference" : "9.9.3.66", "presence" : "O", "format" : "TLV", "length" : "3-5"})
msg_list[key]["ies"] = ies

View File

@ -27,4 +27,10 @@ ies.append({ "iei" : "7A", "value" : "Extended emergency number list", "type" :
ies.append({ "iei" : "7C", "value" : "Ciphering key data", "type" : "Ciphering key data", "reference" : "9.9.3.56", "presence" : "O", "format" : "TLV-E", "length" : "35-2291"})
ies.append({ "iei" : "66", "value" : "UE radio capability ID", "type" : "UE radio capability ID", "reference" : "9.9.3.60", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "B-", "value" : "UE radio capability ID deletion indication", "type" : "UE radio capability ID deletion indication", "reference" : "9.9.3.61", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "35", "value" : "Negotiated WUS assistance information", "type" : "WUS assistance information", "reference" : "9.9.3.62", "presence" : "O", "format" : "TLV", "length" : "3-n"})
ies.append({ "iei" : "36", "value" : "Negotiated DRX parameter in NB-S1 mode", "type" : "NB-S1 DRX parameter", "reference" : "9.9.3.63", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "38", "value" : "Negotiated IMSI offset", "type" : "IMSI offset", "reference" : "9.9.3.64", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "37", "value" : "EPS additional request result", "type" : "EPS additional request result", "reference" : "9.9.3.67", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of forbidden tracking areas for roaming", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "8-98"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of forbidden tracking areas forregional provision of service", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "8-98"})
msg_list[key]["ies"] = ies

View File

@ -2,4 +2,7 @@ ies = []
ies.append({ "iei" : "", "value" : "EMM cause", "type" : "EMM cause", "reference" : "9.9.3.9", "presence" : "M", "format" : "V", "length" : "1"})
ies.append({ "iei" : "5F", "value" : "T3346 value", "type" : "GPRS timer 2", "reference" : "9.9.3.16A", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "A-", "value" : "Extended EMM cause", "type" : "Extended EMM cause", "reference" : "9.9.3.26A", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "1C", "value" : "Lower bound timer value", "type" : "GPRS timer 3", "reference" : "9.9.3.16B", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of forbidden tracking areas for roaming", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "9-98"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of forbidden tracking areas forregional provision of service", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "9-98"})
msg_list[key]["ies"] = ies

View File

@ -1,7 +1,9 @@
ies = []
ies.append({ "iei" : "", "value" : "Service type", "type" : "Service type", "reference" : "9.9.3.27", "presence" : "M", "format" : "V", "length" : "1/2"})
ies.append({ "iei" : "", "value" : "M-TMSI", "type" : "Mobile identity", "reference" : "9.9.2.3", "presence" : "M", "format" : "LV", "length" : "6"})
ies.append({ "iei" : "B-", "value" : "CSFB response", "type" : "CSFB response", "reference" : "9.9.3.5", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "B-", "value" : "CSFB response", "type" : "CSFB response", "reference" : "9.9.3.5", "presence" : "C", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "57", "value" : "EPS bearer context status", "type" : "EPS bearer context status", "reference" : "9.9.2.1", "presence" : "O", "format" : "TLV", "length" : "4"})
ies.append({ "iei" : "D-", "value" : "Device properties", "type" : "Device properties", "reference" : "9.9.2.0A", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "29", "value" : "UE request type", "type" : "UE request type", "reference" : "9.9.3.65", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "28", "value" : "Paging restriction", "type" : "Paging restriction", "reference" : "9.9.3.66", "presence" : "O", "format" : "TLV", "length" : "3-5"})
msg_list[key]["ies"] = ies

View File

@ -3,4 +3,7 @@ ies.append({ "iei" : "", "value" : "EMM cause", "type" : "EMM cause", "reference
ies.append({ "iei" : "5B", "value" : "T3442 value", "type" : "GPRS timer", "reference" : "9.9.3.16", "presence" : "C", "format" : "TV", "length" : "2"})
ies.append({ "iei" : "5F", "value" : "T3346 value", "type" : "GPRS timer 2", "reference" : "9.9.3.16A", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "6B", "value" : "T3448 value", "type" : "GPRS timer 2", "reference" : "9.9.3.16A", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1C", "value" : "Lower bound timer value", "type" : "GPRS timer 3", "reference" : "9.9.3.16B", "presence" : "O", "format" : "TLV", "length" : "3"})
ies.append({ "iei" : "1D", "value" : "Forbidden TAI for the list of forbidden tracking areas for roaming", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "9-98"})
ies.append({ "iei" : "1E", "value" : "Forbidden TAI for the list of forbidden tracking areas forregional provision of service", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "O", "format" : "TLV", "length" : "9-98"})
msg_list[key]["ies"] = ies

View File

@ -7,5 +7,5 @@ ies.append({ "iei" : "55", "value" : "Replayed nonceUE", "type" : "Nonce", "refe
ies.append({ "iei" : "56", "value" : "NonceMME", "type" : "Nonce", "reference" : "9.9.3.25", "presence" : "O", "format" : "TV", "length" : "5"})
ies.append({ "iei" : "4F", "value" : "HashMME", "type" : "HashMME", "reference" : "9.9.3.50", "presence" : "O", "format" : "TLV", "length" : "10"})
ies.append({ "iei" : "6F", "value" : "Replayed UE additional security capability", "type" : "UE additional security capability", "reference" : "9.9.3.53", "presence" : "O", "format" : "TLV", "length" : "6"})
ies.append({ "iei" : "D-", "value" : "UE radio capability ID request", "type" : "UE radio capability ID request", "reference" : "9.9.3.59", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "37", "value" : "UE radio capability ID request", "type" : "UE radio capability ID request", "reference" : "9.9.3.59", "presence" : "O", "format" : "TLV", "length" : "3"})
msg_list[key]["ies"] = ies

View File

@ -1,6 +1,6 @@
# The MIT License
# Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
# Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
# This file is part of Open5GS.
@ -64,7 +64,7 @@ def output_header_to_file(f):
f.write("""/*
* The MIT License
*
* Copyright (C) 2019,2020 by Sukchan Lee <acetcom@gmail.com>
* Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
@ -113,7 +113,8 @@ def v_lower(v):
def get_cells(cells):
iei = cells[0].text
value = re.sub("\s*$", "", re.sub("\s*\n*\s*\([^\)]*\)*", "", re.sub("'s", "", cells[1].text)))
value = cells[1].text.encode('ascii', 'ignore').decode('utf-8')
value = re.sub("\s*$", "", re.sub("\s*\n*\s*\([^\)]*\)*", "", re.sub("\"|'s", "", value)))
type = re.sub("^NAS ", "", re.sub("'s", "", re.sub('\s*\n\s*[a-zA-Z0-9.]*', '', cells[2].text)))
if type == "message container":
type = "EPS message container"
@ -578,10 +579,10 @@ for (k, v) in sorted_msg_list:
f.write(" * %s\n" % k)
f.write(" ******************************************************/")
for i, ie in enumerate([ies for ies in msg_list[k]["ies"] if ies["presence"] == "O"]):
f.write("\n#define OGS_NAS_EPS_%s_%s_PRESENT (1<<%d)" % (v_upper(k), v_upper(ie["value"]), i))
for i, ie in enumerate([ies for ies in msg_list[k]["ies"] if ies["presence"] != "M"]):
f.write("\n#define OGS_NAS_EPS_%s_%s_PRESENT ((uint64_t)1<<%d)" % (v_upper(k), v_upper(ie["value"]), i))
for i, ie in enumerate([ies for ies in msg_list[k]["ies"] if ies["presence"] == "O"]):
for i, ie in enumerate([ies for ies in msg_list[k]["ies"] if ies["presence"] != "M"]):
f.write("\n#define OGS_NAS_EPS_%s_%s_TYPE 0x%s" % (v_upper(k), v_upper(ie["value"]), re.sub('-', '0', ie["iei"])))
f.write("\n\ntypedef struct ogs_nas_eps_%s_s {\n" % v_lower(k))
@ -593,9 +594,9 @@ for (k, v) in sorted_msg_list:
f.write(" /* Mandatory fields */\n")
mandatory_fields = True;
if ie["presence"] == "O" and optional_fields is False:
if ie["presence"] != "M" and optional_fields is False:
f.write("\n /* Optional fields */\n")
f.write(" uint32_t presencemask;\n");
f.write(" uint64_t presencemask;\n");
optional_fields = True;
f.write(" ogs_nas_" + v_lower(ie["type"]) + "_t " + \
@ -696,7 +697,7 @@ for (k, v) in sorted_msg_list:
f.write(" decoded += size;\n\n")
optional_fields = False;
for ie in [ies for ies in msg_list[k]["ies"] if ies["presence"] == "O"]:
for ie in [ies for ies in msg_list[k]["ies"] if ies["presence"] != "M"]:
if optional_fields is False:
f.write(""" while (pkbuf->len > 0) {
uint8_t *buffer = pkbuf->data;
@ -726,7 +727,7 @@ for (k, v) in sorted_msg_list:
f.write(" decoded += size;\n")
f.write(" break;\n")
if [ies for ies in msg_list[k]["ies"] if ies["presence"] == "O"]:
if [ies for ies in msg_list[k]["ies"] if ies["presence"] != "M"]:
f.write(""" default:
ogs_warn("Unknown type(0x%x) or not implemented\\n", type);
break;
@ -881,7 +882,7 @@ for (k, v) in sorted_msg_list:
f.write(" ogs_assert(size >= 0);\n")
f.write(" encoded += size;\n\n")
for ie in [ies for ies in msg_list[k]["ies"] if ies["presence"] == "O"]:
for ie in [ies for ies in msg_list[k]["ies"] if ies["presence"] != "M"]:
f.write(" if (%s->presencemask & OGS_NAS_EPS_%s_%s_PRESENT) {\n" % (v_lower(k), v_upper(k), v_upper(ie["value"])))
if ie["length"] == "1" and ie["format"] == "TV":
f.write(" %s->%s.type = (OGS_NAS_EPS_%s_%s_TYPE >> 4);\n\n" % (v_lower(k), v_lower(ie["value"]), v_upper(k), v_upper(ie["value"])))

View File

@ -745,14 +745,46 @@ typedef struct ogs_nas_n1_ue_network_capability_s {
};
} ogs_nas_n1_ue_network_capability_t;
/* 9.9.3.58 UE radio capability ID availability
* O TLV 3 */
typedef struct ogs_nas_ue_radio_capability_id_availability_s {
uint8_t length;
ED2(uint8_t spare:5;,
uint8_t value:3;)
} __attribute__ ((packed)) ogs_nas_ue_radio_capability_id_availability_t;
/* 9.9.3.59 UE radio capability ID request
* O TV 1 */
* O TLV 3 */
typedef struct ogs_nas_ue_radio_capability_id_request_s {
uint8_t length;
ED3(uint8_t type:4;,
uint8_t spare:3;,
uint8_t ue_radio_capability_id_available:1;)
} __attribute__ ((packed)) ogs_nas_ue_radio_capability_id_request_t;
/* 9.9.3.63 NB-S1 DRX parameter
* O TLV 3 */
typedef struct ogs_nas_nb_s1_drx_parameter_s {
uint8_t length;
ED2(uint8_t spare:4;,
uint8_t value:4;)
} __attribute__ ((packed)) ogs_nas_nb_s1_drx_parameter_t;
/* 9.9.3.64 IMSI offset
* O TLV 4 */
typedef struct ogs_nas_imsi_offset_s {
uint8_t length;
uint16_t value;
} __attribute__ ((packed)) ogs_nas_imsi_offset_t;
/* 9.9.3.67 EPS additional request result
* O TLV 3 */
typedef struct ogs_nas_eps_additional_request_result_s {
uint8_t length;
ED2(uint8_t spare:6;,
uint8_t prd:2;)
} __attribute__ ((packed)) ogs_nas_eps_additional_request_result_t;
/* 9.9.4.1 Access point name
* See subclause 10.5.6.1 in 3GPP TS 24.008 [13].
* O TLV 3-102 */