summaryrefslogtreecommitdiff
path: root/noncore
authormjm <mjm>2002-11-27 22:31:50 (UTC)
committer mjm <mjm>2002-11-27 22:31:50 (UTC)
commitb4d01b67746887223de78e950689c385a5960ad9 (patch) (side-by-side diff)
tree397440c622c73a56bf4671d461bb50cca5e75ab5 /noncore
parent31a16f8dc73d79178a4840d9e7aa4a07bfd65a26 (diff)
downloadopie-b4d01b67746887223de78e950689c385a5960ad9.zip
opie-b4d01b67746887223de78e950689c385a5960ad9.tar.gz
opie-b4d01b67746887223de78e950689c385a5960ad9.tar.bz2
updated pcap stuff
Diffstat (limited to 'noncore') (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
@@ -12,13 +12,14 @@ 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");
@@ -42,9 +43,9 @@ int main(int argc, char **argv)
{
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));
@@ -54,7 +55,7 @@ int main(int argc, char **argv)
/* 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));
@@ -62,29 +63,23 @@ int main(int argc, char **argv)
}
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))
{
@@ -92,10 +87,11 @@ int main(int argc, char **argv)
packet = pcap_next(handletopcap, &header);
/* process the packet */
- process_packets(NULL,&header,*&packet);
+ process_packets(&header,*&packet);
}
-#endif
- }
+
+ } /* while(1) */
+
close(sock);
exit(0);
}