cd ../gtk ==> cd ../ui/gtk
[obnox/wireshark/wip.git] / tap-h225counter.c
index 29afbdacec2cf2618f8c4efaafc22bb8c7589bb4..6076f1c22534ff43a95d5389fd37eedc9755a354 100644 (file)
 #endif
 
 #include <string.h>
+#include "epan/packet.h"
 #include "epan/packet_info.h"
 #include <epan/tap.h>
 #include <epan/stat_cmd_args.h>
 #include "epan/value_string.h"
-#include "register.h"
 #include <epan/dissectors/packet-h225.h>
 
 /* following values represent the size of their valuestring arrays */
@@ -84,50 +84,11 @@ static void
 h225counter_reset(void *phs)
 {
        h225counter_t *hs=(h225counter_t *)phs;
-       int i;
+       char *save_filter = hs->filter;
 
-       for(i=0;i<=RAS_MSG_TYPES;i++) {
-               hs->ras_msg[i] = 0;
-       }
-       for(i=0;i<=CS_MSG_TYPES;i++) {
-               hs->cs_msg[i] = 0;
-       }
-       for(i=0;i<=GRJ_REASONS;i++) {
-               hs->grj_reason[i] = 0;
-       }
-       for(i=0;i<=RRJ_REASONS;i++) {
-               hs->rrj_reason[i] = 0;
-       }
-       for(i=0;i<=URQ_REASONS;i++) {
-               hs->urq_reason[i] = 0;
-       }
-       for(i=0;i<=URJ_REASONS;i++) {
-               hs->urj_reason[i] = 0;
-       }
-       for(i=0;i<=ARJ_REASONS;i++) {
-               hs->arj_reason[i] = 0;
-       }
-       for(i=0;i<=BRJ_REASONS;i++) {
-               hs->brj_reason[i] = 0;
-       }
-       for(i=0;i<=DRQ_REASONS;i++) {
-               hs->drq_reason[i] = 0;
-       }
-       for(i=0;i<=DRJ_REASONS;i++) {
-               hs->drj_reason[i] = 0;
-       }
-       for(i=0;i<=LRJ_REASONS;i++) {
-               hs->lrj_reason[i] = 0;
-       }
-       for(i=0;i<=IRQNAK_REASONS;i++) {
-               hs->irqnak_reason[i] = 0;
-       }
-       for(i=0;i<=REL_CMP_REASONS;i++) {
-               hs->rel_cmp_reason[i] = 0;
-       }
-       for(i=0;i<=FACILITY_REASONS;i++) {
-               hs->facility_reason[i] = 0;
-       }
+       memset(hs, 0, sizeof(h225counter_t));
+
+       hs->filter = save_filter;
 }
 
 static int
@@ -263,7 +224,6 @@ h225counter_packet(void *phs, packet_info *pinfo _U_, epan_dissect_t *edt _U_, c
 
        default:
                return 0;
-               break;
        }
 
        return 1;
@@ -280,7 +240,7 @@ h225counter_draw(void *phs)
        printf("RAS-Messages:\n");
        for(i=0;i<=RAS_MSG_TYPES;i++) {
                if(hs->ras_msg[i]!=0) {
-                       printf("  %s : %u\n", val_to_str(i,RasMessage_vals,"unknown ras-messages  "), hs->ras_msg[i]);
+                       printf("  %s : %u\n", val_to_str(i,h225_RasMessage_vals,"unknown ras-messages  "), hs->ras_msg[i]);
                        /* reason counter */
                        switch(i) {
                        case 2: /* GRJ */
@@ -345,6 +305,7 @@ h225counter_draw(void *phs)
                                                printf("    %s : %u\n", val_to_str(j,LocationRejectReason_vals,"unknown reason   "), hs->lrj_reason[j]);
                                        }
                                }
+                               break;
                        case 29: /* IRQNak */
                                for(j=0;j<=IRQNAK_REASONS;j++) {
                                        if(hs->irqnak_reason[j]!=0) {
@@ -367,7 +328,7 @@ h225counter_draw(void *phs)
                        case 5: /* ReleaseComplete */
                                for(j=0;j<=REL_CMP_REASONS;j++) {
                                        if(hs->rel_cmp_reason[j]!=0) {
-                                               printf("    %s : %u\n", val_to_str(j,ReleaseCompleteReason_vals,"unknown reason   "), hs->rel_cmp_reason[j]);
+                                               printf("    %s : %u\n", val_to_str(j,h225_ReleaseCompleteReason_vals,"unknown reason   "), hs->rel_cmp_reason[j]);
                                        }
                                }
                                break;
@@ -391,22 +352,18 @@ static void
 h225counter_init(const char *optarg, void* userdata _U_)
 {
        h225counter_t *hs;
-       const char *filter=NULL;
        GString *error_string;
 
+       hs = g_malloc(sizeof(h225counter_t));
        if(!strncmp(optarg,"h225,counter,",13)){
-               filter=optarg+13;
+               hs->filter=g_strdup(optarg+13);
        } else {
-               filter="";
+               hs->filter=NULL;
        }
 
-       hs = g_malloc(sizeof(h225counter_t));
-       hs->filter=g_malloc(strlen(filter)+1);
-       strcpy(hs->filter, filter);
-
        h225counter_reset(hs);
 
-       error_string=register_tap_listener("h225", hs, filter, NULL, h225counter_packet, h225counter_draw);
+       error_string=register_tap_listener("h225", hs, hs->filter, 0, NULL, h225counter_packet, h225counter_draw);
        if(error_string){
                /* error, we failed to attach to the tap. clean up */
                g_free(hs->filter);