summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/daemon/source/daemon.cc28
1 files changed, 12 insertions, 16 deletions
diff --git a/noncore/net/wellenreiter/daemon/source/daemon.cc b/noncore/net/wellenreiter/daemon/source/daemon.cc
index 75b2222..b836a31 100644
--- a/noncore/net/wellenreiter/daemon/source/daemon.cc
+++ b/noncore/net/wellenreiter/daemon/source/daemon.cc
@@ -7,23 +7,24 @@
#include "config.hh"
#include "daemon.hh"
/* Main function of wellenreiterd */
int main(int argc, char **argv)
{
int sock, maxfd, retval;
char buffer[128];
+ struct pcap_pkthdr header;
pcap_t *handletopcap;
+ const unsigned char *packet;
fd_set rset;
fprintf(stderr, "wellenreiterd %s\n\n", VERSION);
- /* will be replaced soon, just for max because max is lazy :-) */
if(!card_into_monitormode(handletopcap, SNIFFER_DEVICE, CARD_TYPE_NG))
{
wl_logerr("Cannot set card into mon mode, aborting");
exit(-1);
}
wl_loginfo("Set card into monitor mode");
/* Setup socket for incoming commands */
@@ -37,65 +38,60 @@ int main(int argc, char **argv)
FD_ZERO(&rset);
/* Start main loop */
wl_loginfo("Starting main loop");
while(1)
{
FD_SET(sock, &rset);
- // FD_SET(pcap_fileno(handletopcap), &rset);
- // maxfd=sock + pcap_fileno(handletopcap) + 1;
- maxfd=sock + 1;
+ FD_SET(pcap_fileno(handletopcap), &rset);
+ maxfd=sock + pcap_fileno(handletopcap) + 1;
+
if(select(maxfd, &rset, NULL, NULL, NULL) < 0)
{
wl_logerr("Error calling select: %s", strerror(errno));
break;
}
/* Got data on local socket from GUI */
if(FD_ISSET(sock, &rset))
{
-
+ /* Receive data from socket */
if((retval=recvcomm(&sock, buffer, sizeof(buffer))) < 0)
{
wl_logerr("Error trying to read: %s", strerror(errno));
break;
}
else
{
+ /* check type of packet and start function according to it */
switch(retval)
{
case 98:
- {
wl_loginfo("Received STARTSNIFF command");
break;
- };
case 99:
- {
wl_loginfo("Received STOPSNIFF command");
break;
- };
default:
- {
wl_logerr("Received unknown command: %d", retval);
break;
- };
}
}
} /* FD_ISSET */
-#if 0
- /* Pcap stuff */
+ /* Check pcap lib for packets */
if(FD_ISSET(pcap_fileno(handletopcap), &rset))
{
/* Grab one single packet */
packet = pcap_next(handletopcap, &header);
/* process the packet */
- process_packets(NULL,&header,*&packet);
+ process_packets(&header,*&packet);
}
-#endif
- }
+
+ } /* while(1) */
+
close(sock);
exit(0);
}