update it
This commit is contained in:
parent
ed0ef3bcbf
commit
d2446308c8
|
@ -9,7 +9,7 @@ c_int32_t nas_encode_attach_accept(pkbuf_t *pkbuf, nas_message_t *message)
|
|||
c_int32_t size = 0;
|
||||
c_int32_t encoded = 0;
|
||||
|
||||
size = nas_encode_attach_result(pkbuf, &attach_accept->attach_result);
|
||||
size = nas_encode_eps_attach_result(pkbuf, &attach_accept->eps_attach_result);
|
||||
d_assert(size >= 0, return encoded, "decode failed");
|
||||
encoded += size;
|
||||
|
||||
|
|
|
@ -344,17 +344,17 @@ c_int32_t nas_decode_emm_cause(nas_emm_cause_t *emm_cause, pkbuf_t *pkbuf)
|
|||
|
||||
/* 9.9.3.10 * EPS attach result
|
||||
* M V 1/2 */
|
||||
c_int32_t nas_encode_attach_result(
|
||||
pkbuf_t *pkbuf, nas_attach_result_t *attach_result)
|
||||
c_int32_t nas_encode_eps_attach_result(
|
||||
pkbuf_t *pkbuf, nas_eps_attach_result_t *eps_attach_result)
|
||||
{
|
||||
c_uint16_t size = 0;
|
||||
|
||||
d_assert(attach_result, return -1, "Null param");
|
||||
d_assert(eps_attach_result, return -1, "Null param");
|
||||
|
||||
size = sizeof(nas_attach_result_t);
|
||||
size = sizeof(nas_eps_attach_result_t);
|
||||
d_assert(pkbuf_header(pkbuf, -size) == CORE_OK,
|
||||
return -1, "pkbuf_header error");
|
||||
memcpy(pkbuf->payload - size, attach_result, size);
|
||||
memcpy(pkbuf->payload - size, eps_attach_result, size);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
@ -853,6 +853,27 @@ c_int32_t nas_encode_ue_security_capability(
|
|||
return size;
|
||||
}
|
||||
|
||||
/* TODO : 9.9.3.37 Emergency number list
|
||||
* See subclause 10.5.3.13 in 3GPP TS 24.008 [13].
|
||||
* O TLV 5-50 */
|
||||
c_int32_t nas_encode_emergency_number_list(
|
||||
pkbuf_t *pkbuf, nas_emergency_number_list_t *emergency_number_list)
|
||||
{
|
||||
c_uint16_t size = 0;
|
||||
nas_emergency_number_list_t target;
|
||||
|
||||
d_assert(emergency_number_list, return -1, "Null param");
|
||||
memcpy(&target, emergency_number_list, sizeof(nas_emergency_number_list_t));
|
||||
|
||||
size = emergency_number_list->length + sizeof(emergency_number_list->length);
|
||||
d_assert(pkbuf_header(pkbuf, -size) == CORE_OK,
|
||||
return -1, "pkbuf_header error");
|
||||
|
||||
memcpy(pkbuf->payload - size, &target, size);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
/* 9.9.3.44 Voice domain preference and UE's usage setting
|
||||
* See subclause 10.5.5.28 in 3GPP TS 24.008 [13].
|
||||
* O TLV 3 */
|
||||
|
|
|
@ -342,13 +342,13 @@ CORE_DECLARE(c_int32_t) nas_decode_emm_cause(
|
|||
* M V 1/2 */
|
||||
#define NAS_ATTACH_RESULT_EPS_ONLY 1
|
||||
#define NAS_ATTACH_RESULT_COMBINED_EPS_IMSI_ATTACH 2
|
||||
typedef struct _nas_attach_result_t {
|
||||
typedef struct _nas_eps_attach_result_t {
|
||||
ED2(c_uint8_t spare:5;,
|
||||
c_uint8_t result:3;)
|
||||
} __attribute__ ((packed)) nas_attach_result_t;
|
||||
} __attribute__ ((packed)) nas_eps_attach_result_t;
|
||||
|
||||
CORE_DECLARE(c_int32_t) nas_encode_attach_result(
|
||||
pkbuf_t *pkbuf, nas_attach_result_t *attach_result);
|
||||
CORE_DECLARE(c_int32_t) nas_encode_eps_attach_result(
|
||||
pkbuf_t *pkbuf, nas_eps_attach_result_t *eps_attach_result);
|
||||
|
||||
/* 9.9.3.11 EPS attach type
|
||||
* M V 1/2
|
||||
|
@ -839,6 +839,17 @@ typedef struct _nas_ue_security_capability_t {
|
|||
CORE_DECLARE(c_int32_t) nas_encode_ue_security_capability(
|
||||
pkbuf_t *pkbuf, nas_ue_security_capability_t *ue_security_capability);
|
||||
|
||||
/* TODO : 9.9.3.37 Emergency number list
|
||||
* See subclause 10.5.3.13 in 3GPP TS 24.008 [13].
|
||||
* O TLV 5-50 */
|
||||
typedef struct _nas_emergency_number_list_t {
|
||||
c_uint16_t length;
|
||||
c_uint8_t todo[48];
|
||||
} __attribute__ ((packed)) nas_emergency_number_list_t;
|
||||
|
||||
CORE_DECLARE(c_int32_t) nas_encode_emergency_number_list(
|
||||
pkbuf_t *pkbuf, nas_emergency_number_list_t *emergency_number_list);
|
||||
|
||||
/* 9.9.3.44 Voice domain preference and UE's usage setting
|
||||
* See subclause 10.5.5.28 in 3GPP TS 24.008 [13].
|
||||
* O TLV 3 */
|
||||
|
|
|
@ -123,7 +123,7 @@ ED2(c_uint8_t security_header_type:4;,
|
|||
|
||||
typedef struct _nas_attach_accept_t {
|
||||
/* Mandatory fields */
|
||||
nas_attach_result_t attach_result;
|
||||
nas_eps_attach_result_t eps_attach_result;
|
||||
nas_gprs_timer_t t3412_value;
|
||||
nas_tracking_area_identity_list_t tai_list;
|
||||
nas_esm_message_container_t esm_message_container;
|
||||
|
@ -138,10 +138,7 @@ typedef struct _nas_attach_accept_t {
|
|||
nas_gprs_timer_t t3423_value;
|
||||
nas_plmn_list_t equivalent_plmns;
|
||||
|
||||
/* 9.9.3.37 Emergency number list
|
||||
* See subclause 10.5.3.13 in 3GPP TS 24.008 [13].
|
||||
* O TLV 5-50
|
||||
nas_emergency_number_list_t emergency_number_list; */
|
||||
nas_emergency_number_list_t emergency_number_list;
|
||||
nas_eps_network_feature_support_t eps_network_feature_support;
|
||||
nas_additional_update_result_t additional_update_result;
|
||||
nas_gprs_timer_3_t t3412_extended_value;
|
||||
|
|
|
@ -14,7 +14,7 @@ ies.append({ "iei" : "11", "value" : "Mobile station classmark 2", "type" : "Mob
|
|||
ies.append({ "iei" : "20", "value" : "Mobile station classmark 3", "type" : "Mobile station classmark 3", "reference" : "Mobile station classmark 39.9.2.5", "presence" : "O", "format" : "TLV", "length" : "2-34"})
|
||||
ies.append({ "iei" : "40", "value" : "Supported Codecs", "type" : "Supported Codec List", "reference" : "9.9.2.10", "presence" : "O", "format" : "TLV", "length" : "5-n"})
|
||||
ies.append({ "iei" : "F-", "value" : "Additional update type", "type" : "Additional update type", "reference" : "9.9.3.0B", "presence" : "O", "format" : "TV", "length" : "1"})
|
||||
ies.append({ "iei" : "5D", "value" : "Voice domain preference and UE's usage setting", "type" : "Voice domain preference and UE usage setting", "reference" : "Voice domain preference and UE'9.9.3.44", "presence" : "O", "format" : "TLV", "length" : "3"})
|
||||
ies.append({ "iei" : "5D", "value" : "Voice domain preference and UE usage setting", "type" : "Voice domain preference and UE usage setting", "reference" : "Voice domain preference and UE'9.9.3.44", "presence" : "O", "format" : "TLV", "length" : "3"})
|
||||
ies.append({ "iei" : "D-", "value" : "Device properties", "type" : "Device properties", "reference" : "9.9.2.0A", "presence" : "O", "format" : "TV", "length" : "1"})
|
||||
ies.append({ "iei" : "E-", "value" : "Old GUTI type", "type" : "GUTI type", "reference" : "9.9.3.45", "presence" : "O", "format" : "TV", "length" : "1"})
|
||||
ies.append({ "iei" : "C- ", "value" : "MS network feature support", "type" : "MS network feature support", "reference" : "9.9.3.20A", "presence" : "O", "format" : "TV", "length" : "1"})
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
ies = []
|
||||
ies.append({ "iei" : "", "value" : "EPS attach result", "type" : "EPS attach result", "reference" : "9.9.3.10", "presence" : "M", "format" : "V", "length" : "1/2"})
|
||||
ies.append({ "iei" : "", "value" : "T3412 value", "type" : "GPRS timer", "reference" : "9.9.3.16", "presence" : "M", "format" : "V", "length" : "1"})
|
||||
ies.append({ "iei" : "", "value" : "TAI list", "type" : "Tracking area identity list", "reference" : "9.9.3.33", "presence" : "M", "format" : "LV", "length" : "7-97"})
|
||||
ies.append({ "iei" : "", "value" : "ESM message container", "type" : "ESM message container", "reference" : "9.9.3.15", "presence" : "M", "format" : "LV-E", "length" : "5-n"})
|
||||
ies.append({ "iei" : "50", "value" : "GUTI", "type" : "EPS mobile identity", "reference" : "9.9.3.12", "presence" : "O", "format" : "TLV", "length" : "13"})
|
||||
ies.append({ "iei" : "13", "value" : "Location area identification", "type" : "Location area identification", "reference" : "9.9.2.2", "presence" : "O", "format" : "TV", "length" : "6"})
|
||||
ies.append({ "iei" : "23", "value" : "MS identity", "type" : "Mobile identity", "reference" : "9.9.2.3", "presence" : "O", "format" : "TLV", "length" : "7-10"})
|
||||
ies.append({ "iei" : "53", "value" : "EMM cause", "type" : "EMM cause", "reference" : "9.9.3.9", "presence" : "O", "format" : "TV", "length" : "2"})
|
||||
ies.append({ "iei" : "17", "value" : "T3402 value", "type" : "GPRS timer", "reference" : "9.9.3.16", "presence" : "O", "format" : "TV", "length" : "2"})
|
||||
ies.append({ "iei" : "59", "value" : "T3423 value", "type" : "GPRS timer", "reference" : "9.9.3.16", "presence" : "O", "format" : "TV", "length" : "2"})
|
||||
ies.append({ "iei" : "4A", "value" : "Equivalent PLMNs", "type" : "PLMN list", "reference" : "9.9.2.8", "presence" : "O", "format" : "TLV", "length" : "5-47"})
|
||||
ies.append({ "iei" : "34", "value" : "Emergency number list", "type" : "Emergency number list", "reference" : "9.9.3.37", "presence" : "O", "format" : "TLV", "length" : "5-50"})
|
||||
ies.append({ "iei" : "64", "value" : "EPS network feature support", "type" : "EPS network feature support", "reference" : "9.9.3.12A", "presence" : "O", "format" : "TLV", "length" : "3"})
|
||||
ies.append({ "iei" : "F-", "value" : "Additional update result", "type" : "Additional update result", "reference" : "9.9.3.0A", "presence" : "O", "format" : "TV", "length" : "1"})
|
||||
ies.append({ "iei" : "5E", "value" : "T3412 extended value", "type" : "GPRS timer 3", "reference" : "GPRS timer 39.9.3.16B", "presence" : "O", "format" : "TLV", "length" : "3"})
|
||||
ies.append({ "iei" : "6A", "value" : "T3324 value", "type" : "GPRS timer 2", "reference" : "GPRS timer 29.9.3.16A", "presence" : "O", "format" : "TLV", "length" : "3"})
|
||||
ies.append({ "iei" : "6E", "value" : "Extended DRX parameters", "type" : "Extended DRX parameters", "reference" : "9.9.3.46", "presence" : "O", "format" : "TLV", "length" : "3"})
|
||||
msg_list[key]["ies"] = ies
|
|
@ -109,7 +109,7 @@ def v_lower(v):
|
|||
|
||||
def get_cells(cells):
|
||||
iei = cells[0].text.encode('ascii', 'ignore')
|
||||
value = cells[1].text.encode('ascii', 'ignore')
|
||||
value = re.sub("'s", "", cells[1].text).encode('ascii', 'ignore')
|
||||
type = re.sub("'s", "", re.sub('\s*\n\s*[a-zA-Z0-9.]*', '', cells[2].text)).encode('ascii', 'ignore')
|
||||
reference = re.sub('[a-zA-Z\s]*\n\s*', '', cells[2].text).encode('ascii', 'ignore')
|
||||
presence = cells[3].text.encode('ascii', 'ignore')
|
||||
|
@ -207,6 +207,7 @@ msg_list["ESM INFORMATION RESPONSE"] = { "type" : "218" }
|
|||
msg_list["ESM STATUS"] = { "type" : "232" }
|
||||
|
||||
# Table number for Message List
|
||||
msg_list["ATTACH ACCEPT"]["table"] = 8
|
||||
msg_list["ATTACH REQUEST"]["table"] = 11
|
||||
|
||||
for key in msg_list.keys():
|
||||
|
@ -477,15 +478,18 @@ for (k, v) in sorted_msg_list:
|
|||
for ie in [ies for ies in msg_list[k]["ies"] if ies["presence"] == "O"]:
|
||||
f.write(" if (%s->presencemask & NAS_%s_%s_PRESENT)\n" % (v_lower(k), v_upper(k), v_upper(ie["value"])))
|
||||
f.write(" {\n")
|
||||
f.write(" size = nas_encode_optional_type(pkbuf, NAS_%s_%s_TYPE);\n" % (v_upper(k), v_upper(ie["value"])))
|
||||
f.write(" d_assert(size >= 0, return encoded, \"decode failed\");\n")
|
||||
f.write(" encoded += size;\n\n")
|
||||
if ie["length"] == "1" and ie["format"] == "TV":
|
||||
f.write(" %s->%s.type = (NAS_%s_%s_TYPE >> 4);\n\n" % (v_lower(k), v_lower(ie["value"]), v_upper(k), v_upper(ie["value"])))
|
||||
else:
|
||||
f.write(" size = nas_encode_optional_type(pkbuf, NAS_%s_%s_TYPE);\n" % (v_upper(k), v_upper(ie["value"])))
|
||||
f.write(" d_assert(size >= 0, return encoded, \"decode failed\");\n")
|
||||
f.write(" encoded += size;\n\n")
|
||||
f.write(" size = nas_encode_%s(pkbuf, &%s->%s);\n" % (v_lower(ie["type"]), v_lower(k), v_lower(ie["value"])))
|
||||
f.write(" d_assert(size >= 0, return encoded, \"decode failed\");\n")
|
||||
f.write(" encoded += size;\n")
|
||||
f.write(" }\n\n")
|
||||
|
||||
f.write(""" return decoded;
|
||||
f.write(""" return encoded;
|
||||
}
|
||||
""")
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ static void nas_message_test2(abts_case *tc, void *data)
|
|||
memset(&message, 0, sizeof(message));
|
||||
message.h.protocol_discriminator = NAS_PROTOCOL_DISCRIMINATOR_EMM;
|
||||
message.h.message_type = NAS_ATTACH_ACCEPT;
|
||||
attach_accept->attach_result.result =
|
||||
attach_accept->eps_attach_result.result =
|
||||
NAS_ATTACH_RESULT_COMBINED_EPS_IMSI_ATTACH;
|
||||
attach_accept->t3412_value.unit =
|
||||
NAS_GRPS_TIMER_UNIT_MULTIPLES_OF_1_MM;
|
||||
|
|
Loading…
Reference in New Issue