Finally got it to complie.
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Wed, 4 Oct 2006 16:02:59 +0000 (16:02 +0000)
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Wed, 4 Oct 2006 16:02:59 +0000 (16:02 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@19427 f5534014-38df-0310-8fa8-9805f1628bb7

Makefile.common
asn1/camel/packet-camel-template.c
epan/Makefile.common
epan/camel-persistentdata.h
epan/dissectors/packet-camel.c
epan/libwireshark.def
gtk/Makefile.common

index 429237bde1ed6a988597f221c83d7f1639c2f17e..f61ca9c28488dc40cdea81d0c35f8664cf465e58 100644 (file)
@@ -97,6 +97,8 @@ TSHARK_TAP_SRC =      \
        tap-afpstat.c   \
        tap-ansi_astat.c        \
        tap-bootpstat.c \
+       tap-camelcounter.c      \
+       tap-camelsrt.c  \
        tap-dcerpcstat.c        \
        tap-funnel.c \
        tap-gsm_astat.c \
index 432f7a11a5b996a5bd0a0cc6d14cbb7e12ba7b0d..053cec07509262eed1e46e5af0604d1eeff47fca 100644 (file)
@@ -54,6 +54,8 @@
 #include "packet-gsm_map.h"
 #include "packet-gsm_a.h"
 #include "packet-tcap.h"
+#include "epan/camel-persistentdata.h"
+#include "epan/tcap-persistentdata.h"
 
 #define PNAME  "Camel"
 #define PSNAME "CAMEL"
@@ -62,6 +64,8 @@
 /* Initialize the protocol and registered fields */
 int proto_camel = -1;
 int date_format = 1; /*assume european date format */
+int camel_tap = -1;
+
 static int hf_digit = -1; 
 static int hf_camel_invokeCmd = -1;             /* Opcode */
 static int hf_camel_invokeid = -1;              /* INTEGER */
@@ -89,8 +93,29 @@ static int hf_camel_PDPAddress_IPv6 = -1;
 static int hf_camel_cellGlobalIdOrServiceAreaIdFixedLength = -1;
 static int hf_camel_RP_Cause = -1;
 
+/* Used by camel-persistentdata.c */
+int hf_camelsrt_SessionId=-1;
+int hf_camelsrt_RequestNumber=-1;
+int hf_camelsrt_Duplicate=-1;
+int hf_camelsrt_RequestFrame=-1;
+int hf_camelsrt_ResponseFrame=-1;
+int hf_camelsrt_DeltaTime=-1;
+int hf_camelsrt_SessionTime=-1;
+int hf_camelsrt_DeltaTime31=-1;
+int hf_camelsrt_DeltaTime75=-1;
+int hf_camelsrt_DeltaTime65=-1;
+int hf_camelsrt_DeltaTime22=-1;
+int hf_camelsrt_DeltaTime35=-1;
+int hf_camelsrt_DeltaTime80=-1;
+
+static struct camelsrt_info_t * gp_camelsrt_info;
+
 #include "packet-camel-hf.c"
 
+gboolean gcamel_HandleSRT=FALSE;
+extern gboolean gcamel_PersistentSRT;
+extern gboolean gcamel_DisplaySRT;
+
 /* Initialize the subtree pointers */
 static gint ett_camel = -1;
 static gint ett_camel_InvokeId = -1;
@@ -105,6 +130,7 @@ static gint ett_camel_MSRadioAccessCapability = -1;
 static gint ett_camel_MSNetworkCapability = -1;
 static gint ett_camel_AccessPointName = -1;
 static gint ett_camel_pdptypenumber = -1;
+static gint ett_camel_stat = -1;
 
 #include "packet-camel-ett.c"
 
@@ -323,6 +349,7 @@ static guint32 opcode=0;
 static int
 dissect_camel_Opcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
   offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_index, &opcode);
+  gp_camelsrt_info->opcode=opcode;
 
   if (check_col(pinfo->cinfo, COL_INFO)){
     /* Add Camel Opcode to INFO column */
@@ -670,6 +697,10 @@ dissect_camel_camelPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pac
       if (version_ptr)
        application_context_version = atoi(version_ptr+1);
     }
