summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc32
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh3
2 files changed, 4 insertions, 31 deletions
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc
index a9b3276..a1c3945 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc
+++ b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc
@@ -2,25 +2,21 @@
2 * Set card modes for sniffing 2 * Set card modes for sniffing
3 * 3 *
4 * $Id$ 4 * $Id$
5 */ 5 */
6 6
7#include "cardmode.hh" 7#include "cardmode.hh"
8 8
9/* main card into monitor function */ 9/* main card into monitor function */
10int card_into_monitormode (void *orighandle, char *device, int cardtype) 10int card_into_monitormode (pcap_t **orighandle, char *device, int cardtype)
11{ 11{
12 int datalink; /* used for getting the pcap datalink type */
13 char CiscoRFMON[35] = "/proc/driver/aironet/"; 12 char CiscoRFMON[35] = "/proc/driver/aironet/";
14 FILE *CISCO_CONFIG_FILE; 13 FILE *CISCO_CONFIG_FILE;
15 char errbuf[PCAP_ERRBUF_SIZE]; 14 pcap_t *handle = (pcap_t*)orighandle;
16 pcap_t *handle;
17
18 handle = (pcap_t *)orighandle;
19 15
20 /* Checks if we have a device to sniff on */ 16 /* Checks if we have a device to sniff on */
21 if(device == NULL) 17 if(device == NULL)
22 { 18 {
23 wl_logerr("No device given"); 19 wl_logerr("No device given");
24 return 0; 20 return 0;
25 } 21 }
26 22
@@ -57,47 +53,25 @@ int card_into_monitormode (void *orighandle, char *device, int cardtype)
57 return 0; 53 return 0;
58 } 54 }
59 } 55 }
60 else if (cardtype == CARD_TYPE_HOSTAP) 56 else if (cardtype == CARD_TYPE_HOSTAP)
61 { 57 {
62 wl_logerr("Got a host-ap card, nothing is implemented now"); 58 wl_logerr("Got a host-ap card, nothing is implemented now");
63 } 59 }
64 60
65 /* Check the interface if it is in the correct raw mode */
66 if((handle = pcap_open_live(device, BUFSIZ, 1, 0, errbuf)) == NULL)
67 {
68 wl_logerr("pcap_open_live() failed: %s", strerror(errno));
69 return 0;
70 }
71
72#ifdef HAVE_PCAP_NONBLOCK
73 pcap_setnonblock(handle, 1, errstr);
74#endif
75
76 /* getting the datalink type */
77 datalink = pcap_datalink(handle);
78
79 if (datalink != DLT_IEEE802_11) /* Rawmode is IEEE802_11 */
80 {
81 wl_loginfo("Interface %s does not work in the correct 802.11 raw mode", device);
82 pcap_close(handle);
83 return 0;
84 }
85 wl_loginfo("Your successfully listen on %s in 802.11 raw mode", device);
86
87 return 1; 61 return 1;
88} 62}
89 63
90/* Set card into promisc mode */ 64/* Set card into promisc mode */
91int card_set_promisc_up (const char *device) 65int card_set_promisc_up (const char *device)
92{ 66{
93 char ifconfigcmd[32]; 67 char ifconfigcmd[32];
94 int retval=0; 68 int retval=0;
95 69
96 snprintf(ifconfigcmd, sizeof(ifconfigcmd), SBIN_PATH, device); 70 snprintf(ifconfigcmd, sizeof(ifconfigcmd), SBIN_PATH, device);
97 retval = system(ifconfigcmd); 71 retval = system(ifconfigcmd);
98 72
99 if(retval < 0 || retval == 1) 73 if(retval != 0)
100 return 0; 74 return 0;
101 75
102return 1; 76return 1;
103} 77}
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh
index d80b24b..976ceeb 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh
+++ b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh
@@ -22,13 +22,12 @@
22 22
23/* only for now, until we have the daemon running */ 23/* only for now, until we have the daemon running */
24/*the config file should provide these information */ 24/*the config file should provide these information */
25#define CARD_TYPE CARD_TYPE_CISCO 25#define CARD_TYPE CARD_TYPE_CISCO
26 #define SBIN_PATH "/sbin/ifconfig %s promisc up" 26 #define SBIN_PATH "/sbin/ifconfig %s promisc up"
27#define WLANCTL_PATH "/sbin/wlanctl-ng" 27#define WLANCTL_PATH "/sbin/wlanctl-ng"
28 28
29/* Prototypes */ 29/* Prototypes */
30 30int card_into_monitormode (pcap_t **, char *, int);
31int card_into_monitormode (void *, char *, int);
32int card_set_promisc_up (const char *); 31int card_set_promisc_up (const char *);
33 32
34#endif /* CARDMODE_HH */ 33#endif /* CARDMODE_HH */