summaryrefslogtreecommitdiff
Unidiff
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
@@ -1,101 +1,97 @@
1/* 1/*
2 * Startup functions of wellenreiter 2 * Startup functions of wellenreiter
3 * 3 *
4 * $Id$ 4 * $Id$
5 */ 5 */
6 6
7#include "config.hh" 7#include "config.hh"
8#include "daemon.hh" 8#include "daemon.hh"
9 9
10/* Main function of wellenreiterd */ 10/* Main function of wellenreiterd */
11int main(int argc, char **argv) 11int main(int argc, char **argv)
12{ 12{
13 int sock, maxfd, retval; 13 int sock, maxfd, retval;
14 char buffer[128]; 14 char buffer[128];
15 struct pcap_pkthdr header;
15 pcap_t *handletopcap; 16 pcap_t *handletopcap;
17 const unsigned char *packet;
16 18
17 fd_set rset; 19 fd_set rset;
18 20
19 fprintf(stderr, "wellenreiterd %s\n\n", VERSION); 21 fprintf(stderr, "wellenreiterd %s\n\n", VERSION);
20 22
21 /* will be replaced soon, just for max because max is lazy :-) */
22 if(!card_into_monitormode(handletopcap, SNIFFER_DEVICE, CARD_TYPE_NG)) 23 if(!card_into_monitormode(handletopcap, SNIFFER_DEVICE, CARD_TYPE_NG))
23 { 24 {
24 wl_logerr("Cannot set card into mon mode, aborting"); 25 wl_logerr("Cannot set card into mon mode, aborting");
25 exit(-1); 26 exit(-1);
26 } 27 }
27 wl_loginfo("Set card into monitor mode"); 28 wl_loginfo("Set card into monitor mode");
28 29
29 /* Setup socket for incoming commands */ 30 /* Setup socket for incoming commands */
30 if((sock=commsock(DAEMONADDR, DAEMONPORT)) < 0) 31 if((sock=commsock(DAEMONADDR, DAEMONPORT)) < 0)
31 { 32 {
32 wl_logerr("Cannot setup socket"); 33 wl_logerr("Cannot setup socket");
33 exit(-1); 34 exit(-1);
34 } 35 }
35 wl_loginfo("Set up socket '%d' for GUI communication", sock); 36 wl_loginfo("Set up socket '%d' for GUI communication", sock);
36 37
37 FD_ZERO(&rset); 38 FD_ZERO(&rset);
38 39
39 /* Start main loop */ 40 /* Start main loop */
40 wl_loginfo("Starting main loop"); 41 wl_loginfo("Starting main loop");
41 while(1) 42 while(1)
42 { 43 {
43 44
44 FD_SET(sock, &rset); 45 FD_SET(sock, &rset);
45 // FD_SET(pcap_fileno(handletopcap), &rset); 46 FD_SET(pcap_fileno(handletopcap), &rset);
46 // maxfd=sock + pcap_fileno(handletopcap) + 1; 47 maxfd=sock + pcap_fileno(handletopcap) + 1;
47 maxfd=sock + 1; 48
48 if(select(maxfd, &rset, NULL, NULL, NULL) < 0) 49 if(select(maxfd, &rset, NULL, NULL, NULL) < 0)
49 { 50 {
50 wl_logerr("Error calling select: %s", strerror(errno)); 51 wl_logerr("Error calling select: %s", strerror(errno));
51 break; 52 break;
52 } 53 }
53 54
54 /* Got data on local socket from GUI */ 55 /* Got data on local socket from GUI */
55 if(FD_ISSET(sock, &rset)) 56 if(FD_ISSET(sock, &rset))
56 { 57 {
57 58 /* Receive data from socket */
58 if((retval=recvcomm(&sock, buffer, sizeof(buffer))) < 0) 59 if((retval=recvcomm(&sock, buffer, sizeof(buffer))) < 0)
59 { 60 {
60 wl_logerr("Error trying to read: %s", strerror(errno)); 61 wl_logerr("Error trying to read: %s", strerror(errno));
61 break; 62 break;
62 } 63 }
63 else 64 else
64 { 65 {
66 /* check type of packet and start function according to it */
65 switch(retval) 67 switch(retval)
66 { 68 {
67 case 98: 69 case 98:
68 {
69 wl_loginfo("Received STARTSNIFF command"); 70 wl_loginfo("Received STARTSNIFF command");
70 break; 71 break;
71 };
72 case 99: 72 case 99:
73 {
74 wl_loginfo("Received STOPSNIFF command"); 73 wl_loginfo("Received STOPSNIFF command");
75 break; 74 break;
76 };
77 default: 75 default:
78 {
79 wl_logerr("Received unknown command: %d", retval); 76 wl_logerr("Received unknown command: %d", retval);
80 break; 77 break;
81 };
82 } 78 }
83 } 79 }
84 } /* FD_ISSET */ 80 } /* FD_ISSET */
85 81
86#if 0 82 /* Check pcap lib for packets */
87 /* Pcap stuff */
88 if(FD_ISSET(pcap_fileno(handletopcap), &rset)) 83 if(FD_ISSET(pcap_fileno(handletopcap), &rset))
89 { 84 {
90 85
91 /* Grab one single packet */ 86 /* Grab one single packet */
92 packet = pcap_next(handletopcap, &header); 87 packet = pcap_next(handletopcap, &header);
93 88
94 /* process the packet */ 89 /* process the packet */
95 process_packets(NULL,&header,*&packet); 90 process_packets(&header,*&packet);
96 } 91 }
97#endif 92
98 } 93 } /* while(1) */
94
99 close(sock); 95 close(sock);
100 exit(0); 96 exit(0);
101} 97}