summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc1
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh1
2 files changed, 1 insertions, 1 deletions
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc
index 1add34c..d868438 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc
+++ b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc
@@ -56,64 +56,65 @@ int card_into_monitormode (pcap_t **orighandle, char *device, int cardtype)
56 else if (cardtype == CARD_TYPE_HOSTAP) 56 else if (cardtype == CARD_TYPE_HOSTAP)
57 { 57 {
58 wl_logerr("Got a host-ap card, nothing is implemented now"); 58 wl_logerr("Got a host-ap card, nothing is implemented now");
59 char hostapcmd[250]; 59 char hostapcmd[250];
60 snprintf(hostapcmd, sizeof(hostapcmd) -1, "%s %s monitor 2", IWPRIV_PATH, device); 60 snprintf(hostapcmd, sizeof(hostapcmd) -1, "%s %s monitor 2", IWPRIV_PATH, device);
61 if (system(hostapcmd) !=0) 61 if (system(hostapcmd) !=0)
62 { 62 {
63 wl_logerr("Could not set %s in raw mode, check cardtype", device); 63 wl_logerr("Could not set %s in raw mode, check cardtype", device);
64 return 0; 64 return 0;
65 } 65 }
66 } 66 }
67 67
68 /* Setting the promiscous and up flag to the interface */ 68 /* Setting the promiscous and up flag to the interface */
69 if (!card_check_rfmon_datalink(device)) 69 if (!card_check_rfmon_datalink(device))
70 { 70 {
71 wl_logerr("Cannot set interface to rfmon mode"); 71 wl_logerr("Cannot set interface to rfmon mode");
72 return 0; 72 return 0;
73 } 73 }
74 else 74 else
75 { 75 {
76 wl_loginfo("Interface set to rfmon mode"); 76 wl_loginfo("Interface set to rfmon mode");
77 } 77 }
78 return 1; 78 return 1;
79} 79}
80 80
81/* Check card is in the rfmon mode */ 81/* Check card is in the rfmon mode */
82int card_check_rfmon_datalink (char *device) 82int card_check_rfmon_datalink (char *device)
83{ 83{
84 int datalinktype=0; 84 int datalinktype=0;
85 pcap_t *phandle; 85 pcap_t *phandle;
86 phandle = pcap_open_live(device, 65,0,0,NULL); 86 phandle = pcap_open_live(device, 65,0,0,NULL);
87 datalinktype = pcap_datalink (phandle); 87 datalinktype = pcap_datalink (phandle);
88 pcap_close(phandle);
88 89
89 if (datalinktype != DLT_IEEE802_11) /* Rawmode is IEEE802_11 */ 90 if (datalinktype != DLT_IEEE802_11) /* Rawmode is IEEE802_11 */
90 { 91 {
91 return 0; 92 return 0;
92 } 93 }
93 else 94 else
94 { 95 {
95 wl_loginfo("Your successfully listen on %s in 802.11 raw mode", device); 96 wl_loginfo("Your successfully listen on %s in 802.11 raw mode", device);
96 return 1; 97 return 1;
97 } 98 }
98} 99}
99 100
100/* Set card into promisc mode */ 101/* Set card into promisc mode */
101int card_set_promisc_up (const char *device) 102int card_set_promisc_up (const char *device)
102{ 103{
103 int err; 104 int err;
104 /* First generate a socket to use with iocalls */ 105 /* First generate a socket to use with iocalls */
105 int fd = socket(AF_INET, SOCK_DGRAM, 0); 106 int fd = socket(AF_INET, SOCK_DGRAM, 0);
106 if (fd < 0) 107 if (fd < 0)
107 { 108 {
108 /* In case of an error */ 109 /* In case of an error */
109 perror("socket"); 110 perror("socket");
110 return 0; 111 return 0;
111 } 112 }
112 113
113 /* Fill an empty an interface structure with the right flags (UP and Promsic) */ 114 /* Fill an empty an interface structure with the right flags (UP and Promsic) */
114 struct ifreq ifr; 115 struct ifreq ifr;
115 strncpy(ifr.ifr_name, device,10); 116 strncpy(ifr.ifr_name, device,10);
116 ifr.ifr_flags = IFF_UP + IFF_PROMISC; 117 ifr.ifr_flags = IFF_UP + IFF_PROMISC;
117 err = ioctl(fd, SIOCSIFFLAGS, &ifr); 118 err = ioctl(fd, SIOCSIFFLAGS, &ifr);
118 if (err < 0) 119 if (err < 0)
119 { 120 {
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh
index babb109..4eec122 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh
+++ b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh
@@ -1,43 +1,42 @@
1/* $Id$ */ 1/* $Id$ */
2 2
3#ifndef CARDMODE_HH 3#ifndef CARDMODE_HH
4#define CARDMODE_HH 4#define CARDMODE_HH
5 5
6#include <string.h> 6#include <string.h>
7#include <stdlib.h> 7#include <stdlib.h>
8#include <errno.h> 8#include <errno.h>
9#include <sys/types.h> 9#include <sys/types.h>
10#include <sys/time.h> 10#include <sys/time.h>
11#include <sys/socket.h> 11#include <sys/socket.h>
12#include <netinet/in.h> 12#include <netinet/in.h>
13#include <arpa/inet.h> 13#include <arpa/inet.h>
14#include <sys/ioctl.h> 14#include <sys/ioctl.h>
15#include <linux/if.h> 15#include <linux/if.h>
16 16
17
18extern "C" 17extern "C"
19{ 18{
20#include <net/bpf.h> 19#include <net/bpf.h>
21#include <pcap.h> 20#include <pcap.h>
22} 21}
23 22
24/* Defines, used for the card setup */ 23/* Defines, used for the card setup */
25#define DEFAULT_PATH "/proc/driver/aironet/%s/Config" 24#define DEFAULT_PATH "/proc/driver/aironet/%s/Config"
26 #define CISCO_STATUS "/proc/driver/aironet/%s/Status" 25 #define CISCO_STATUS "/proc/driver/aironet/%s/Status"
27 #define CARD_TYPE_CISCO1 26 #define CARD_TYPE_CISCO1
28 #define CARD_TYPE_NG 2 27 #define CARD_TYPE_NG 2
29 #define CARD_TYPE_HOSTAP3 28 #define CARD_TYPE_HOSTAP3
30 29
31/* only for now, until we have the daemon running */ 30/* only for now, until we have the daemon running */
32/*the config file should provide these information */ 31/*the config file should provide these information */
33#define CARD_TYPE CARD_TYPE_HOSTAP 32#define CARD_TYPE CARD_TYPE_HOSTAP
34 #define SBIN_PATH "/sbin/ifconfig %s promisc up" 33 #define SBIN_PATH "/sbin/ifconfig %s promisc up"
35#define WLANCTL_PATH "/sbin/wlanctl-ng" 34#define WLANCTL_PATH "/sbin/wlanctl-ng"
36 #define IWPRIV_PATH "/sbin/iwpriv" 35 #define IWPRIV_PATH "/sbin/iwpriv"
37 36
38/* Prototypes */ 37/* Prototypes */
39int card_check_rfmon_datalink (char *device); 38int card_check_rfmon_datalink (char *device);
40int card_into_monitormode (pcap_t **, char *, int); 39int card_into_monitormode (pcap_t **, char *, int);
41int card_set_promisc_up (const char *); 40int card_set_promisc_up (const char *);
42 41
43#endif /* CARDMODE_HH */ 42#endif /* CARDMODE_HH */