diff options
Diffstat (limited to 'epan/dissectors/asn1/sbc-ap/packet-sbc-ap-template.c')
-rw-r--r-- | epan/dissectors/asn1/sbc-ap/packet-sbc-ap-template.c | 84 |
1 files changed, 80 insertions, 4 deletions
diff --git a/epan/dissectors/asn1/sbc-ap/packet-sbc-ap-template.c b/epan/dissectors/asn1/sbc-ap/packet-sbc-ap-template.c index 3a012d404b..c1aeac53c6 100644 --- a/epan/dissectors/asn1/sbc-ap/packet-sbc-ap-template.c +++ b/epan/dissectors/asn1/sbc-ap/packet-sbc-ap-template.c @@ -28,10 +28,14 @@ #include <epan/strutil.h> #include <epan/asn1.h> #include <epan/sctpppids.h> +#include <epan/proto_data.h> #include "packet-ber.h" #include "packet-per.h" #include "packet-e212.h" +#include "packet-gsm_map.h" +#include "packet-s1ap.h" +#include "packet-lte-rrc.h" #define PNAME "SBc Application Part" #define PSNAME "SBCAP" @@ -52,10 +56,22 @@ static dissector_handle_t sbc_ap_handle=NULL; /* Initialize the protocol and registered fields */ static int proto_sbc_ap = -1; +static int hf_sbc_ap_Serial_Number_gs = -1; +static int hf_sbc_ap_Serial_Number_msg_code = -1; +static int hf_sbc_ap_Serial_Number_upd_nb = -1; +static int hf_sbc_ap_Warning_Type_value = -1; +static int hf_sbc_ap_Warning_Type_emergency_user_alert = -1; +static int hf_sbc_ap_Warning_Type_popup = -1; +static int hf_sbc_ap_Warning_Message_Contents_nb_pages = -1; +static int hf_sbc_ap_Warning_Message_Contents_decoded_page = -1; #include "packet-sbc-ap-hf.c" /* Initialize the subtree pointers */ static int ett_sbc_ap = -1; +static int ett_sbc_ap_Serial_Number = -1; +static int ett_sbc_ap_Warning_Type = -1; +static int ett_sbc_ap_Data_Coding_Scheme = -1; +static int ett_sbc_ap_Warning_Message_Contents = -1; #include "packet-sbc-ap-ett.c" @@ -65,6 +81,10 @@ enum{ UNSUCCESSFUL_OUTCOME }; +struct sbc_ap_private_data { + guint8 data_coding_scheme; +}; + /* Global variables */ static guint32 ProcedureCode; static guint32 ProtocolIE_ID; @@ -84,6 +104,18 @@ static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, pro static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); + +static struct sbc_ap_private_data* +sbc_ap_get_private_data(packet_info *pinfo) +{ + struct sbc_ap_private_data *sbc_ap_data = (struct sbc_ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_sbc_ap, 0); + if (!sbc_ap_data) { + sbc_ap_data = wmem_new0(pinfo->pool, struct sbc_ap_private_data); + p_add_proto_data(pinfo->pool, pinfo, proto_sbc_ap, 0, sbc_ap_data); + } + return sbc_ap_data; +} + #include "packet-sbc-ap-fn.c" static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) @@ -146,13 +178,48 @@ void proto_register_sbc_ap(void) { /* List of fields */ static hf_register_info hf[] = { - + { &hf_sbc_ap_Serial_Number_gs, + { "Geographical Scope", "sbc_ap.SerialNumber.gs", + FT_UINT16, BASE_DEC, VALS(s1ap_serialNumber_gs_vals), 0xc000, + NULL, HFILL }}, + { &hf_sbc_ap_Serial_Number_msg_code, + { "Message Code", "sbc_ap.SerialNumber.msg_code", + FT_UINT16, BASE_DEC, NULL, 0x3ff0, + NULL, HFILL }}, + { &hf_sbc_ap_Serial_Number_upd_nb, + { "Update Number", "sbc_ap.SerialNumber.upd_nb", + FT_UINT16, BASE_DEC, NULL, 0x000f, + NULL, HFILL }}, + { &hf_sbc_ap_Warning_Type_value, + { "Warning Type Value", "sbc-ap.WarningType.value", + FT_UINT16, BASE_DEC, VALS(s1ap_warningType_vals), 0xfe00, + NULL, HFILL }}, + { &hf_sbc_ap_Warning_Type_emergency_user_alert, + { "Emergency User Alert", "sbc-ap.WarningType.emergency_user_alert", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0100, + NULL, HFILL }}, + { &hf_sbc_ap_Warning_Type_popup, + { "Popup", "sbc-ap.WarningType.popup", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080, + NULL, HFILL }}, + { &hf_sbc_ap_Warning_Message_Contents_nb_pages, + { "Number of Pages", "sbc-ap.WarningMessageContents.nb_pages", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_sbc_ap_Warning_Message_Contents_decoded_page, + { "Decoded Page", "sbc-ap.WarningMessageContents.decoded_page", + FT_STRING, STR_UNICODE, NULL, 0, + NULL, HFILL }}, #include "packet-sbc-ap-hfarr.c" }; /* List of subtrees */ static gint *ett[] = { &ett_sbc_ap, + &ett_sbc_ap_Serial_Number, + &ett_sbc_ap_Warning_Type, + &ett_sbc_ap_Data_Coding_Scheme, + &ett_sbc_ap_Warning_Message_Contents, #include "packet-sbc-ap-ettarr.c" }; @@ -201,6 +268,15 @@ proto_reg_handoff_sbc_ap(void) } - - - +/* + * Editor modelines + * + * Local Variables: + * c-basic-offset: 2 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * ex: set shiftwidth=2 tabstop=8 expandtab: + * :indentSize=2:tabSize=8:noTabs=true: + */ |