Update some links.
[obnox/wireshark/wip.git] / tap-radiusstat.c
index 56f59792025346a725a96398fc8091aac3849e46..278e62a05fc3c73dd6096d39bc407c68dbffe854 100644 (file)
@@ -1,7 +1,7 @@
 /* tap-radiusstat.c
  * Copyright 2006 Alejandro Vaquero <alejandrovaquero@yahoo.com>
  *
- * 
+ * $Id$
  *
  * Wireshark - Network traffic analyzer
  * By Gerald Combs <gerald@wireshark.org>
@@ -54,14 +54,15 @@ typedef struct _radiusstat_t {
 } radiusstat_t;
 
 static const value_string radius_message_code[] = {
-  {  0,        "Overall       "},
-  {  1,        "Access        "},
-  {  2,        "Accounting    "},
-  {  3,        "Access Passw  "},
+  {  0, "Overall       "},
+  {  1, "Access        "},
+  {  2, "Accounting    "},
+  {  3, "Access Passw  "},
   {  4, "Ascend Acce Ev"},
-  {  5, "Diconnect     "},
+  {  5, "Disconnect    "},
   {  6, "Change Filter "},
   {  7, "Other         "},
+  {  0, NULL}
 };
 
 static int
@@ -70,6 +71,7 @@ radiusstat_packet(void *prs, packet_info *pinfo, epan_dissect_t *edt _U_, const
        radiusstat_t *rs=(radiusstat_t *)prs;
        const radius_info_t *ri=pri;
        nstime_t delta;
+       int ret = 0;
 
        switch (ri->code) {
 
@@ -82,13 +84,11 @@ radiusstat_packet(void *prs, packet_info *pinfo, epan_dissect_t *edt _U_, const
                if(ri->is_duplicate){
                        /* Duplicate is ignored */
                        rs->req_dup_num++;
-                       return 0;
                }
                else {
                        rs->open_req_num++;
-                       return 0;
                }
-       break;
+               break;
 
        case RADIUS_ACCESS_ACCEPT:
        case RADIUS_ACCESS_REJECT:
@@ -103,12 +103,10 @@ radiusstat_packet(void *prs, packet_info *pinfo, epan_dissect_t *edt _U_, const
                if(ri->is_duplicate){
                        /* Duplicate is ignored */
                        rs->rsp_dup_num++;
-                       return 0;
                }
                else if (!ri->request_available) {
                        /* no request was seen */
                        rs->disc_rsp_num++;
-                       return 0;
                }
                else {
                        rs->open_req_num--;
@@ -122,21 +120,19 @@ radiusstat_packet(void *prs, packet_info *pinfo, epan_dissect_t *edt _U_, const
                        else if (ri->code == RADIUS_ACCOUNTING_RESPONSE) {
                                time_stat_update(&(rs->rtd[2]),&delta, pinfo);
                        }
-
-
-
                        else {
                                time_stat_update(&(rs->rtd[7]),&delta, pinfo);
                        }
 
-                       return 1;
+                       ret = 1;
                }
-       break;
+               break;
 
        default:
-               return 0;
-       break;
+               break;
        }
+
+       return ret;
 }
 
 static void
@@ -174,29 +170,25 @@ radiusstat_init(const char *optarg, void* userdata _U_)
 {
        radiusstat_t *rs;
        int i;
-       const char *filter=NULL;
        GString *error_string;
 
+       rs=g_malloc(sizeof(radiusstat_t));
        if(!strncmp(optarg,"radius,rtd,",11)){
-               filter=optarg+11;
+               rs->filter=g_strdup(optarg+11);
        } else {
-               filter="";
+               rs->filter=NULL;
        }
 
-       rs=g_malloc(sizeof(radiusstat_t));
-       rs->filter=g_malloc(strlen(filter)+1);
-       strcpy(rs->filter, filter);
-
        for(i=0;i<NUM_TIMESTATS;i++) {
                rs->rtd[i].num=0;
                rs->rtd[i].min_num=0;
                rs->rtd[i].max_num=0;
                rs->rtd[i].min.secs=0;
-        rs->rtd[i].min.nsecs=0;
-        rs->rtd[i].max.secs=0;
-        rs->rtd[i].max.nsecs=0;
-        rs->rtd[i].tot.secs=0;
-        rs->rtd[i].tot.nsecs=0;
+               rs->rtd[i].min.nsecs=0;
+               rs->rtd[i].max.secs=0;
+               rs->rtd[i].max.nsecs=0;
+               rs->rtd[i].tot.secs=0;
+               rs->rtd[i].tot.nsecs=0;
        }
 
        rs->open_req_num=0;
@@ -204,7 +196,7 @@ radiusstat_init(const char *optarg, void* userdata _U_)
        rs->req_dup_num=0;
        rs->rsp_dup_num=0;
 
-       error_string=register_tap_listener("radius", rs, filter, NULL, radiusstat_packet, radiusstat_draw);
+       error_string=register_tap_listener("radius", rs, rs->filter, 0, NULL, radiusstat_packet, radiusstat_draw);
        if(error_string){
                /* error, we failed to attach to the tap. clean up */
                g_free(rs->filter);