author | mjm <mjm> | 2002-11-27 21:21:42 (UTC) |
---|---|---|
committer | mjm <mjm> | 2002-11-27 21:21:42 (UTC) |
commit | b95d47212803232e62e81b6507568097c949f014 (patch) (side-by-side diff) | |
tree | 3c9257475ec058e83a701699c6c0b1bb14d0f8ed /noncore/net/wellenreiter/daemon/source/daemon.cc | |
parent | c7ee0193ef7bbcc575226efc0e3992020a9b67b7 (diff) | |
download | opie-b95d47212803232e62e81b6507568097c949f014.zip opie-b95d47212803232e62e81b6507568097c949f014.tar.gz opie-b95d47212803232e62e81b6507568097c949f014.tar.bz2 |
now part of library
Diffstat (limited to 'noncore/net/wellenreiter/daemon/source/daemon.cc') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/wellenreiter/daemon/source/daemon.cc | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/noncore/net/wellenreiter/daemon/source/daemon.cc b/noncore/net/wellenreiter/daemon/source/daemon.cc index 1f9e98a..a2e1f96 100644 --- a/noncore/net/wellenreiter/daemon/source/daemon.cc +++ b/noncore/net/wellenreiter/daemon/source/daemon.cc @@ -9,31 +9,31 @@ #include "cardmode.hh" #include "sniffer.hh" /* Main function of wellenreiterd */ int main(int argc, char **argv) { - int sock, maxfd; - struct sockaddr_in *cliaddr; - socklen_t len=sizeof(struct sockaddr); + int sock, maxfd, retval; char buffer[128]; pcap_t *handletopcap; /* The handle to the libpcap */ char errbuf[PCAP_ERRBUF_SIZE]; /* The errorbuffer of libpacap */ struct pcap_pkthdr header; /* The packet header from pcap*/ const u_char *packet; /* The actual packet content*/ fd_set rset; fprintf(stderr, "wellenreiterd %s\n\n", VERSION); +#if 0 /* will be replaced soon, just for max because max is lazy :-) */ if(card_into_monitormode (SNIFFER_DEVICE, CARD_TYPE_NG) < 0) { fprintf(stderr, "Cannot set card into mon mode, aborting\n"); exit(-1); } +#endif /* opening the pcap for sniffing */ handletopcap = pcap_open_live(SNIFFER_DEVICE, BUFSIZ, 1, 1000, errbuf); #ifdef HAVE_PCAP_NONBLOCK pcap_setnonblock(handletopcap, 1, errstr); #endif @@ -51,45 +51,63 @@ int main(int argc, char **argv) /* 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; + // FD_SET(pcap_fileno(handletopcap), &rset); + // maxfd=sock + pcap_fileno(handletopcap) + 1; + maxfd=sock + 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)) { - memset(buffer, 0, sizeof(buffer)); - if(recvfrom(sock, buffer, sizeof(buffer)-1, 0, (struct sockaddr *)cliaddr, &len) < 0) + + if((retval=recvcomm(&sock, buffer, sizeof(buffer))) < 0) { - wl_logerr("Cannot read from socket: %s", strerror(errno)); + wl_logerr("Error trying to read: %s", strerror(errno)); break; } - wl_loginfo("Received command from '%s': %s", inet_ntoa(cliaddr->sin_addr), buffer); - - /* will be passed to analyze function */ - fprintf(stderr, "Received command: %s\n", buffer); - + else + { + 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 */ if(FD_ISSET(pcap_fileno(handletopcap), &rset)) { /* Grab one single packet */ packet = pcap_next(handletopcap, &header); /* process the packet */ process_packets(NULL,&header,*&packet); - } +#endif } close(sock); exit(0); } |