update it

This commit is contained in:
Sukchan Lee 2017-03-20 17:07:27 +09:00
parent ed0ef3bcbf
commit d2446308c8
8 changed files with 74 additions and 22 deletions

View File

@ -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;

View File

@ -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 */

View File

@ -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 */

View File

@ -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;

View File

@ -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"})

19
lib/nas/support/cache/nas_msg_66.py vendored Normal file
View File

@ -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

View File

@ -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;
}
""")

View File

@ -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;