Follow up to rev 34073: Since "-b files:0" is no longer necessary to
[obnox/wireshark/wip.git] / tap-sctpchunkstat.c
index 630d4f4c91fe1b134952f5e64b453fec457974d2..5730395d0a63b14342f21d646aff69b8f1a60240 100644 (file)
@@ -41,6 +41,7 @@
 #include "epan/value_string.h"
 #include "register.h"
 #include <epan/dissectors/packet-sctp.h>
+#include <epan/to_str.h>
 
 typedef struct sctp_ep {
        struct sctp_ep* next;
@@ -85,10 +86,6 @@ typedef struct _sctpstat_t {
 #define CHUNK_TYPE_OFFSET 0
 #define CHUNK_TYPE(x)(tvb_get_guint8((x), CHUNK_TYPE_OFFSET))
 
-
-extern gchar* address_to_str(const address *);
-
-
 static void
 sctpstat_reset(void *phs)
 {
@@ -96,7 +93,7 @@ sctpstat_reset(void *phs)
        sctp_ep_t* list = (sctp_ep_t*)sctp_stat->ep_list;
        sctp_ep_t* tmp = NULL;
        guint16 chunk_type;
-       
+
        if(!list)
                return;
 
@@ -108,7 +105,8 @@ sctpstat_reset(void *phs)
 }
 
 
-sctp_ep_t* alloc_sctp_ep(struct _sctp_info *si)
+static sctp_ep_t* 
+alloc_sctp_ep(const struct _sctp_info *si)
 {
        sctp_ep_t* ep;
        guint16 chunk_type;
@@ -118,7 +116,7 @@ sctp_ep_t* alloc_sctp_ep(struct _sctp_info *si)
 
        if (!(ep = g_malloc(sizeof(sctp_ep_t))))
                return NULL;
-       
+
        COPY_ADDRESS(&ep->src,&si->ip_src);
        COPY_ADDRESS(&ep->dst,&si->ip_dst);
        ep->sport = si->sport;
@@ -130,7 +128,7 @@ sctp_ep_t* alloc_sctp_ep(struct _sctp_info *si)
 }
 
 
-       
+
 
 static int
 sctpstat_packet(void *phs, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *phi)
@@ -138,15 +136,15 @@ sctpstat_packet(void *phs, packet_info *pinfo _U_, epan_dissect_t *edt _U_, cons
 
        sctpstat_t *hs=(sctpstat_t *)phs;
        sctp_ep_t *tmp = NULL, *te = NULL;
-       struct _sctp_info *si = (struct _sctp_info *) phi;
+       const struct _sctp_info *si = (const struct _sctp_info *) phi;
        guint32 tvb_number;
        guint8 chunk_type;
-       
+
        if (!hs)
                return (0);
-               
+
        hs->number_of_packets++;
-       
+
        if(!hs->ep_list) {
                hs->ep_list = alloc_sctp_ep(si);
                te = hs->ep_list;
@@ -173,7 +171,7 @@ sctpstat_packet(void *phs, packet_info *pinfo _U_, epan_dissect_t *edt _U_, cons
        if(!te)
                return (0);
 
-       
+
        if (si->number_of_tvbs > 0) {
                chunk_type = CHUNK_TYPE(si->tvb[0]);
                if ((chunk_type == SCTP_INIT_CHUNK_ID) ||
@@ -199,11 +197,11 @@ sctpstat_draw(void *phs)
        printf("---------------------------------------------------------------------------------------------------------------------------------------\n");
        printf("|   Source IP   |PortA|    Dest. IP   |PortB|  DATA  |  SACK  |  HBEAT |HBEATACK|  INIT  | INITACK| COOKIE |COOKIACK| ABORT  |  ERROR |\n");
        printf("---------------------------------------------------------------------------------------------------------------------------------------\n");
-       
+
        for(tmp = list ; tmp ; tmp=tmp->next) {
                printf("|%15s|%5u|%15s|%5u|%8u|%8u|%8u|%8u|%8u|%8u|%8u|%8u|%8u|%8u|\n",
-                      address_to_str(&tmp->src),tmp->sport,
-                      address_to_str(&tmp->dst),tmp->dport,
+                      ep_address_to_str(&tmp->src),tmp->sport,
+                      ep_address_to_str(&tmp->dst),tmp->dport,
                       tmp->chunk_count[SCTP_DATA_CHUNK_ID],
                       tmp->chunk_count[SCTP_SACK_CHUNK_ID],
                       tmp->chunk_count[SCTP_HEARTBEAT_CHUNK_ID],
@@ -223,23 +221,20 @@ static void
 sctpstat_init(const char *optarg, void* userdata _U_)
 {
        sctpstat_t *hs;
-       const char *filter=NULL;
        GString *error_string;
 
+       hs = (sctpstat_t *)g_malloc(sizeof(sctpstat_t));
        if(!strncmp(optarg,"sctp,stat,",11)){
-               filter=optarg+11;
+               hs->filter=g_strdup(optarg+11);
        } else {
-               filter="";
+               hs->filter=NULL;
        }
-
-       hs = g_malloc(sizeof(sctpstat_t));
-       hs->filter=g_strdup(filter);
        hs->ep_list = NULL;
        hs->number_of_packets = 0;
 
        sctpstat_reset(hs);
 
-       error_string=register_tap_listener("sctp", hs, filter, NULL, sctpstat_packet, sctpstat_draw);
+       error_string=register_tap_listener("sctp", hs, hs->filter, 0, NULL, sctpstat_packet, sctpstat_draw);
        if(error_string){
                /* error, we failed to attach to the tap. clean up */
                g_free(hs->filter);