-rw-r--r-- | noncore/net/wellenreiter/daemon/source/daemon.cc | 28 |
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 | |||
@@ -3,99 +3,95 @@ | |||
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 */ |
11 | int main(int argc, char **argv) | 11 | int 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 | } |