/* tap-radiusstat.c
* Copyright 2006 Alejandro Vaquero <alejandrovaquero@yahoo.com>
*
- *
+ * $Id$
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
} 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
radiusstat_t *rs=(radiusstat_t *)prs;
const radius_info_t *ri=pri;
nstime_t delta;
+ int ret = 0;
switch (ri->code) {
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:
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--;
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
{
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;
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);