+    gp_camelsrt_info->tcap_context=p_private_tcap->context; 
+    if (p_private_tcap->context)
+      gp_camelsrt_info->tcap_session_id
+       = ( (struct tcaphash_context_t *) (p_private_tcap->context))->session_id;
   }
 
   camel_pdu_type = tvb_get_guint8(tvb, offset)&0x0f;
@@ -692,6 +723,8 @@ dissect_camel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
 {
   proto_item    *item=NULL;
   proto_tree    *tree=NULL;
+  proto_item  *stat_item=NULL;
+  proto_tree  *stat_tree=NULL;
 
   if (check_col(pinfo->cinfo, COL_PROTOCOL)) {
     col_set_str(pinfo->cinfo, COL_PROTOCOL, "Camel");
@@ -702,9 +735,21 @@ dissect_camel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
      item = proto_tree_add_item(parent_tree, proto_camel, tvb, 0, -1, FALSE);
      tree = proto_item_add_subtree(item, ett_camel);
   }
-
+  /* camelsrt reset counter, and initialise global pointer
+     to store service response time related data */
+  gp_camelsrt_info=camelsrt_razinfo();
   dissect_camel_camelPDU(FALSE, tvb, 0, pinfo, tree, -1);
-
+  
+  /* If a Tcap context is associated to this transaction */
+  if (gcamel_HandleSRT &&
+      gp_camelsrt_info->tcap_context ) {
+    if (gcamel_DisplaySRT && tree) {
+      stat_item = proto_tree_add_text(tree, tvb, 0, 0, "Stat");
+      stat_tree = proto_item_add_subtree(stat_item, ett_camel_stat);
+    }
+    camelsrt_call_matching(tvb, pinfo, stat_tree, gp_camelsrt_info);
+    tap_queue_packet(camel_tap, pinfo, gp_camelsrt_info);
+  }
 }
 
 /*--- proto_reg_handoff_camel ---------------------------------------*/
