[NAS] modify library to include both directions of deregistration requests

Definitions in NAS library now include both directions of deregistration
requests/accepts - from UE and from network.
This commit is contained in:
Bostjan Meglic 2022-06-21 11:39:55 +00:00 committed by Sukchan Lee
parent babc30940a
commit d1a2971990
13 changed files with 67 additions and 48 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: 2022-01-22 09:24:09.045630 by acetcom
* Created on: 2022-07-11 07:09:47.173881 by ubuntu
* from 24501-g41.docx
******************************************************************************/
@ -979,7 +979,7 @@ int ogs_nas_5gs_decode_deregistration_request_from_ue(ogs_nas_5gs_message_t *mes
int decoded = 0;
int size = 0;
ogs_trace("[NAS] Decode DEREGISTRATION_REQUEST\n");
ogs_trace("[NAS] Decode DEREGISTRATION_REQUEST_FROM_UE\n");
size = ogs_nas_5gs_decode_de_registration_type(&deregistration_request_from_ue->de_registration_type, pkbuf);
if (size < 0) {
@ -1006,7 +1006,7 @@ int ogs_nas_5gs_decode_deregistration_request_to_ue(ogs_nas_5gs_message_t *messa
int decoded = 0;
int size = 0;
ogs_trace("[NAS] Decode DEREGISTRATION_REQUEST\n");
ogs_trace("[NAS] Decode DEREGISTRATION_REQUEST_TO_UE\n");
size = ogs_nas_5gs_decode_de_registration_type(&deregistration_request_to_ue->de_registration_type, pkbuf);
if (size < 0) {
@ -1028,34 +1028,34 @@ int ogs_nas_5gs_decode_deregistration_request_to_ue(ogs_nas_5gs_message_t *messa
decoded += size;
switch(type) {
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_5GMM_CAUSE_TYPE:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_5GMM_CAUSE_TYPE:
size = ogs_nas_5gs_decode_5gmm_cause(&deregistration_request_to_ue->gmm_cause, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_5gs_decode_5gmm_cause() failed");
return size;
}
deregistration_request_to_ue->presencemask |= OGS_NAS_5GS_DEREGISTRATION_REQUEST_5GMM_CAUSE_PRESENT;
deregistration_request_to_ue->presencemask |= OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_5GMM_CAUSE_PRESENT;
decoded += size;
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_T3346_VALUE_TYPE:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_T3346_VALUE_TYPE:
size = ogs_nas_5gs_decode_gprs_timer_2(&deregistration_request_to_ue->t3346_value, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_5gs_decode_gprs_timer_2() failed");
return size;
}
deregistration_request_to_ue->presencemask |= OGS_NAS_5GS_DEREGISTRATION_REQUEST_T3346_VALUE_PRESENT;
deregistration_request_to_ue->presencemask |= OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_T3346_VALUE_PRESENT;
decoded += size;
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_REJECTED_NSSAI_TYPE:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_REJECTED_NSSAI_TYPE:
size = ogs_nas_5gs_decode_rejected_nssai(&deregistration_request_to_ue->rejected_nssai, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_5gs_decode_rejected_nssai() failed");
return size;
}
deregistration_request_to_ue->presencemask |= OGS_NAS_5GS_DEREGISTRATION_REQUEST_REJECTED_NSSAI_PRESENT;
deregistration_request_to_ue->presencemask |= OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_REJECTED_NSSAI_PRESENT;
decoded += size;
break;
default:
@ -3742,7 +3742,7 @@ int ogs_nas_5gmm_decode(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf)
decoded += size;
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE:
size = ogs_nas_5gs_decode_deregistration_request_from_ue(message, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_5gs_decode_deregistration_request_from_ue() failed");
@ -3751,7 +3751,18 @@ int ogs_nas_5gmm_decode(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *pkbuf)
decoded += size;
break;
case OGS_NAS_5GS_DEREGISTRATION_ACCEPT:
case OGS_NAS_5GS_DEREGISTRATION_ACCEPT_FROM_UE:
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE:
size = ogs_nas_5gs_decode_deregistration_request_to_ue(message, pkbuf);
if (size < 0) {
ogs_error("ogs_nas_5gs_decode_deregistration_request_to_ue() failed");
return size;
}
decoded += size;
break;
case OGS_NAS_5GS_DEREGISTRATION_ACCEPT_TO_UE:
break;
case OGS_NAS_5GS_SERVICE_REQUEST:
size = ogs_nas_5gs_decode_service_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: 2022-01-22 09:24:09.053958 by acetcom
* Created on: 2022-07-11 07:09:47.188485 by ubuntu
* from 24501-g41.docx
******************************************************************************/
@ -851,7 +851,7 @@ int ogs_nas_5gs_encode_deregistration_request_from_ue(ogs_pkbuf_t *pkbuf, ogs_na
int encoded = 0;
int size = 0;
ogs_trace("[NAS] Encode DEREGISTRATION_REQUEST");
ogs_trace("[NAS] Encode DEREGISTRATION_REQUEST_FROM_UE");
size = ogs_nas_5gs_encode_de_registration_type(pkbuf, &deregistration_request_from_ue->de_registration_type);
ogs_assert(size >= 0);
@ -870,14 +870,14 @@ int ogs_nas_5gs_encode_deregistration_request_to_ue(ogs_pkbuf_t *pkbuf, ogs_nas_
int encoded = 0;
int size = 0;
ogs_trace("[NAS] Encode DEREGISTRATION_REQUEST");
ogs_trace("[NAS] Encode DEREGISTRATION_REQUEST_TO_UE");
size = ogs_nas_5gs_encode_de_registration_type(pkbuf, &deregistration_request_to_ue->de_registration_type);
ogs_assert(size >= 0);
encoded += size;
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_5GMM_CAUSE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_5GMM_CAUSE_TYPE);
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_5GMM_CAUSE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_5GMM_CAUSE_TYPE);
ogs_assert(size >= 0);
encoded += size;
@ -886,8 +886,8 @@ 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_T3346_VALUE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_T3346_VALUE_TYPE);
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_T3346_VALUE_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_T3346_VALUE_TYPE);
ogs_assert(size >= 0);
encoded += size;
@ -896,8 +896,8 @@ 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_REJECTED_NSSAI_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_REJECTED_NSSAI_TYPE);
if (deregistration_request_to_ue->presencemask & OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_REJECTED_NSSAI_PRESENT) {
size = ogs_nas_5gs_encode_optional_type(pkbuf, OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_REJECTED_NSSAI_TYPE);
ogs_assert(size >= 0);
encoded += size;
@ -2848,12 +2848,19 @@ ogs_pkbuf_t *ogs_nas_5gmm_encode(ogs_nas_5gs_message_t *message)
ogs_assert(size >= 0);
encoded += size;
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE:
size = ogs_nas_5gs_encode_deregistration_request_from_ue(pkbuf, message);
ogs_assert(size >= 0);
encoded += size;
break;
case OGS_NAS_5GS_DEREGISTRATION_ACCEPT_FROM_UE:
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE:
size = ogs_nas_5gs_encode_deregistration_request_to_ue(pkbuf, message);
ogs_assert(size >= 0);
encoded += size;
break;
case OGS_NAS_5GS_DEREGISTRATION_ACCEPT:
case OGS_NAS_5GS_DEREGISTRATION_ACCEPT_TO_UE:
break;
case OGS_NAS_5GS_SERVICE_REQUEST:
size = ogs_nas_5gs_encode_service_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: 2022-01-22 09:24:09.032504 by acetcom
* Created on: 2022-07-11 07:09:47.151738 by ubuntu
* from 24501-g41.docx
******************************************************************************/

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: 2022-01-22 09:24:09.029942 by acetcom
* Created on: 2022-07-11 07:09:47.146947 by ubuntu
* from 24501-g41.docx
******************************************************************************/

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: 2022-01-22 09:24:09.040249 by acetcom
* Created on: 2022-07-11 07:09:47.165005 by ubuntu
* from 24501-g41.docx
******************************************************************************/
@ -72,8 +72,10 @@ typedef struct ogs_nas_5gs_security_header_s {
#define OGS_NAS_5GS_REGISTRATION_ACCEPT 66
#define OGS_NAS_5GS_REGISTRATION_COMPLETE 67
#define OGS_NAS_5GS_REGISTRATION_REJECT 68
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST 69
#define OGS_NAS_5GS_DEREGISTRATION_ACCEPT 70
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE 69
#define OGS_NAS_5GS_DEREGISTRATION_ACCEPT_FROM_UE 70
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE 71
#define OGS_NAS_5GS_DEREGISTRATION_ACCEPT_TO_UE 72
#define OGS_NAS_5GS_SERVICE_REQUEST 76
#define OGS_NAS_5GS_SERVICE_REJECT 77
#define OGS_NAS_5GS_SERVICE_ACCEPT 78
@ -396,12 +398,12 @@ typedef struct ogs_nas_5gs_deregistration_request_from_ue_s {
/*******************************************************
* DEREGISTRATION REQUEST TO UE
******************************************************/
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_5GMM_CAUSE_PRESENT ((uint64_t)1<<0)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_T3346_VALUE_PRESENT ((uint64_t)1<<1)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_REJECTED_NSSAI_PRESENT ((uint64_t)1<<2)
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_5GMM_CAUSE_TYPE 0x58
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_T3346_VALUE_TYPE 0x5F
#define OGS_NAS_5GS_DEREGISTRATION_REQUEST_REJECTED_NSSAI_TYPE 0x6D
#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_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
typedef struct ogs_nas_5gs_deregistration_request_to_ue_s {
/* Mandatory fields */

View File

@ -106,7 +106,7 @@ def usage():
print("-h Print this help and return")
def v_upper(v):
return re.sub('_TO_UE', '', re.sub('_FROM_UE', '', re.sub('\'', '_', re.sub('/', '_', re.sub('-', '_', re.sub(' ', '_', v)))).upper()))
return re.sub('\'', '_', re.sub('/', '_', re.sub('-', '_', re.sub(' ', '_', v)))).upper()
def v_lower(v):
return re.sub('\'', '_', re.sub('/', '_', re.sub('-', '_', re.sub(' ', '_', v)))).lower()
@ -550,8 +550,7 @@ typedef struct ogs_nas_5gs_security_header_s {
""")
for (k, v) in sorted_msg_list:
if k.find("TO UE") == -1:
f.write("#define OGS_NAS_5GS_" + v_upper(k) + " " + v.split('.')[0] + "\n")
f.write("#define OGS_NAS_5GS_" + v_upper(k) + " " + v.split('.')[0] + "\n")
f.write("\n")
for (k, v) in sorted_msg_list:
@ -749,7 +748,7 @@ f.write("""int ogs_nas_5gmm_decode(ogs_nas_5gs_message_t *message, ogs_pkbuf_t *
for (k, v) in sorted_msg_list:
if "ies" not in msg_list[k]:
continue;
if float(msg_list[k]["type"]) < 192 and k.find("TO UE") == -1:
if float(msg_list[k]["type"]) < 192:
f.write(" case OGS_NAS_5GS_%s:\n" % v_upper(k))
if len(msg_list[k]["ies"]) != 0:
f.write(" size = ogs_nas_5gs_decode_%s(message, pkbuf);\n" % v_lower(k))
@ -903,7 +902,7 @@ f.write("""ogs_pkbuf_t *ogs_nas_5gmm_encode(ogs_nas_5gs_message_t *message)
for (k, v) in sorted_msg_list:
if "ies" not in msg_list[k]:
continue;
if float(msg_list[k]["type"]) < 192 and k.find("FROM UE") == -1:
if float(msg_list[k]["type"]) < 192:
f.write(" case OGS_NAS_5GS_%s:\n" % v_upper(k))
if len(msg_list[k]["ies"]) != 0:
f.write(" size = ogs_nas_5gs_encode_%s(pkbuf, message);\n" % v_lower(k))

View File

@ -1475,7 +1475,7 @@ amf_ue_t *amf_ue_find_by_message(ogs_nas_5gs_message_t *message)
mobile_identity_header->type);
}
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE:
deregistration_request = &message->gmm.deregistration_request_from_ue;
ogs_assert(deregistration_request);
mobile_identity = &deregistration_request->mobile_identity;

View File

@ -271,7 +271,7 @@ ogs_pkbuf_t *gmm_build_de_registration_accept(amf_ue_t *amf_ue)
message.gmm.h.extended_protocol_discriminator =
OGS_NAS_EXTENDED_PROTOCOL_DISCRIMINATOR_5GMM;
message.gmm.h.message_type = OGS_NAS_5GS_DEREGISTRATION_ACCEPT;
message.gmm.h.message_type = OGS_NAS_5GS_DEREGISTRATION_ACCEPT_FROM_UE;
return nas_5gs_security_encode(amf_ue, &message);
}

View File

@ -679,7 +679,7 @@ int gmm_handle_deregistration_request(amf_ue_t *amf_ue,
/* Set 5GS De-registration Type */
memcpy(&amf_ue->nas.de_registration,
de_registration_type, sizeof(ogs_nas_de_registration_type_t));
amf_ue->nas.message_type = OGS_NAS_5GS_DEREGISTRATION_REQUEST;
amf_ue->nas.message_type = OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE;
amf_ue->nas.ue.tsc = de_registration_type->tsc;
amf_ue->nas.ue.ksi = de_registration_type->ksi;

View File

@ -278,7 +278,7 @@ static void common_register_state(ogs_fsm_t *s, amf_event_t *e)
OGS_FSM_TRAN(s, &gmm_state_exception);
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE:
ogs_info("[%s] Deregistration request", amf_ue->supi);
gmm_handle_deregistration_request(
@ -592,7 +592,7 @@ void gmm_state_authentication(ogs_fsm_t *s, amf_event_t *e)
OGS_FSM_TRAN(s, &gmm_state_exception);
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE:
ogs_warn("[%s] Deregistration request", amf_ue->supi);
gmm_handle_deregistration_request(
@ -837,7 +837,7 @@ void gmm_state_security_mode(ogs_fsm_t *s, amf_event_t *e)
OGS_FSM_TRAN(s, &gmm_state_exception);
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE:
ogs_warn("[%s] Deregistration request", amf_ue->supi);
gmm_handle_deregistration_request(
@ -1160,7 +1160,7 @@ void gmm_state_initial_context_setup(ogs_fsm_t *s, amf_event_t *e)
OGS_FSM_TRAN(s, &gmm_state_exception);
break;
case OGS_NAS_5GS_DEREGISTRATION_REQUEST:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE:
ogs_warn("[%s] Deregistration request", amf_ue->supi);
gmm_handle_deregistration_request(

View File

@ -408,7 +408,7 @@ ogs_pkbuf_t *testgmm_build_de_registration_request(
}
message.gmm.h.extended_protocol_discriminator =
OGS_NAS_EXTENDED_PROTOCOL_DISCRIMINATOR_5GMM;
message.gmm.h.message_type = OGS_NAS_5GS_DEREGISTRATION_REQUEST;
message.gmm.h.message_type = OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE;
de_registration_type->ksi = test_ue->nas.ksi;
de_registration_type->switch_off = switch_off;

View File

@ -44,7 +44,7 @@ ogs_pkbuf_t *test_nas_5gmm_encode(ogs_nas_5gs_message_t *message)
encoded += size;
switch(message->gmm.h.message_type) {
case OGS_NAS_5GS_DEREGISTRATION_REQUEST:
case OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE:
size = ogs_nas_5gs_encode_deregistration_request_from_ue(
pkbuf, message);
ogs_assert(size >= 0);

View File

@ -75,7 +75,7 @@ ogs_pkbuf_t *test_nas_5gs_security_encode(
message->h.extended_protocol_discriminator;
h.sequence_number = (test_ue->ul_count & 0xff);
if (message->gmm.h.message_type == OGS_NAS_5GS_DEREGISTRATION_REQUEST)
if (message->gmm.h.message_type == OGS_NAS_5GS_DEREGISTRATION_REQUEST_FROM_UE)
new = test_nas_5gs_plain_encode(message);
else
new = ogs_nas_5gs_plain_encode(message);