diff options
-rw-r--r-- | asn1/s1ap/s1ap.cnf | 26 | ||||
-rw-r--r-- | epan/dissectors/packet-s1ap.c | 50 |
2 files changed, 63 insertions, 13 deletions
diff --git a/asn1/s1ap/s1ap.cnf b/asn1/s1ap/s1ap.cnf index 081b71be99..14899ef729 100644 --- a/asn1/s1ap/s1ap.cnf +++ b/asn1/s1ap/s1ap.cnf @@ -191,6 +191,32 @@ MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound") dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, FALSE); #.END +#.FN_BODY ENBname VAL_PTR = parameter_tvb + tvbuff_t *parameter_tvb=NULL; + int length; + int p_offset; + gboolean is_ascii; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + length = tvb_length(parameter_tvb); + + is_ascii = TRUE; + for (p_offset=0; p_offset < length; p_offset++){ + if(!isalpha(tvb_get_guint8(parameter_tvb, p_offset ))){ + is_ascii = FALSE; + break; + } + } + if (is_ascii) + proto_item_append_text(actx->created_item,"(%%s)",tvb_format_text(parameter_tvb, 0, length)); + +#.END + + #.FN_BODY NAS-PDU VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; diff --git a/epan/dissectors/packet-s1ap.c b/epan/dissectors/packet-s1ap.c index b2970cd1c3..bfed7c8a69 100644 --- a/epan/dissectors/packet-s1ap.c +++ b/epan/dissectors/packet-s1ap.c @@ -2819,9 +2819,33 @@ dissect_s1ap_ENB_UE_S1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_s1ap_ENBname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 195 "s1ap.cnf" + tvbuff_t *parameter_tvb=NULL; + int length; + int p_offset; + gboolean is_ascii; + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, 1, 150, TRUE); + + if (!parameter_tvb) + return offset; + + length = tvb_length(parameter_tvb); + + is_ascii = TRUE; + for (p_offset=0; p_offset < length; p_offset++){ + if(!isalpha(tvb_get_guint8(parameter_tvb, p_offset ))){ + is_ascii = FALSE; + break; + } + } + if (is_ascii) + proto_item_append_text(actx->created_item,"(%s)",tvb_format_text(parameter_tvb, 0, length)); + + + return offset; } @@ -2829,7 +2853,7 @@ dissect_s1ap_ENBname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr static int dissect_s1ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 204 "s1ap.cnf" +#line 230 "s1ap.cnf" tvbuff_t *parameter_tvb=NULL; proto_tree *subtree; gint tvb_len; @@ -3233,7 +3257,7 @@ static const value_string s1ap_HandoverType_vals[] = { static int dissect_s1ap_HandoverType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 239 "s1ap.cnf" +#line 265 "s1ap.cnf" offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 5, &handover_type_value, TRUE, 0, NULL); @@ -3438,7 +3462,7 @@ dissect_s1ap_MSClassmark3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_s1ap_NAS_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 195 "s1ap.cnf" +#line 221 "s1ap.cnf" tvbuff_t *parameter_tvb=NULL; @@ -3685,7 +3709,7 @@ dissect_s1ap_RepetitionPeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int dissect_s1ap_RRC_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 369 "s1ap.cnf" +#line 395 "s1ap.cnf" gint32 start_offset; @@ -3918,7 +3942,7 @@ dissect_s1ap_SONConfigurationTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ct static int dissect_s1ap_Source_ToTarget_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 258 "s1ap.cnf" +#line 284 "s1ap.cnf" gint32 start_offset; tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -4289,7 +4313,7 @@ dissect_s1ap_TargeteNB_ToSourceeNB_TransparentContainer(tvbuff_t *tvb _U_, int o static int dissect_s1ap_Target_ToSource_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 312 "s1ap.cnf" +#line 338 "s1ap.cnf" gint32 start_offset; tvbuff_t *parameter_tvb; @@ -4543,7 +4567,7 @@ dissect_s1ap_UEPagingID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int dissect_s1ap_UERadioCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 429 "s1ap.cnf" +#line 455 "s1ap.cnf" gint32 start_offset; tvbuff_t *parameter_tvb; @@ -4659,7 +4683,7 @@ static const per_sequence_t HandoverRequired_sequence[] = { static int dissect_s1ap_HandoverRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 244 "s1ap.cnf" +#line 270 "s1ap.cnf" handover_type_value = 0; offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -4676,7 +4700,7 @@ static const per_sequence_t HandoverCommand_sequence[] = { static int dissect_s1ap_HandoverCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 246 "s1ap.cnf" +#line 272 "s1ap.cnf" handover_type_value = 0; offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -4735,7 +4759,7 @@ static const per_sequence_t HandoverRequest_sequence[] = { static int dissect_s1ap_HandoverRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 248 "s1ap.cnf" +#line 274 "s1ap.cnf" handover_type_value = 0; @@ -5483,7 +5507,7 @@ static const per_sequence_t DownlinkNASTransport_sequence[] = { static int dissect_s1ap_DownlinkNASTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 231 "s1ap.cnf" +#line 257 "s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -5502,7 +5526,7 @@ static const per_sequence_t InitialUEMessage_sequence[] = { static int dissect_s1ap_InitialUEMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 227 "s1ap.cnf" +#line 253 "s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -5521,7 +5545,7 @@ static const per_sequence_t UplinkNASTransport_sequence[] = { static int dissect_s1ap_UplinkNASTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 235 "s1ap.cnf" +#line 261 "s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_UL; |