XNAP: Use specific MCC/MNC fields

Use the specific MCC/MNC fields for the E-CGI and NR-CGI IEs,
and the 5GSTAI IEs. Continue to use E212_NONE for all others
(including GlobalNG-RANCell-ID, which has a PLMN-Identity and
then a choice of EUTRA or NR cell identity in a way that makes
it difficult to determine if it is a ECGI or NRCGI when the
ASN.1 is processed in sequence.)
This commit is contained in:
John Thacker 2021-05-14 19:20:21 -04:00
parent 162cba438d
commit e020b44e7c
3 changed files with 169 additions and 117 deletions

View File

@ -233,6 +233,7 @@ struct xnap_private_data {
xnap_message_type message_type;
guint32 procedure_code;
guint32 protocol_ie_id;
e212_number_type_t number_type;
};
static struct xnap_private_data*

View File

@ -250,12 +250,15 @@ ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS =
#.FN_BODY PLMN-Identity VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb = NULL;
proto_tree *subtree;
struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo);
e212_number_type_t number_type = xnap_data->number_type;
xnap_data->number_type = E212_NONE;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
subtree = proto_item_add_subtree(actx->created_item, ett_xnap_PLMN_Identity);
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_NONE, FALSE);
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, number_type, FALSE);
#.TYPE_ATTR
PortNumber TYPE = FT_UINT16 DISPLAY = BASE_DEC
@ -266,6 +269,16 @@ PortNumber TYPE = FT_UINT16 DISPLAY = BASE_DEC
actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
}
#.FN_BODY TAIsinAoI-Item
struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo);
xnap_data->number_type = E212_5GSTAI;
%(DEFAULT_BODY)s
#.FN_BODY TAIforMDT-Item
struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo);
xnap_data->number_type = E212_5GSTAI;
%(DEFAULT_BODY)s
#.TYPE_ATTR
TAC TYPE = FT_UINT24 DISPLAY = BASE_DEC_HEX
#.FN_BODY TAC VAL_PTR = &parameter_tvb HF_INDEX = -1
@ -310,6 +323,16 @@ E-UTRA-CGI/e-utra-CI ABBREV=E_UTRA_Cell_Identity TYPE=FT_UINT32 DISPLAY=BASE_HEX
#.FIELD_ATTR
NG-RAN-Cell-Identity/e-utra ABBREV=E_UTRA_Cell_Identity TYPE=FT_UINT32 DISPLAY=BASE_HEX
#.FN_BODY NR-CGI
struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo);
xnap_data->number_type = E212_NRCGI;
%(DEFAULT_BODY)s
#.FN_BODY E-UTRA-CGI
struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo);
xnap_data->number_type = E212_ECGI;
%(DEFAULT_BODY)s
#.FN_BODY E-UTRA-Cell-Identity VAL_PTR = &cell_id_tvb HF_INDEX=-1
tvbuff_t *cell_id_tvb = NULL;
%(DEFAULT_BODY)s

File diff suppressed because it is too large Load Diff