Fix to decode configuration update complete [#487]

This commit is contained in:
Sukchan Lee 2020-06-30 08:29:18 -04:00
parent 3c6711c9c8
commit 5eabfc8275
10 changed files with 19 additions and 334 deletions

View File

@ -28,7 +28,7 @@
/*******************************************************************************
* 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: 2020-06-19 19:55:35.949469 by acetcom
* Created on: 2020-06-30 08:13:45.448896 by acetcom
* from 24501-g41.docx
******************************************************************************/
@ -44,7 +44,6 @@ int ogs_nas_5gs_decode_service_request(ogs_nas_5gs_message_t *message, ogs_pkbuf
int ogs_nas_5gs_decode_service_reject(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_service_accept(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_configuration_update_command(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_configuration_update_complete(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_authentication_request(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_authentication_response(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_authentication_reject(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf);
@ -1063,94 +1062,6 @@ int ogs_nas_5gs_decode_configuration_update_command(ogs_nas_5gs_message_t *messa
return decoded;
}
int ogs_nas_5gs_decode_configuration_update_complete(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf)
{
ogs_nas_5gs_configuration_update_complete_t *configuration_update_complete = &message->gmm.configuration_update_complete;
int decoded = 0;
int size = 0;
ogs_trace("[NAS] Decode CONFIGURATION_UPDATE_COMPLETE\n");
size = ogs_nas_5gs_decode_control_plane_service_type(&configuration_update_complete->control_plane_service_type, pkbuf);
ogs_assert(size >= 0);
decoded += size;
while (pkbuf->len > 0) {
uint8_t *buffer = pkbuf->data;
uint8_t type = (*buffer) >= 0x80 ? ((*buffer) & 0xf0) : (*buffer);
size = sizeof(uint8_t);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
decoded += size;
switch(type) {
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_CIOT_SMALL_DATA_CONTAINER_TYPE:
size = ogs_nas_5gs_decode_ciot_small_data_container(&configuration_update_complete->ciot_small_data_container, pkbuf);
ogs_assert(size >= 0);
configuration_update_complete->presencemask |= OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_CIOT_SMALL_DATA_CONTAINER_PRESENT;
decoded += size;
break;
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_TYPE_TYPE:
decoded--;
ogs_assert(ogs_pkbuf_push(pkbuf, 1));
size = ogs_nas_5gs_decode_payload_container_type(&configuration_update_complete->payload_container_type, pkbuf);
ogs_assert(size >= 0);
configuration_update_complete->presencemask |= OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_TYPE_PRESENT;
decoded += size;
break;
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_TYPE:
size = ogs_nas_5gs_decode_payload_container(&configuration_update_complete->payload_container, pkbuf);
ogs_assert(size >= 0);
configuration_update_complete->presencemask |= OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_PRESENT;
decoded += size;
break;
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_ID_TYPE:
size = ogs_nas_5gs_decode_pdu_session_identity_2(&configuration_update_complete->pdu_session_id, pkbuf);
ogs_assert(size >= 0);
configuration_update_complete->presencemask |= OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_ID_PRESENT;
decoded += size;
break;
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_STATUS_TYPE:
size = ogs_nas_5gs_decode_pdu_session_status(&configuration_update_complete->pdu_session_status, pkbuf);
ogs_assert(size >= 0);
configuration_update_complete->presencemask |= OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_STATUS_PRESENT;
decoded += size;
break;
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_RELEASE_ASSISTANCE_INDICATION_TYPE:
decoded--;
ogs_assert(ogs_pkbuf_push(pkbuf, 1));
size = ogs_nas_5gs_decode_release_assistance_indication(&configuration_update_complete->release_assistance_indication, pkbuf);
ogs_assert(size >= 0);
configuration_update_complete->presencemask |= OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_RELEASE_ASSISTANCE_INDICATION_PRESENT;
decoded += size;
break;
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_UPLINK_DATA_STATUS_TYPE:
size = ogs_nas_5gs_decode_uplink_data_status(&configuration_update_complete->uplink_data_status, pkbuf);
ogs_assert(size >= 0);
configuration_update_complete->presencemask |= OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_UPLINK_DATA_STATUS_PRESENT;
decoded += size;
break;
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_NAS_MESSAGE_CONTAINER_TYPE:
size = ogs_nas_5gs_decode_message_container(&configuration_update_complete->nas_message_container, pkbuf);
ogs_assert(size >= 0);
configuration_update_complete->presencemask |= OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_NAS_MESSAGE_CONTAINER_PRESENT;
decoded += size;
break;
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_ADDITIONAL_INFORMATION_TYPE:
size = ogs_nas_5gs_decode_additional_information(&configuration_update_complete->additional_information, pkbuf);
ogs_assert(size >= 0);
configuration_update_complete->presencemask |= OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_ADDITIONAL_INFORMATION_PRESENT;
decoded += size;
break;
default:
ogs_error("Unknown type(0x%x) or not implemented\n", type);
break;
}
}
return decoded;
}
int ogs_nas_5gs_decode_authentication_request(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf)
{
ogs_nas_5gs_authentication_request_t *authentication_request = &message->gmm.authentication_request;
@ -2710,9 +2621,6 @@ int ogs_nas_5gmm_decode(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf)
decoded += size;
break;
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE:
size = ogs_nas_5gs_decode_configuration_update_complete(message, pkbuf);
ogs_assert(size >= 0);
decoded += size;
break;
case OGS_NAS_5GS_AUTHENTICATION_REQUEST:
size = ogs_nas_5gs_decode_authentication_request(message, pkbuf);

View File

@ -28,7 +28,7 @@
/*******************************************************************************
* 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: 2020-06-19 19:55:35.960740 by acetcom
* Created on: 2020-06-30 08:13:45.459717 by acetcom
* from 24501-g41.docx
******************************************************************************/
@ -44,7 +44,6 @@ int ogs_nas_5gs_encode_service_request(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t
int ogs_nas_5gs_encode_service_reject(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t *message);
int ogs_nas_5gs_encode_service_accept(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t *message);
int ogs_nas_5gs_encode_configuration_update_command(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t *message);
int ogs_nas_5gs_encode_configuration_update_complete(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t *message);
int ogs_nas_5gs_encode_authentication_request(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t *message);
int ogs_nas_5gs_encode_authentication_response(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t *message);
int ogs_nas_5gs_encode_authentication_reject(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t *message);
@ -1316,107 +1315,6 @@ int ogs_nas_5gs_encode_configuration_update_command(ogs_pkbuf_t *pkbuf, ogs_nas_
return encoded;
}
int ogs_nas_5gs_encode_configuration_update_complete(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t *message)
{
ogs_nas_5gs_configuration_update_complete_t *configuration_update_complete = &message->gmm.configuration_update_complete;
int encoded = 0;
int size = 0;
ogs_trace("[NAS] Encode CONFIGURATION_UPDATE_COMPLETE");
size = ogs_nas_5gs_encode_control_plane_service_type(pkbuf, &configuration_update_complete->control_plane_service_type);
ogs_assert(size >= 0);
encoded += size;
if (configuration_update_complete->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_CIOT_SMALL_DATA_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_CIOT_SMALL_DATA_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_ciot_small_data_container(pkbuf, &configuration_update_complete->ciot_small_data_container);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_complete->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_TYPE_PRESENT) {
configuration_update_complete->payload_container_type.type = (OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_TYPE_TYPE >> 4);
size = ogs_nas_5gs_encode_payload_container_type(pkbuf, &configuration_update_complete->payload_container_type);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_complete->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_payload_container(pkbuf, &configuration_update_complete->payload_container);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_complete->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_ID_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_ID_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_pdu_session_identity_2(pkbuf, &configuration_update_complete->pdu_session_id);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_complete->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_STATUS_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_STATUS_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_pdu_session_status(pkbuf, &configuration_update_complete->pdu_session_status);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_complete->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_RELEASE_ASSISTANCE_INDICATION_PRESENT) {
configuration_update_complete->release_assistance_indication.type = (OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_RELEASE_ASSISTANCE_INDICATION_TYPE >> 4);
size = ogs_nas_5gs_encode_release_assistance_indication(pkbuf, &configuration_update_complete->release_assistance_indication);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_complete->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_UPLINK_DATA_STATUS_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_UPLINK_DATA_STATUS_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_uplink_data_status(pkbuf, &configuration_update_complete->uplink_data_status);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_complete->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_NAS_MESSAGE_CONTAINER_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_NAS_MESSAGE_CONTAINER_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_message_container(pkbuf, &configuration_update_complete->nas_message_container);
ogs_assert(size >= 0);
encoded += size;
}
if (configuration_update_complete->presencemask & OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_ADDITIONAL_INFORMATION_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_ADDITIONAL_INFORMATION_TYPE);
ogs_assert(size >= 0);
encoded += size;
size = ogs_nas_5gs_encode_additional_information(pkbuf, &configuration_update_complete->additional_information);
ogs_assert(size >= 0);
encoded += size;
}
return encoded;
}
int ogs_nas_5gs_encode_authentication_request(ogs_pkbuf_t *pkbuf, ogs_nas_5gs_message_t *message)
{
ogs_nas_5gs_authentication_request_t *authentication_request = &message->gmm.authentication_request;
@ -2978,9 +2876,6 @@ ogs_pkbuf_t *ogs_nas_5gmm_encode(ogs_nas_5gs_message_t *message)
encoded += size;
break;
case OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE:
size = ogs_nas_5gs_encode_configuration_update_complete(pkbuf, message);
ogs_assert(size >= 0);
encoded += size;
break;
case OGS_NAS_5GS_AUTHENTICATION_REQUEST:
size = ogs_nas_5gs_encode_authentication_request(pkbuf, message);

View File

@ -28,7 +28,7 @@
/*******************************************************************************
* 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: 2020-06-19 19:55:35.932346 by acetcom
* Created on: 2020-06-30 08:13:45.431932 by acetcom
* from 24501-g41.docx
******************************************************************************/
@ -700,40 +700,6 @@ int ogs_nas_5gs_encode_cag_information_list(ogs_pkbuf_t *pkbuf, ogs_nas_cag_info
return cag_information_list->length + sizeof(cag_information_list->length);
}
/* 9.11.3.18B CIoT small data container
* O TLV 4-257 */
int ogs_nas_5gs_decode_ciot_small_data_container(ogs_nas_ciot_small_data_container_t *ciot_small_data_container, ogs_pkbuf_t *pkbuf)
{
uint16_t size = 0;
ogs_nas_ciot_small_data_container_t *source = (ogs_nas_ciot_small_data_container_t *)pkbuf->data;
ciot_small_data_container->length = source->length;
size = ciot_small_data_container->length + sizeof(ciot_small_data_container->length);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(ciot_small_data_container, pkbuf->data - size, size);
ogs_trace(" CIOT_SMALL_DATA_CONTAINER - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_ciot_small_data_container(ogs_pkbuf_t *pkbuf, ogs_nas_ciot_small_data_container_t *ciot_small_data_container)
{
uint16_t size = ciot_small_data_container->length + sizeof(ciot_small_data_container->length);
ogs_nas_ciot_small_data_container_t target;
memcpy(&target, ciot_small_data_container, sizeof(ogs_nas_ciot_small_data_container_t));
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" CIOT_SMALL_DATA_CONTAINER - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.18C Ciphering key data
* O TLV-E x-n */
int ogs_nas_5gs_decode_ciphering_key_data(ogs_nas_ciphering_key_data_t *ciphering_key_data, ogs_pkbuf_t *pkbuf)
@ -776,36 +742,6 @@ int ogs_nas_5gs_encode_ciphering_key_data(ogs_pkbuf_t *pkbuf, ogs_nas_ciphering_
return ciphering_key_data->length + sizeof(ciphering_key_data->length);
}
/* 9.11.3.18D Control plane service type
* M V 1/2 */
int ogs_nas_5gs_decode_control_plane_service_type(ogs_nas_control_plane_service_type_t *control_plane_service_type, ogs_pkbuf_t *pkbuf)
{
uint16_t size = sizeof(ogs_nas_control_plane_service_type_t);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(control_plane_service_type, pkbuf->data - size, size);
ogs_trace(" CONTROL_PLANE_SERVICE_TYPE - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
int ogs_nas_5gs_encode_control_plane_service_type(ogs_pkbuf_t *pkbuf, ogs_nas_control_plane_service_type_t *control_plane_service_type)
{
uint16_t size = sizeof(ogs_nas_control_plane_service_type_t);
ogs_nas_control_plane_service_type_t target;
memcpy(&target, control_plane_service_type, size);
ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(pkbuf->data - size, &target, size);
ogs_trace(" CONTROL_PLANE_SERVICE_TYPE - ");
ogs_log_hexdump(OGS_LOG_TRACE, pkbuf->data - size, size);
return size;
}
/* 9.11.3.19 Daylight saving time
* O TLV 3 */
int ogs_nas_5gs_decode_daylight_saving_time(ogs_nas_daylight_saving_time_t *daylight_saving_time, ogs_pkbuf_t *pkbuf)

View File

@ -28,7 +28,7 @@
/*******************************************************************************
* 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: 2020-06-19 19:55:35.929537 by acetcom
* Created on: 2020-06-30 08:13:45.429071 by acetcom
* from 24501-g41.docx
******************************************************************************/
@ -64,9 +64,7 @@ int ogs_nas_5gs_decode_authentication_parameter_rand(ogs_nas_authentication_para
int ogs_nas_5gs_decode_authentication_response_parameter(ogs_nas_authentication_response_parameter_t *authentication_response_parameter, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_configuration_update_indication(ogs_nas_configuration_update_indication_t *configuration_update_indication, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_cag_information_list(ogs_nas_cag_information_list_t *cag_information_list, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_ciot_small_data_container(ogs_nas_ciot_small_data_container_t *ciot_small_data_container, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_ciphering_key_data(ogs_nas_ciphering_key_data_t *ciphering_key_data, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_control_plane_service_type(ogs_nas_control_plane_service_type_t *control_plane_service_type, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_daylight_saving_time(ogs_nas_daylight_saving_time_t *daylight_saving_time, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_5gmm_cause(ogs_nas_5gmm_cause_t *gmm_cause, ogs_pkbuf_t *pkbuf);
int ogs_nas_5gs_decode_de_registration_type(ogs_nas_de_registration_type_t *de_registration_type, ogs_pkbuf_t *pkbuf);
@ -174,9 +172,7 @@ int ogs_nas_5gs_encode_authentication_parameter_rand(ogs_pkbuf_t *pkbuf, ogs_nas
int ogs_nas_5gs_encode_authentication_response_parameter(ogs_pkbuf_t *pkbuf, ogs_nas_authentication_response_parameter_t *authentication_response_parameter);
int ogs_nas_5gs_encode_configuration_update_indication(ogs_pkbuf_t *pkbuf, ogs_nas_configuration_update_indication_t *configuration_update_indication);
int ogs_nas_5gs_encode_cag_information_list(ogs_pkbuf_t *pkbuf, ogs_nas_cag_information_list_t *cag_information_list);
int ogs_nas_5gs_encode_ciot_small_data_container(ogs_pkbuf_t *pkbuf, ogs_nas_ciot_small_data_container_t *ciot_small_data_container);
int ogs_nas_5gs_encode_ciphering_key_data(ogs_pkbuf_t *pkbuf, ogs_nas_ciphering_key_data_t *ciphering_key_data);
int ogs_nas_5gs_encode_control_plane_service_type(ogs_pkbuf_t *pkbuf, ogs_nas_control_plane_service_type_t *control_plane_service_type);
int ogs_nas_5gs_encode_daylight_saving_time(ogs_pkbuf_t *pkbuf, ogs_nas_daylight_saving_time_t *daylight_saving_time);
int ogs_nas_5gs_encode_5gmm_cause(ogs_pkbuf_t *pkbuf, ogs_nas_5gmm_cause_t *gmm_cause);
int ogs_nas_5gs_encode_de_registration_type(ogs_pkbuf_t *pkbuf, ogs_nas_de_registration_type_t *de_registration_type);

View File

@ -28,7 +28,7 @@
/*******************************************************************************
* 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: 2020-06-19 19:55:35.941362 by acetcom
* Created on: 2020-06-30 08:13:45.441307 by acetcom
* from 24501-g41.docx
******************************************************************************/
@ -572,46 +572,6 @@ typedef struct ogs_nas_5gs_configuration_update_command_s {
} ogs_nas_5gs_configuration_update_command_t;
/*******************************************************
* CONFIGURATION UPDATE COMPLETE
******************************************************/
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_CIOT_SMALL_DATA_CONTAINER_PRESENT ((uint64_t)1<<0)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_TYPE_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_ID_PRESENT ((uint64_t)1<<3)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_STATUS_PRESENT ((uint64_t)1<<4)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_RELEASE_ASSISTANCE_INDICATION_PRESENT ((uint64_t)1<<5)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_UPLINK_DATA_STATUS_PRESENT ((uint64_t)1<<6)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_NAS_MESSAGE_CONTAINER_PRESENT ((uint64_t)1<<7)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_ADDITIONAL_INFORMATION_PRESENT ((uint64_t)1<<8)
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_CIOT_SMALL_DATA_CONTAINER_TYPE 0x6F
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_TYPE_TYPE 0x80
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PAYLOAD_CONTAINER_TYPE 0x7B
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_ID_TYPE 0x12
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_PDU_SESSION_STATUS_TYPE 0x50
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_RELEASE_ASSISTANCE_INDICATION_TYPE 0xF0
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_UPLINK_DATA_STATUS_TYPE 0x40
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_NAS_MESSAGE_CONTAINER_TYPE 0x71
#define OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE_ADDITIONAL_INFORMATION_TYPE 0x24
typedef struct ogs_nas_5gs_configuration_update_complete_s {
/* Mandatory fields */
ogs_nas_control_plane_service_type_t control_plane_service_type;
/* Optional fields */
uint64_t presencemask;
ogs_nas_ciot_small_data_container_t ciot_small_data_container;
ogs_nas_payload_container_type_t payload_container_type;
ogs_nas_payload_container_t payload_container;
ogs_nas_pdu_session_identity_2_t pdu_session_id;
ogs_nas_pdu_session_status_t pdu_session_status;
ogs_nas_release_assistance_indication_t release_assistance_indication;
ogs_nas_uplink_data_status_t uplink_data_status;
ogs_nas_message_container_t nas_message_container;
ogs_nas_additional_information_t additional_information;
} ogs_nas_5gs_configuration_update_complete_t;
/*******************************************************
* AUTHENTICATION REQUEST
******************************************************/
@ -1316,7 +1276,6 @@ typedef struct ogs_nas_5gmm_message_s {
ogs_nas_5gs_service_reject_t service_reject;
ogs_nas_5gs_service_accept_t service_accept;
ogs_nas_5gs_configuration_update_command_t configuration_update_command;
ogs_nas_5gs_configuration_update_complete_t configuration_update_complete;
ogs_nas_5gs_authentication_request_t authentication_request;
ogs_nas_5gs_authentication_response_t authentication_response;
ogs_nas_5gs_authentication_reject_t authentication_reject;

View File

@ -1,12 +1,2 @@
ies = []
ies.append({ "iei" : "", "value" : "Control plane service type", "type" : "Control plane service type", "reference" : "9.11.3.18D", "presence" : "M", "format" : "V", "length" : "1/2"})
ies.append({ "iei" : "6F", "value" : "CIoT small data container", "type" : "CIoT small data container", "reference" : "9.11.3.18B", "presence" : "O", "format" : "TLV", "length" : "4-257"})
ies.append({ "iei" : "8-", "value" : "Payload container type", "type" : "Payload container type", "reference" : "9.11.3.40", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "7B", "value" : "Payload container", "type" : "Payload container", "reference" : "9.11.3.39", "presence" : "O", "format" : "TLV-E", "length" : "4-65538"})
ies.append({ "iei" : "12", "value" : "PDU session ID", "type" : "PDU session identity 2", "reference" : "9.11.3.41", "presence" : "C", "format" : "TV", "length" : "2"})
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" : "F-", "value" : "Release assistance indication", "type" : "Release assistance indication", "reference" : "9.11.3.46A", "presence" : "O", "format" : "TV", "length" : "1"})
ies.append({ "iei" : "40", "value" : "Uplink data status", "type" : "Uplink data status", "reference" : "9.11.3.57", "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" : "24", "value" : "Additional information", "type" : "Additional information", "reference" : "9.11.2.1", "presence" : "O", "format" : "TLV", "length" : "3-n"})
msg_list[key]["ies"] = ies

View File

@ -230,7 +230,7 @@ msg_list["SERVICE REQUEST"]["table"] = 15
msg_list["SERVICE ACCEPT"]["table"] = 16
msg_list["SERVICE REJECT"]["table"] = 17
msg_list["CONFIGURATION UPDATE COMMAND"]["table"] = 18
msg_list["CONFIGURATION UPDATE COMPLETE"]["table"] = 29
msg_list["CONFIGURATION UPDATE COMPLETE"]["table"] = 19
msg_list["IDENTITY REQUEST"]["table"] = 20
msg_list["IDENTITY RESPONSE"]["table"] = 21
msg_list["NOTIFICATION"]["table"] = 22

View File

@ -504,7 +504,7 @@ void gmm_state_authentication(ogs_fsm_t *s, amf_event_t *e)
break;
default:
ogs_warn("Unknown message[%d]", nas_message->gmm.h.message_type);
ogs_error("Unknown message[%d]", nas_message->gmm.h.message_type);
break;
}
break;
@ -735,7 +735,7 @@ void gmm_state_security_mode(ogs_fsm_t *s, amf_event_t *e)
break;
default:
ogs_warn("Unknown message[%d]", nas_message->gmm.h.message_type);
ogs_error("Unknown message[%d]", nas_message->gmm.h.message_type);
break;
}
break;
@ -911,7 +911,7 @@ void gmm_state_initial_context_setup(ogs_fsm_t *s, amf_event_t *e)
break;
default:
ogs_warn("Unknown message[%d]", nas_message->gmm.h.message_type);
ogs_error("Unknown message [%d]", nas_message->gmm.h.message_type);
break;
}
break;

View File

@ -541,15 +541,9 @@ ogs_pkbuf_t *testgmm_build_configuration_update_complete(test_ue_t *test_ue)
{
ogs_nas_5gs_message_t message;
ogs_pkbuf_t *pkbuf = NULL;
ogs_nas_5gs_configuration_update_complete_t *configuration_update_complete =
&message.gmm.configuration_update_complete;
ogs_nas_control_plane_service_type_t *control_plane_service_type = NULL;
ogs_assert(test_ue);
control_plane_service_type =
&configuration_update_complete->control_plane_service_type;
memset(&message, 0, sizeof(message));
message.h.security_header_type =
OGS_NAS_SECURITY_HEADER_INTEGRITY_PROTECTED_AND_CIPHERED;
@ -560,9 +554,6 @@ ogs_pkbuf_t *testgmm_build_configuration_update_complete(test_ue_t *test_ue)
OGS_NAS_EXTENDED_PROTOCOL_DISCRIMINATOR_5GMM;
message.gmm.h.message_type = OGS_NAS_5GS_CONFIGURATION_UPDATE_COMPLETE;
control_plane_service_type->value =
OGS_NAS_5GS_CONTROL_PLANE_SERVICE_TYPE_MO;
return test_nas_5gs_security_encode(test_ue, &message);
}

View File

@ -292,6 +292,16 @@ static void test1_func(abts_case *tc, void *data)
rv = testgnb_ngap_send(ngap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
#if 0 /* No need to send configuration update complete */
/* Send Configuration update complete */
gmmbuf = testgmm_build_configuration_update_complete(&test_ue);
ABTS_PTR_NOTNULL(tc, gmmbuf);
sendbuf = testngap_build_uplink_nas_transport(&test_ue, gmmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testgnb_ngap_send(ngap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
#endif
/* Receive PDU session establishment accept */
recvbuf = testgnb_ngap_read(ngap);
ABTS_PTR_NOTNULL(tc, recvbuf);