]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
working libpcap detection
authorMichael Jerris <mike@jerris.com>
Tue, 3 Feb 2009 17:00:13 +0000 (17:00 +0000)
committerMichael Jerris <mike@jerris.com>
Tue, 3 Feb 2009 17:00:13 +0000 (17:00 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@640 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/openzap/Makefile.am
libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c

index 055f6f0baf5124a09d10378f4ea3ca63773fd63e..12422eb372c97fc3e7ed0a7e40c7f9bcd1c29759 100644 (file)
@@ -166,7 +166,7 @@ ISDN_CFLAGS = -D_GNU_SOURCE
 ####
 
 ###For libpcap
-ISDN_LIBS = -lpcap
+ISDN_LIBS = $(PCAP_LIB_FLAGS)
 ####
 
 ISDN_SOURCE=\
index be3d86313f16e0a275a46252eb0bd5faa8e858c0..5f4c1ce4d62856758772a491dd5c286ff36cf6bf 100644 (file)
 #define ZAP_SPAN_IS_NT(x)      (((zap_isdn_data_t *)(x)->signal_data)->mode == Q921_NT)
 
 
+#ifdef HAVE_LIBPCAP
 /*-------------------------------------------------------------------------*/
 /*Q931ToPcap functions*/
 #include <pcap.h>
+#endif
 
 #define SNAPLEN 1522
 #define MAX_ETHER_PAYLOAD_SIZE 1500
@@ -68,6 +70,7 @@
 #define IP_SIZE_OFFSET          SIZE_ETHERNET+2
 #define TCP_SEQ_OFFSET         SIZE_ETHERNET+SIZE_IP+4
 
+#ifdef HAVE_LIBPCAP
 /*Some globals*/
 unsigned long           pcapfilesize = 0;
 unsigned long          tcp_next_seq_no_send = 0;
@@ -139,14 +142,14 @@ static zap_status_t openPcapFile(void)
 
 static zap_status_t closePcapFile(void)
 {
-        if(pcapfile){
+       if (pcapfile) {
                pcap_dump_close(pcapfile);
-               if(pcaphandle) pcap_close(pcaphandle);
+               if (pcaphandle) pcap_close(pcaphandle);
 
                zap_log(ZAP_LOG_DEBUG, "Pcap file closed! File size is %lu bytes.\n", pcapfilesize);
 
-               pcaphdr.ts.tv_sec       = 0;
-               pcaphdr.ts.tv_usec      = 0;
+               pcaphdr.ts.tv_sec       = 0;
+               pcaphdr.ts.tv_usec      = 0;
                pcapfile                = NULL;
                pcaphandle              = NULL;
                pcapfilesize            = 0;
@@ -155,7 +158,7 @@ static zap_status_t closePcapFile(void)
        }
 
        /*We have allways success with this? I think so*/
-        return ZAP_SUCCESS;
+       return ZAP_SUCCESS;
 }
 
 static zap_status_t writeQ931PacketToPcap(L3UCHAR* q931buf, L3USHORT q931size, L3ULONG span_id, L3USHORT direction)
@@ -236,9 +239,14 @@ static zap_status_t writeQ931PacketToPcap(L3UCHAR* q931buf, L3USHORT q931size, L
         return ZAP_SUCCESS;
 }
 
+#endif
 static ZIO_IO_UNLOAD_FUNCTION(close_pcap)
 {
+#ifdef HAVE_LIBPCAP
        return closePcapFile();
+#else
+       return ZAP_SUCCESS;
+#endif
 }
 
 /*Q931ToPcap functions DONE*/
@@ -965,12 +973,15 @@ static int zap_isdn_921_23(void *pvt, Q921DLMsg_t ind, L2UCHAR tei, L2UCHAR *msg
 {
        int ret, offset = (ind == Q921_DL_DATA) ? 4 : 3;
        char bb[4096] = "";
+#ifdef HAVE_LIBPCAP
        zap_span_t *span = (zap_span_t *) pvt;  /*To get access to spanid for Q931ToPcap*/
+#endif
 
        switch(ind) {
        case Q921_DL_DATA:
        case Q921_DL_UNIT_DATA:
                print_hex_bytes(msg + offset, mlen - offset, bb, sizeof(bb));
+#ifdef HAVE_LIBPCAP
                /*Q931ToPcap*/
                 if(do_q931ToPcap==1){
                         if(writeQ931PacketToPcap(msg + offset, mlen - offset, span->span_id, 1) != ZAP_SUCCESS){
@@ -978,6 +989,7 @@ static int zap_isdn_921_23(void *pvt, Q921DLMsg_t ind, L2UCHAR tei, L2UCHAR *msg
                         }
                 }
                 /*Q931ToPcap done*/
+#endif
                zap_log(ZAP_LOG_DEBUG, "READ %d\n%s\n%s\n\n\n", (int)mlen - offset, LINE, bb);
        default:
                ret = Q931Rx23(pvt, ind, tei, msg, mlen);
@@ -1723,7 +1735,9 @@ static int q931_rx_32(void *pvt, Q921DLMsg_t ind, L3UCHAR tei, L3UCHAR *msg, L3I
 {
        int offset = 4;
        char bb[4096] = "";
+#ifdef HAVE_LIBPCAP
        zap_span_t *span = (zap_span_t *) pvt;  /*To get access to span_id for Q931ToPcap*/
+#endif
 
        switch(ind) {
        case Q921_DL_UNIT_DATA:
@@ -1731,6 +1745,7 @@ static int q931_rx_32(void *pvt, Q921DLMsg_t ind, L3UCHAR tei, L3UCHAR *msg, L3I
 
        case Q921_DL_DATA:
                print_hex_bytes(msg + offset, mlen - offset, bb, sizeof(bb));
+#ifdef HAVE_LIBPCAP
                /*Q931ToPcap*/
                if(do_q931ToPcap==1){
                        if(writeQ931PacketToPcap(msg + offset, mlen - offset, span->span_id, 0) != ZAP_SUCCESS){
@@ -1738,6 +1753,7 @@ static int q931_rx_32(void *pvt, Q921DLMsg_t ind, L3UCHAR tei, L3UCHAR *msg, L3I
                        }
                }
                /*Q931ToPcap done*/
+#endif
                zap_log(ZAP_LOG_DEBUG, "WRITE %d\n%s\n%s\n\n", (int)mlen - offset, LINE, bb);
                break;
 
@@ -1908,29 +1924,31 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_isdn_configure_span)
        int32_t digit_timeout = 0;
        int q921loglevel = -1;
        int q931loglevel = -1;
+#ifdef HAVE_LIBPCAP
        int q931topcap   = -1;  /*Q931ToPcap*/
        int openPcap = 0;       /*Flag: open Pcap file please*/
+#endif
 
        if (span->signal_type) {
+#ifdef HAVE_LIBPCAP
                /*Q931ToPcap: Get the content of the q931topcap and pcapfilename args given by mod_openzap */
                while((var = va_arg(ap, char *))) {
-                       if (!strcasecmp(var, "q931topcap")) {
-                               q931topcap = va_arg(ap, int);
-                               if(q931topcap==1) {
-                                       /*PCAP on*/;
+                       if (!strcasecmp(var, "q931topcap")) {
+                               q931topcap = va_arg(ap, int);
+                               if(q931topcap==1) {
+                                       /*PCAP on*/;
                                        openPcap=1;
-                               }
-                               else if(q931topcap==0){
-                                       /*PCAP off*/
-                                       if(closePcapFile() != ZAP_SUCCESS) return ZAP_FAIL;
+                               } else if (q931topcap==0) {
+                                       /*PCAP off*/
+                                       if (closePcapFile() != ZAP_SUCCESS) return ZAP_FAIL;
                                        do_q931ToPcap=0;
                                        return ZAP_SUCCESS;
-                               }
+                               }
                        }
                        if (!strcasecmp(var, "pcapfilename")) {
                                /*Put filename into global var*/
-                                pcapfn = va_arg(ap, char*);
-                        }
+                               pcapfn = va_arg(ap, char*);
+                       }
                }
                /*We know now, that user wants to enable Q931ToPcap and what file name he wants, so open it please*/
                if(openPcap==1){
@@ -1939,7 +1957,7 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_isdn_configure_span)
                        return ZAP_SUCCESS;
                }
                /*Q931ToPcap done*/
-
+#endif
                snprintf(span->last_error, sizeof(span->last_error), "Span is already configured for signalling [%d].", span->signal_type);
                return ZAP_FAIL;
        }