summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/daemon/source/daemon.cc15
-rw-r--r--noncore/net/wellenreiter/daemon/source/daemon.hh1
2 files changed, 10 insertions, 6 deletions
diff --git a/noncore/net/wellenreiter/daemon/source/daemon.cc b/noncore/net/wellenreiter/daemon/source/daemon.cc
index 9c34115..7c3f8a8 100644
--- a/noncore/net/wellenreiter/daemon/source/daemon.cc
+++ b/noncore/net/wellenreiter/daemon/source/daemon.cc
@@ -10,10 +10,11 @@
/* Main function of wellenreiterd */
int main(int argc, char **argv)
{
int sock, maxfd, retval, card_type;
- char buffer[128], sniffer_device[6];
+ char buffer[WL_SOCKBUF], sniffer_device[6];
struct pcap_pkthdr header;
+ struct sockaddr_in saddr;
pcap_t *handletopcap;
const unsigned char *packet;
fd_set rset;
@@ -54,18 +55,18 @@ int main(int argc, char **argv)
/* getting the datalink type */
retval = pcap_datalink(handletopcap);
if (retval != DLT_IEEE802_11) /* Rawmode is IEEE802_11 */
{
- wl_loginfo("Interface %s does not work in the correct 802.11 raw mode",
+ wl_logerr("Interface %s does not work in the correct 802.11 raw mode",
sniffer_device);
pcap_close(handletopcap);
- return 0;
+ exit(-1);;
}
wl_loginfo("Your successfully listen on %s in 802.11 raw mode", sniffer_device);
////////////////////////////////////////
/* Setup socket for incoming commands */
- if((sock=wl_setupsock(DAEMONADDR, DAEMONPORT)) < 0)
+ if((sock=wl_setupsock(DAEMONADDR, DAEMONPORT, saddr)) < 0)
{
wl_logerr("Cannot setup socket");
exit(-1);
}
@@ -79,9 +80,11 @@ int main(int argc, char **argv)
{
FD_SET(sock, &rset);
FD_SET(pcap_fileno(handletopcap), &rset);
- maxfd=sock + pcap_fileno(handletopcap) + 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)
{
wl_logerr("Error calling select: %s", strerror(errno));
@@ -91,9 +94,9 @@ int main(int argc, char **argv)
/* Got data on local socket from GUI */
if(FD_ISSET(sock, &rset))
{
/* Receive data from socket */
- if((retval=wl_recv(&sock, buffer, sizeof(buffer))) < 0)
+ if((retval=wl_recv(&sock, saddr, buffer, sizeof(buffer))) < 0)
{
wl_logerr("Error trying to read: %s", strerror(errno));
break;
}
diff --git a/noncore/net/wellenreiter/daemon/source/daemon.hh b/noncore/net/wellenreiter/daemon/source/daemon.hh
index c55e86c..1cc3c7c 100644
--- a/noncore/net/wellenreiter/daemon/source/daemon.hh
+++ b/noncore/net/wellenreiter/daemon/source/daemon.hh
@@ -14,8 +14,9 @@
#include <errno.h>
#include <libwellenreiter/source/wl_sock.hh>
#include <libwellenreiter/source/wl_log.hh>
+#include <libwellenreiter/source/wl_types.hh>
#include <libwellenreiter/source/wl_proto.hh>
#include <libwellenreiter/source/cardmode.hh>
#include <libwellenreiter/source/sniff.hh>