#include #include #include "pcapext.h" void javacap_init(char* device, bpf_u_int32 bufferSize) { (&javacap_d0)->pd=NULL; (&javacap_d0)->snaplen=bufferSize; (&javacap_d0)->datalink=-1; (&javacap_d0)->error=0; (&javacap_d0)->device=device; (&javacap_d0)->packet=NULL; } void javacap_open(char* dev,int bufferSize) { if(dev!=NULL) if(*dev!=0) javacap_init(dev,bufferSize); if((&javacap_d0)->device==NULL) { if( ((&javacap_d0)->device=pcap_lookupdev((&javacap_d0)->errbuf)) ==NULL ){ (&javacap_d0)->error=ERR_NO_DEV; return; } } if(((&javacap_d0)->pd=pcap_open_live((&javacap_d0)->device,(&javacap_d0)->snaplen,1,500,(&javacap_d0)->errbuf))==NULL){ (&javacap_d0)->error=ERR_UNABLE_TO_OPEN; return; } if(((&javacap_d0)->datalink=pcap_datalink((&javacap_d0)->pd))<0){ (&javacap_d0)->error=ERR_DATALINK; sprintf((&javacap_d0)->errbuf,"%s",pcap_geterr((&javacap_d0)->pd)); return; } } void javacap_close() { pcap_close((&javacap_d0)->pd); } char* javacap_read() { (&javacap_d0)->packet=(char*) pcap_next((&javacap_d0)->pd,&(&javacap_d0)->hdr); return javacap_d0.packet; } int javacap_setfilter(char* buf, bpf_u_int32 mask) { struct bpf_program fp; int optimize = 1; int retv = -1; retv = pcap_compile((&javacap_d0)->pd, &fp, buf, optimize, mask); if (retv == 0) { pcap_setfilter((&javacap_d0)->pd, &fp); } return retv; } int javacap_getReceivedPackets() { struct pcap_stat stat; if (pcap_stats((&javacap_d0)->pd, &stat) < 0) return -1; else return stat.ps_recv; } int javacap_getDroppedPackets() { struct pcap_stat stat; if (pcap_stats((&javacap_d0)->pd, &stat) < 0) return -1; else return stat.ps_drop; }