@@ -729,6 +774,7 @@ void proto_reg_handoff_camel(void) {
     camel_prefs_initialized = TRUE;
     camel_handle = create_dissector_handle(dissect_camel, proto_camel);
 
+    register_ber_oid_dissector_handle("0.4.0.0.1.0.50.0",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-gsmssf-to-gsmscf(50) version1(0)" );
     register_ber_oid_dissector_handle("0.4.0.0.1.0.50.1",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-gsmssf-to-gsmscf(50) version2(1)" );
     register_ber_oid_dissector_handle("0.4.0.0.1.0.51.1",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-assist-handoff-gsmssf-to-gsmscf(51) version2(1)" );
     register_ber_oid_dissector_handle("0.4.0.0.1.0.52.1",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-gsmSRF-to-gsmscf(52) version2(1)" );
@@ -832,6 +878,86 @@ void proto_register_camel(void) {
       FT_UINT8, BASE_DEC, NULL, 0,
        "RP Cause Value", HFILL }},
 
+  /* Camel Service Response Time */
+    { &hf_camelsrt_SessionId,
+      { "Session Id",
+        "camel.srt.session_id",
+        FT_UINT32, BASE_DEC, NULL, 0x0,
+        "", HFILL }
+    },
+    { &hf_camelsrt_RequestNumber,
+      { "Request Number",
+        "camel.srt.request_number",
+        FT_UINT64, BASE_DEC, NULL, 0x0,
+        "", HFILL }
+    },
+    { &hf_camelsrt_Duplicate,
+      { "Request Duplicate",
+        "camel.srt.duplicate",
+        FT_UINT32, BASE_DEC, NULL, 0x0,
+        "", HFILL }
+    },
+    { &hf_camelsrt_RequestFrame,
+      { "Requested Frame",
+        "camel.srt.reqframe",
+        FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+        "SRT Request Frame", HFILL }
+    },
+    { &hf_camelsrt_ResponseFrame,
+      { "Response Frame",
+        "camel.srt.rspframe",
+        FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+        "SRT Response Frame", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime,
+      { "Service Response Time",
+        "camel.srt.deltatime",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between Request and Response", HFILL }
+    },
+    { &hf_camelsrt_SessionTime,
+      { "Session duration",
+        "camel.srt.sessiontime",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "Duration of the TCAP session", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime31,
+      { "Service Response Time",
+        "camel.srt.deltatime31",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between InitialDP and Continue", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime65,
+      { "Service Response Time",
+        "camel.srt.deltatime65",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between InitialDPSMS and ContinueSMS", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime75,
+      { "Service Response Time",
+        "camel.srt.deltatime75",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between InitialDPGPRS and ContinueGPRS", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime35,
+      { "Service Response Time",
+        "camel.srt.deltatime35",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between ApplyCharginReport and ApplyCharging", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime22,
+      { "Service Response Time",
+        "camel.srt.deltatime22",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between EventReport(Disconnect) and Release Call", HFILL }
+    },
+  { &hf_camelsrt_DeltaTime80,
+      { "Service Response Time",
+        "camel.srt.deltatime80",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between EventReportGPRS and ContinueGPRS", HFILL }
+    },
+
 #ifdef REMOVED
 #endif
 #include "packet-camel-hfarr.c"
@@ -852,6 +978,8 @@ void proto_register_camel(void) {
        &ett_camel_MSNetworkCapability,
        &ett_camel_AccessPointName,
        &ett_camel_pdptypenumber,
+    &ett_camel_stat,
+
 #include "packet-camel-ettarr.c"
   };
   /* Register protocol */
@@ -876,5 +1004,19 @@ void proto_register_camel(void) {
     "TCAP SSNs",
     "TCAP Subsystem numbers used for Camel",
     &global_ssn_range, MAX_SSN);
+
+  prefs_register_bool_preference(camel_module, "srt",
+                                "Service Response Time Analyse",
+                                "Activate the analyse for Response Time",
+                                &gcamel_HandleSRT);
+
+  prefs_register_bool_preference(camel_module, "persistentsrt",
+                                "Persistent stats for SRT",
+                                "Statistics for Response Time",
+                                &gcamel_PersistentSRT);
+  
+  /* Routine for statistic */ 
+  register_init_routine(&camelsrt_init_routine);
+  camel_tap=register_tap(PSNAME);
 }
 
index 0eb3b6ac45977097aec3e9b68e18ff308379ac46..ae4c574a8070c021cf53f7ee2eb93bba95cbc293 100644 (file)
@@ -32,6 +32,7 @@ LIBWIRESHARK_SRC =            \
        atalk-utils.c           \
        base64.c                \
        bitswap.c               \
+       camel-persistentdata.c  \
        charsets.c              \
        circuit.c               \
        column.c                \
@@ -108,6 +109,7 @@ LIBWIRESHARK_INCLUDES =     \
        base64.h                \
        bitswap.h               \
        bridged_pids.h          \
+       camel-persistentdata.h  \
        charsets.h              \
        chdlctypes.h            \
        circuit.h               \
index 518766f52c43c7f40db7f7b7d16a83b8d1a1c676..37e866fdd41e009afc9dbd7f720e92e62d56ee8b 100644 (file)
@@ -48,7 +48,7 @@
 \r
 #define CAMELSRT_SMS_INITIALDP 9\r
 \r
-extern const value_string  camelSRTtype_naming[];\r
+WS_VAR_IMPORT const value_string  camelSRTtype_naming[];\r
 \r
 /* If we have a request message and its response,\r
    (eg: ApplyCharging, ApplyChargingReport)\r
index 0227681f8c5287911492a5db836b2eca417e9cfa..8e57c375f664de0b84a63fc4fb3208bdaf3db380 100644 (file)
@@ -62,6 +62,8 @@
 #include "packet-gsm_map.h"
 #include "packet-gsm_a.h"
 #include "packet-tcap.h"
+#include "epan/camel-persistentdata.h"
+#include "epan/tcap-persistentdata.h"
 
 #define PNAME  "Camel"
 #define PSNAME "CAMEL"
@@ -70,6 +72,8 @@
 /* Initialize the protocol and registered fields */
 int proto_camel = -1;
 int date_format = 1; /*assume european date format */
+int camel_tap = -1;
+
 static int hf_digit = -1; 
 static int hf_camel_invokeCmd = -1;             /* Opcode */
 static int hf_camel_invokeid = -1;              /* INTEGER */
@@ -97,6 +101,23 @@ static int hf_camel_PDPAddress_IPv6 = -1;
 static int hf_camel_cellGlobalIdOrServiceAreaIdFixedLength = -1;
 static int hf_camel_RP_Cause = -1;
 
+/* Used by camel-persistentdata.c */
+int hf_camelsrt_SessionId=-1;
+int hf_camelsrt_RequestNumber=-1;
+int hf_camelsrt_Duplicate=-1;
+int hf_camelsrt_RequestFrame=-1;
+int hf_camelsrt_ResponseFrame=-1;
+int hf_camelsrt_DeltaTime=-1;
+int hf_camelsrt_SessionTime=-1;
+int hf_camelsrt_DeltaTime31=-1;
+int hf_camelsrt_DeltaTime75=-1;
+int hf_camelsrt_DeltaTime65=-1;
+int hf_camelsrt_DeltaTime22=-1;
+int hf_camelsrt_DeltaTime35=-1;
+int hf_camelsrt_DeltaTime80=-1;
+
+static struct camelsrt_info_t * gp_camelsrt_info;
+
 
 /*--- Included file: packet-camel-hf.c ---*/
 #line 1 "packet-camel-hf.c"
@@ -583,7 +604,11 @@ static int hf_camel_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP =
 static int hf_camel_OfferedCamel4Functionalities_serviceChangeDP = -1;
 
 /*--- End of included file: packet-camel-hf.c ---*/
-#line 93 "packet-camel-template.c"
+#line 114 "packet-camel-template.c"
+
+gboolean gcamel_HandleSRT=FALSE;
+extern gboolean gcamel_PersistentSRT;
+extern gboolean gcamel_DisplaySRT;
 
 /* Initialize the subtree pointers */
 static gint ett_camel = -1;
@@ -599,6 +624,7 @@ static gint ett_camel_MSRadioAccessCapability = -1;
 static gint ett_camel_MSNetworkCapability = -1;
 static gint ett_camel_AccessPointName = -1;
 static gint ett_camel_pdptypenumber = -1;
+static gint ett_camel_stat = -1;
 
 
 /*--- Included file: packet-camel-ett.c ---*/
@@ -810,7 +836,7 @@ static gint ett_camel_ResetTimerGPRSArg = -1;
 static gint ett_camel_CancelFailedPARAM = -1;
 
 /*--- End of included file: packet-camel-ett.c ---*/
-#line 110 "packet-camel-template.c"
+#line 136 "packet-camel-template.c"
 
 
 /* Preference settings default */
@@ -8013,7 +8039,7 @@ dissect_camel_TaskRefusedPARAM(gboolean implicit_tag _U_, tvbuff_t *tvb, int off
 
 
 /*--- End of included file: packet-camel-fn.c ---*/
-#line 218 "packet-camel-template.c"
+#line 244 "packet-camel-template.c"
 
 const value_string camel_opr_code_strings[] = {
 
@@ -8122,6 +8148,7 @@ static guint32 opcode=0;
 static int
 dissect_camel_Opcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
   offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_index, &opcode);
+  gp_camelsrt_info->opcode=opcode;
 
   if (check_col(pinfo->cinfo, COL_INFO)){
     /* Add Camel Opcode to INFO column */
@@ -8469,6 +8496,10 @@ dissect_camel_camelPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pac
       if (version_ptr)
        application_context_version = atoi(version_ptr+1);
     }
+    gp_camelsrt_info->tcap_context=p_private_tcap->context; 
+    if (p_private_tcap->context)
+      gp_camelsrt_info->tcap_session_id
+       = ( (struct tcaphash_context_t *) (p_private_tcap->context))->session_id;
   }
 
   camel_pdu_type = tvb_get_guint8(tvb, offset)&0x0f;
@@ -8491,6 +8522,8 @@ dissect_camel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
 {
   proto_item    *item=NULL;
   proto_tree    *tree=NULL;
+  proto_item  *stat_item=NULL;
+  proto_tree  *stat_tree=NULL;
 
   if (check_col(pinfo->cinfo, COL_PROTOCOL)) {
     col_set_str(pinfo->cinfo, COL_PROTOCOL, "Camel");
@@ -8501,9 +8534,21 @@ dissect_camel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
      item = proto_tree_add_item(parent_tree, proto_camel, tvb, 0, -1, FALSE);
      tree = proto_item_add_subtree(item, ett_camel);
   }
-
+  /* camelsrt reset counter, and initialise global pointer
+     to store service response time related data */
+  gp_camelsrt_info=camelsrt_razinfo();
   dissect_camel_camelPDU(FALSE, tvb, 0, pinfo, tree, -1);
-
+  
+  /* If a Tcap context is associated to this transaction */
+  if (gcamel_HandleSRT &&
+      gp_camelsrt_info->tcap_context ) {
+    if (gcamel_DisplaySRT && tree) {
+      stat_item = proto_tree_add_text(tree, tvb, 0, 0, "Stat");
+      stat_tree = proto_item_add_subtree(stat_item, ett_camel_stat);
+    }
+    camelsrt_call_matching(tvb, pinfo, stat_tree, gp_camelsrt_info);
+    tap_queue_packet(camel_tap, pinfo, gp_camelsrt_info);
+  }
 }
 
 /*--- proto_reg_handoff_camel ---------------------------------------*/
@@ -8528,6 +8573,7 @@ void proto_reg_handoff_camel(void) {
     camel_prefs_initialized = TRUE;
     camel_handle = create_dissector_handle(dissect_camel, proto_camel);
 
+    register_ber_oid_dissector_handle("0.4.0.0.1.0.50.0",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-gsmssf-to-gsmscf(50) version1(0)" );
     register_ber_oid_dissector_handle("0.4.0.0.1.0.50.1",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-gsmssf-to-gsmscf(50) version2(1)" );
     register_ber_oid_dissector_handle("0.4.0.0.1.0.51.1",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-assist-handoff-gsmssf-to-gsmscf(51) version2(1)" );
     register_ber_oid_dissector_handle("0.4.0.0.1.0.52.1",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-gsmSRF-to-gsmscf(52) version2(1)" );
@@ -8631,6 +8677,86 @@ void proto_register_camel(void) {
       FT_UINT8, BASE_DEC, NULL, 0,
        "RP Cause Value", HFILL }},
 
+  /* Camel Service Response Time */
+    { &hf_camelsrt_SessionId,
+      { "Session Id",
+        "camel.srt.session_id",
+        FT_UINT32, BASE_DEC, NULL, 0x0,
+        "", HFILL }
+    },
+    { &hf_camelsrt_RequestNumber,
+      { "Request Number",
+        "camel.srt.request_number",
+        FT_UINT64, BASE_DEC, NULL, 0x0,
+        "", HFILL }
+    },
+    { &hf_camelsrt_Duplicate,
+      { "Request Duplicate",
+        "camel.srt.duplicate",
+        FT_UINT32, BASE_DEC, NULL, 0x0,
+        "", HFILL }
+    },
+    { &hf_camelsrt_RequestFrame,
+      { "Requested Frame",
+        "camel.srt.reqframe",
+        FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+        "SRT Request Frame", HFILL }
+    },
+    { &hf_camelsrt_ResponseFrame,
+      { "Response Frame",
+        "camel.srt.rspframe",
+        FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+        "SRT Response Frame", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime,
+      { "Service Response Time",
+        "camel.srt.deltatime",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between Request and Response", HFILL }
+    },
+    { &hf_camelsrt_SessionTime,
+      { "Session duration",
+        "camel.srt.sessiontime",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "Duration of the TCAP session", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime31,
+      { "Service Response Time",
+        "camel.srt.deltatime31",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between InitialDP and Continue", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime65,
+      { "Service Response Time",
+        "camel.srt.deltatime65",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between InitialDPSMS and ContinueSMS", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime75,
+      { "Service Response Time",
+        "camel.srt.deltatime75",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between InitialDPGPRS and ContinueGPRS", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime35,
+      { "Service Response Time",
+        "camel.srt.deltatime35",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between ApplyCharginReport and ApplyCharging", HFILL }
+    },
+    { &hf_camelsrt_DeltaTime22,
+      { "Service Response Time",
+        "camel.srt.deltatime22",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between EventReport(Disconnect) and Release Call", HFILL }
+    },
+  { &hf_camelsrt_DeltaTime80,
+      { "Service Response Time",
+        "camel.srt.deltatime80",
+        FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+        "DeltaTime between EventReportGPRS and ContinueGPRS", HFILL }
+    },
+
 #ifdef REMOVED
 #endif
 
@@ -10558,7 +10684,7 @@ void proto_register_camel(void) {
         "", HFILL }},
 
 /*--- End of included file: packet-camel-hfarr.c ---*/
-#line 838 "packet-camel-template.c"
+#line 964 "packet-camel-template.c"
   };
 
   /* List of subtrees */
@@ -10576,6 +10702,8 @@ void proto_register_camel(void) {
        &ett_camel_MSNetworkCapability,
        &ett_camel_AccessPointName,
        &ett_camel_pdptypenumber,
+    &ett_camel_stat,
+
 
 /*--- Included file: packet-camel-ettarr.c ---*/
 #line 1 "packet-camel-ettarr.c"
@@ -10786,7 +10914,7 @@ void proto_register_camel(void) {
     &ett_camel_CancelFailedPARAM,
 
 /*--- End of included file: packet-camel-ettarr.c ---*/
-#line 856 "packet-camel-template.c"
+#line 984 "packet-camel-template.c"
   };
   /* Register protocol */
   proto_camel = proto_register_protocol(PNAME, PSNAME, PFNAME);
@@ -10810,5 +10938,19 @@ void proto_register_camel(void) {
     "TCAP SSNs",
     "TCAP Subsystem numbers used for Camel",
     &global_ssn_range, MAX_SSN);
+
+  prefs_register_bool_preference(camel_module, "srt",
+                                "Service Response Time Analyse",
+                                "Activate the analyse for Response Time",
+                                &gcamel_HandleSRT);
+
+  prefs_register_bool_preference(camel_module, "persistentsrt",
+                                "Persistent stats for SRT",
+                                "Statistics for Response Time",
+                                &gcamel_PersistentSRT);
+  
+  /* Routine for statistic */ 
+  register_init_routine(&camelsrt_init_routine);
+  camel_tap=register_tap(PSNAME);
 }
 
index 607a28af49bed378e31fe3e349af25abd1f6c14e..04ac4ff5824c82ba110d70f8bd643242a9eb74b1 100644 (file)
@@ -51,6 +51,8 @@ bytes_to_str_punct
 bytes_to_str
 bytestring_to_str
 call_dissector
+camel_opr_code_strings          DATA
+camelSRTtype_naming             DATA
 capture_ap1394
 capture_arcnet
 capture_atm
@@ -326,6 +328,8 @@ funnel_set_funnel_ops
 funnel_register_menu
 funnel_register_all_menus
 GatekeeperRejectReason_vals     DATA
+gcamel_StatSRT                  DATA
+gtcap_StatSRT                   DATA
 get_addr_name
 get_basename
 get_ber_identifier
index e12bf922708d88059cd4bcfaadc553276aed7bb7..e3ffafba0dd82f66d9eade80786a3182c58a23a4 100644 (file)
@@ -120,6 +120,8 @@ WIRESHARK_TAP_SRC = \
        ansi_a_stat.c   \
        ansi_map_stat.c \
        bootp_stat.c    \
+       camel_counter.c \
+       camel_srt.c     \
        conversations_eth.c     \
        conversations_fc.c      \
        conversations_fddi.c    \