-rw-r--r-- | noncore/net/wellenreiter/daemon/source/daemon.cc | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/noncore/net/wellenreiter/daemon/source/daemon.cc b/noncore/net/wellenreiter/daemon/source/daemon.cc index 51c2194..d6e8f6b 100644 --- a/noncore/net/wellenreiter/daemon/source/daemon.cc +++ b/noncore/net/wellenreiter/daemon/source/daemon.cc @@ -8,9 +8,23 @@ #include "daemon.hh" +// temporary solution, will be removed soon +#define MAXCHANNEL 13 +char sniffer_device[6]; +int channel=0; +int timedout=1; + +static int chanswitch() +{ + if(channel >= MAXCHANNEL) + channel=1 + card_set_channel(sniffer_device, channel, card_type); + timedout=0; +} + /* Main function of wellenreiterd */ int main(int argc, char **argv) { int sock, maxfd, retval, card_type; - char buffer[WL_SOCKBUF], sniffer_device[6]; + char buffer[WL_SOCKBUF]; struct pcap_pkthdr header; struct sockaddr_in saddr; @@ -26,4 +40,7 @@ int main(int argc, char **argv) usage(); + // removed soon, see above + SIGNAL(SIGALRM, chanswitch); + /* Set sniffer device */ memset(sniffer_device, 0, sizeof(sniffer_device)); @@ -73,8 +90,12 @@ int main(int argc, char **argv) FD_SET(pcap_fileno(handletopcap), &rset); + // blah + timedout=1; + alarm(1); + /* socket or pcap handle bigger? Will be cleaned up, have to check pcap */ maxfd = (sock > pcap_fileno(handletopcap) ? sock : pcap_fileno(handletopcap)) + 1; - if(select(maxfd, &rset, NULL, NULL, NULL) < 0) + if(select(maxfd, &rset, NULL, NULL, NULL) < 0 && timedout) { wl_logerr("Error calling select: %s", strerror(errno)); @@ -86,5 +107,5 @@ int main(int argc, char **argv) { /* Receive data from socket */ - if((retval=wl_recv(&sock, saddr, buffer, sizeof(buffer))) < 0) + if((retval=wl_recv(&sock, saddr, buffer, sizeof(buffer))) < 0 && timedout) { wl_logerr("Error trying to read: %s", strerror(errno)); |