summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/Makefile16
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc9
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh4
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/proto.cc109
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/sniff.cc4
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/sniff.hh4
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/wl_log.cc (renamed from noncore/net/wellenreiter/libwellenreiter/source/log.cc)2
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/wl_log.hh (renamed from noncore/net/wellenreiter/libwellenreiter/source/log.hh)0
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/wl_proto.cc132
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/wl_proto.hh (renamed from noncore/net/wellenreiter/libwellenreiter/source/proto.hh)6
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/wl_sock.cc (renamed from noncore/net/wellenreiter/libwellenreiter/source/sock.cc)24
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/wl_sock.hh (renamed from noncore/net/wellenreiter/libwellenreiter/source/sock.hh)6
12 files changed, 164 insertions, 152 deletions
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/Makefile b/noncore/net/wellenreiter/libwellenreiter/source/Makefile
index 3670d96..51b5ff3 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/Makefile
+++ b/noncore/net/wellenreiter/libwellenreiter/source/Makefile
@@ -1,17 +1,17 @@
1# $Id$ 1# $Id$
2 2
3INCLUDES = 3OBJ = wl_proto.o wl_sock.o wl_log.o cardmode.o sniff.o
4LIBRARIES = 4CPP = g++
5LIBOBJ = proto.o sock.o log.o cardmode.o sniff.o 5CPPFLAGS = -Wall -pedantic -g -DDEBUG
6CXX = g++ -Wall -pedantic -g $(INCLUDES) -DDEBUG
7 6
8 static:libwellenreiter.a 7 static:libwellenreiter.a
9libwellenreiter.a: $(LIBOBJ) 8libwellenreiter.a: $(OBJ)
10 ar -cr libwellenreiter.a $(LIBOBJ) 9 ar -cr libwellenreiter.a $(OBJ)
11 10
12 shared:libwellenreiter.so 11 shared:libwellenreiter.so
13libwellenreiter.so: $(LIBOBJ) 12libwellenreiter.so: $(OBJ)
14 $(CXX) -shared -o libwellenreiter.so $(LIBOBJ) 13 $(CPP) $(CPPFLAGS) -shared -o libwellenreiter.so $(OBJ)
15 14
16clean: 15clean:
17 rm -f *.o *.a *.so *~ 16 rm -f *.o *.a *.so *~
17
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc
index 3aaa4a7..c29f4d0 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc
+++ b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.cc
@@ -1,23 +1,22 @@
1/* 1/*
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#include "log.hh" 8#include "wl_log.hh"
9 9
10/* main card into monitor function */ 10/* main card into monitor function */
11int card_into_monitormode (pcap_t **orighandle, char *device, int cardtype) 11int card_into_monitormode (pcap_t **orighandle, char *device, int cardtype)
12{ 12{
13 char CiscoRFMON[35] = "/proc/driver/aironet/"; 13 char CiscoRFMON[35] = "/proc/driver/aironet/";
14 FILE *CISCO_CONFIG_FILE; 14 FILE *CISCO_CONFIG_FILE;
15 pcap_t *handle = (pcap_t*)orighandle;
16 15
17 /* Checks if we have a device to sniff on */ 16 /* Checks if we have a device to sniff on */
18 if(device == NULL) 17 if(device == NULL)
19 { 18 {
20 wl_logerr("No device given"); 19 wl_logerr("No device given");
21 return 0; 20 return 0;
22 } 21 }
23 22
@@ -28,31 +27,31 @@ int card_into_monitormode (pcap_t **orighandle, char *device, int cardtype)
28 return 0; 27 return 0;
29 } 28 }
30 wl_loginfo("Interface set to promisc mode"); 29 wl_loginfo("Interface set to promisc mode");
31 30
32 /* Check the cardtype and executes the commands to go into monitor mode */ 31 /* Check the cardtype and executes the commands to go into monitor mode */
33 if (cardtype == CARD_TYPE_CISCO) 32 if (cardtype == CARD_TYPE_CISCO)
34 { 33 {
35 /* bring the sniffer into rfmon mode */ 34 /* bring the sniffer into rfmon mode */
36 snprintf(CiscoRFMON, sizeof(CiscoRFMON), DEFAULT_PATH, device); 35 snprintf(CiscoRFMON, sizeof(CiscoRFMON) - 1, DEFAULT_PATH, device);
37 if((CISCO_CONFIG_FILE = fopen(CiscoRFMON,"w")) == NULL) 36 if((CISCO_CONFIG_FILE = fopen(CiscoRFMON,"w")) == NULL)
38 { 37 {
39 wl_logerr("Cannot open config file: %s", strerror(errno)); 38 wl_logerr("Cannot open config file: %s", strerror(errno));
40 return 0; 39 return 0;
41 } 40 }
42 fputs ("Mode: r",CISCO_CONFIG_FILE); 41 fputs ("Mode: r",CISCO_CONFIG_FILE);
43 fputs ("Mode: y",CISCO_CONFIG_FILE); 42 fputs ("Mode: y",CISCO_CONFIG_FILE);
44 fputs ("XmitPower: 1",CISCO_CONFIG_FILE); 43 fputs ("XmitPower: 1",CISCO_CONFIG_FILE);
45 fclose(CISCO_CONFIG_FILE); 44 fclose(CISCO_CONFIG_FILE);
46 } 45 }
47 else if (cardtype == CARD_TYPE_NG) 46 else if (cardtype == CARD_TYPE_NG)
48 { 47 {
49 char wlanngcmd[62]; 48 char wlanngcmd[62];
50 snprintf(wlanngcmd, sizeof(wlanngcmd), "%s %s lnxreq_wlansniff channel=1 enable=true", WLANCTL_PATH, device); 49 snprintf(wlanngcmd, sizeof(wlanngcmd) - 1, "%s %s lnxreq_wlansniff channel=1 enable=true", WLANCTL_PATH, device);
51 if (system(wlanngcmd) != 0) 50 if (system(wlanngcmd) != 0)
52 { 51 {
53 wl_logerr("Could not set %s in raw mode, check cardtype", device); 52 wl_logerr("Could not set %s in raw mode, check cardtype", device);
54 return 0; 53 return 0;
55 } 54 }
56 } 55 }
57 else if (cardtype == CARD_TYPE_HOSTAP) 56 else if (cardtype == CARD_TYPE_HOSTAP)
58 { 57 {
@@ -63,16 +62,16 @@ int card_into_monitormode (pcap_t **orighandle, char *device, int cardtype)
63} 62}
64 63
65/* Set card into promisc mode */ 64/* Set card into promisc mode */
66int card_set_promisc_up (const char *device) 65int card_set_promisc_up (const char *device)
67{ 66{
68 char ifconfigcmd[32]; 67 char ifconfigcmd[32];
69 int retval=0; 68 int retval=0;
70 69
71 snprintf(ifconfigcmd, sizeof(ifconfigcmd), SBIN_PATH, device); 70 snprintf(ifconfigcmd, sizeof(ifconfigcmd) - 1, SBIN_PATH, device);
72 retval = system(ifconfigcmd); 71 retval = system(ifconfigcmd);
73 72
74 if(retval != 0) 73 if(retval != 0)
75 return 0; 74 return 0;
76 75
77return 1; 76return 1;
78} 77}
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh
index b85b7b7..6ec5b95 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh
+++ b/noncore/net/wellenreiter/libwellenreiter/source/cardmode.hh
@@ -5,22 +5,18 @@
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
14extern "C"
15{
16#include <net/bpf.h> 13#include <net/bpf.h>
17#include <pcap.h> 14#include <pcap.h>
18}
19 15
20/* Defines, used for the card setup */ 16/* Defines, used for the card setup */
21#define DEFAULT_PATH "/proc/driver/aironet/%s/Config" 17#define DEFAULT_PATH "/proc/driver/aironet/%s/Config"
22 #define CARD_TYPE_CISCO1 18 #define CARD_TYPE_CISCO1
23 #define CARD_TYPE_NG 2 19 #define CARD_TYPE_NG 2
24 #define CARD_TYPE_HOSTAP3 20 #define CARD_TYPE_HOSTAP3
25 21
26/* only for now, until we have the daemon running */ 22/* only for now, until we have the daemon running */
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/proto.cc b/noncore/net/wellenreiter/libwellenreiter/source/proto.cc
deleted file mode 100644
index a1228e4..0000000
--- a/noncore/net/wellenreiter/libwellenreiter/source/proto.cc
+++ b/dev/null
@@ -1,109 +0,0 @@
1/*
2 * Communication protocol
3 *
4 * $Id$
5 */
6
7#include "proto.hh"
8#include "sock.hh"
9#include "log.hh"
10
11/* Send found network to GUI */
12int send_network_found (const char *guihost, int guiport, void *structure)
13{
14 wl_network_t *ptr;
15 char buffer[2048];
16 char temp[5];
17
18 ptr = (wl_network_t *)structure;
19
20 memset(buffer, 0, 2048);
21
22 /* Type = Found new net */
23 memcpy(buffer, "01", 2);
24
25 /* Set Net-type */
26 memset(temp, 0, sizeof(temp));
27 snprintf(temp, 2, "%d", ptr->net_type);
28 memcpy(buffer + 2, temp, 1);
29
30 /* Set channel */
31 memset(temp, 0, sizeof(temp));
32
33 if(ptr->channel < 10)
34 snprintf(temp, 3, "0%d", ptr->channel);
35 else
36 snprintf(temp, 3, "%d", ptr->channel);
37
38 memcpy(buffer + 3, temp, 2);
39
40 /* Set WEP y/n */
41 memset(temp, 0, sizeof(temp));
42 snprintf(temp, 2, "%d", ptr->wep);
43 memcpy(buffer + 5, temp, 1);
44
45 /* Set MAC address */
46 memcpy(buffer + 6, ptr->mac, 17);
47
48 /* Set lenght of ssid */
49 memset(temp, 0, sizeof(temp));
50
51 if(ptr->ssid_len > 99)
52 snprintf(temp, 4, "%d", ptr->ssid_len);
53 else if(ptr->ssid_len < 10)
54 snprintf(temp, 4, "00%d", ptr->ssid_len);
55 else
56 snprintf(temp, 4, "0%d", ptr->ssid_len);
57
58 memcpy(buffer + 23, temp, 3);
59
60 /* Set ssid */
61 memcpy(buffer + 26, ptr->bssid, ptr->ssid_len);
62
63 /* Send prepared buffer to GUI */
64#ifdef DEBUG
65 wl_loginfo("Sending network to GUI: '%s'", buffer);
66#endif
67
68 sendcomm(guihost, guiport, buffer);
69
70 return 1;
71}
72
73/* Fill buffer into structur */
74int get_network_found (void *structure, const char *buffer)
75{
76 wl_network_t *ptr;
77 char temp[512];
78
79 ptr = (wl_network_t *)structure;
80
81 /* Get net type */
82 memset(temp, 0, sizeof(temp));
83 memcpy(temp, buffer + 2, 1);
84 ptr->net_type = atoi(temp);
85
86 /* Get channel */
87 memset(temp, 0, sizeof(temp));
88 memcpy(temp, buffer + 3, 2);
89 ptr->channel = atoi(temp);
90
91 /* Set WEP y/n */
92 memset(temp, 0, sizeof(temp));
93 memcpy(temp, buffer + 5, 1);
94 ptr->wep = atoi(temp);
95
96 /* Set MAC address */
97 memcpy(ptr->mac, buffer + 6, 17);
98 ptr->mac[17]='\0';
99
100 /* Set lenght of ssid */
101 memset(temp, 0, sizeof(temp));
102 memcpy(temp, buffer + 23, 3);
103 ptr->ssid_len = atoi(temp);
104
105 /* Set ssid */
106 memcpy(ptr->bssid, buffer + 26, ptr->ssid_len + 1);
107
108 return 1;
109}
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/sniff.cc b/noncore/net/wellenreiter/libwellenreiter/source/sniff.cc
index c703052..e2169ca 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/sniff.cc
+++ b/noncore/net/wellenreiter/libwellenreiter/source/sniff.cc
@@ -2,18 +2,18 @@
2 * rfmon mode sniffer 2 * rfmon mode sniffer
3 * 3 *
4 * $Id$ 4 * $Id$
5 */ 5 */
6 6
7#include "sniff.hh" 7#include "sniff.hh"
8#include "ieee802_11.hh" 8#include "ieee802_11.hh"
9#include "extract.hh" 9#include "extract.hh"
10#include "log.hh" 10#include "wl_log.hh"
11#include "proto.hh" 11#include "wl_proto.hh"
12 12
13/* Main function, checks packets */ 13/* Main function, checks packets */
14void process_packets(const struct pcap_pkthdr *pkthdr, const unsigned char *packet, char *guihost, int guiport) 14void process_packets(const struct pcap_pkthdr *pkthdr, const unsigned char *packet, char *guihost, int guiport)
15{ 15{
16 unsigned int caplen = pkthdr->caplen; 16 unsigned int caplen = pkthdr->caplen;
17 unsigned int length = pkthdr->len; 17 unsigned int length = pkthdr->len;
18 u_int16_t fc; 18 u_int16_t fc;
19 unsigned int HEADER_LENGTH; 19 unsigned int HEADER_LENGTH;
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/sniff.hh b/noncore/net/wellenreiter/libwellenreiter/source/sniff.hh
index c7108ac..713b383 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/sniff.hh
+++ b/noncore/net/wellenreiter/libwellenreiter/source/sniff.hh
@@ -7,22 +7,18 @@
7#include <stdio.h> 7#include <stdio.h>
8#include <stdlib.h> 8#include <stdlib.h>
9#include <errno.h> 9#include <errno.h>
10#include <sys/types.h> 10#include <sys/types.h>
11#include <sys/time.h> 11#include <sys/time.h>
12#include <sys/socket.h> 12#include <sys/socket.h>
13#include <netinet/in.h> 13#include <netinet/in.h>
14#include <arpa/inet.h> 14#include <arpa/inet.h>
15
16extern "C"
17{
18#include <net/bpf.h> 15#include <net/bpf.h>
19#include <pcap.h> 16#include <pcap.h>
20}
21 17
22#define NONBROADCASTING "non-broadcasting" 18#define NONBROADCASTING "non-broadcasting"
23 19
24/* holds all the interresting data */ 20/* holds all the interresting data */
25struct packetinfo 21struct packetinfo
26{ 22{
27 int isvalid; 23 int isvalid;
28 int pktlen; 24 int pktlen;
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/log.cc b/noncore/net/wellenreiter/libwellenreiter/source/wl_log.cc
index af7f909..7adaba8 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/log.cc
+++ b/noncore/net/wellenreiter/libwellenreiter/source/wl_log.cc
@@ -1,15 +1,15 @@
1/* 1/*
2 * Small functions to log to syslog 2 * Small functions to log to syslog
3 * 3 *
4 * $Id$ 4 * $Id$
5 */ 5 */
6 6
7#include "log.hh" 7#include "wl_log.hh"
8 8
9/* Log to syslog INFO */ 9/* Log to syslog INFO */
10void wl_loginfo(const char *fmt,...) 10void wl_loginfo(const char *fmt,...)
11{ 11{
12 12
13 char buffer[4096]; 13 char buffer[4096];
14 va_list ap; 14 va_list ap;
15 15
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/log.hh b/noncore/net/wellenreiter/libwellenreiter/source/wl_log.hh
index 8f6e543..8f6e543 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/log.hh
+++ b/noncore/net/wellenreiter/libwellenreiter/source/wl_log.hh
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/wl_proto.cc b/noncore/net/wellenreiter/libwellenreiter/source/wl_proto.cc
new file mode 100644
index 0000000..f15523f
--- a/dev/null
+++ b/noncore/net/wellenreiter/libwellenreiter/source/wl_proto.cc
@@ -0,0 +1,132 @@
1/*
2 * Communication protocol
3 *
4 * $Id$
5 */
6
7#include "wl_proto.hh"
8#include "wl_log.hh"
9#include "wl_sock.hh"
10
11/* Adds a field to the buffer */
12int add_field(char *buffer, char *string, int len)
13{
14 char newlen[5];
15
16 /* 3 Byte = Length */
17 snprintf(newlen, sizeof(newlen) - 1, "%.3d", len);
18 memcpy(buffer, newlen, 3);
19
20 /* Length bytes = Value */
21 memcpy(buffer + 3, string, atoi(newlen));
22
23 /* Return length of attached field */
24 return (atoi(newlen) + 3);
25}
26
27int get_field(const char *buffer, char *out)
28{
29 char len[5];
30
31 /* Get length of value */
32 memcpy(len, buffer, 3);
33
34 /* Copy buffer to out pointer */
35 memset(out, 0, atoi(len) + 1);
36 memcpy(out, buffer + 3, atoi(len));
37
38 return atoi(len) + 3;
39}
40
41/* Send found network to GUI */
42int send_network_found (const char *guihost, int guiport, void *structure)
43{
44 wl_network_t *ptr;
45 char buffer[2048];
46 char temp[128];
47 int retval=0, len=0;
48
49 memset(temp, 0, sizeof(temp));
50
51 ptr = (wl_network_t *)structure;
52
53 /* Type = Found new net (without length field) */
54 memset(temp, 0, sizeof(temp));
55 snprintf(temp, sizeof(temp), "%.2d", NETFOUND);
56 memcpy(buffer, temp, 2);
57 len += 2;
58
59 /* Set Net-type */
60 memset(temp, 0, sizeof(temp));
61 snprintf(temp, sizeof(temp), "%d", ptr->net_type);
62 retval = add_field(buffer + len, temp, 1);
63 len += retval;
64
65 /* Set channel */
66 memset(temp, 0, sizeof(temp));
67 snprintf(temp, sizeof(temp), "%.2d", ptr->channel);
68 retval = add_field(buffer + len, temp, 2);
69 len += retval;
70
71 /* Set WEP y/n */
72 memset(temp, 0, sizeof(temp));
73 snprintf(temp, sizeof(temp), "%d", ptr->wep);
74 retval = add_field(buffer + len, temp, 1);
75 len += retval;
76
77 /* Set Mac */
78 retval = add_field(buffer + len, (char *)ptr->mac, 17);
79 len += retval;
80
81 /* Set ssid */
82 retval = add_field(buffer + len, (char *)ptr->bssid, ptr->ssid_len);
83
84 /* Send prepared buffer to GUI */
85#ifdef DEBUG
86 wl_loginfo("Sending network to GUI: '%s'", buffer);
87#endif
88
89 wl_send(guihost, guiport, buffer);
90
91 return 1;
92}
93
94/* Fill buffer into structur */
95int get_network_found (void *structure, const char *buffer)
96{
97 wl_network_t *ptr;
98 char temp[512];
99 int retval=0, len=0;
100
101 ptr = (wl_network_t *)structure;
102
103 /* packet type already determined */
104 len += 2;
105
106 /* Get net type */
107 memset(temp, 0, sizeof(temp));
108 retval = get_field(buffer + len, temp);
109 len += retval;
110 ptr->net_type = atoi(temp);
111
112 /* Get channel */
113 memset(temp, 0, sizeof(temp));
114 retval = get_field(buffer + len, temp);
115 len += retval;
116 ptr->channel = atoi(temp);
117
118 /* Set WEP y/n */
119 memset(temp, 0, sizeof(temp));
120 retval = get_field(buffer + len, temp);
121 len += retval;
122 ptr->wep = atoi(temp);
123
124 /* Set MAC address */
125 retval = get_field(buffer + len, ptr->mac);
126 len += retval;
127
128 /* Set BSSID */
129 retval = get_field(buffer + len, ptr->bssid);
130
131 return 1;
132}
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/proto.hh b/noncore/net/wellenreiter/libwellenreiter/source/wl_proto.hh
index e3e9f50..f755589 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/proto.hh
+++ b/noncore/net/wellenreiter/libwellenreiter/source/wl_proto.hh
@@ -1,12 +1,12 @@
1/* $Id$ */ 1/* $Id$ */
2 2
3#ifndef PROTO_HH 3#ifndef WLPROTO_HH
4#define PROTO_HH 4#define WLPROTO_HH
5 5
6#include <stdio.h> 6#include <stdio.h>
7#include <string.h> 7#include <string.h>
8#include <stdlib.h> 8#include <stdlib.h>
9 9
10/* Type definitions, to be continued */ 10/* Type definitions, to be continued */
11#define NETFOUND 01 11#define NETFOUND 01
12#define NETLOST 02 12#define NETLOST 02
@@ -20,9 +20,9 @@ typedef struct {
20 int net_type; /* 1 = Accesspoint ; 2 = Ad-Hoc */ 20 int net_type; /* 1 = Accesspoint ; 2 = Ad-Hoc */
21 int ssid_len; /* Length of SSID */ 21 int ssid_len; /* Length of SSID */
22 int channel; /* Channel */ 22 int channel; /* Channel */
23 int wep; /* 1 = WEP enabled ; 0 = disabled */ 23 int wep; /* 1 = WEP enabled ; 0 = disabled */
24 char mac[64]; /* MAC address of Accesspoint */ 24 char mac[64]; /* MAC address of Accesspoint */
25 char bssid[128]; /* BSSID of Accesspoint */ 25 char bssid[128]; /* BSSID of Accesspoint */
26} wl_network_t; 26} wl_network_t;
27 27
28#endif /* PROTO_HH */ 28#endif /* WLPROTO_HH */
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/sock.cc b/noncore/net/wellenreiter/libwellenreiter/source/wl_sock.cc
index 90fc20a..5714afb 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/sock.cc
+++ b/noncore/net/wellenreiter/libwellenreiter/source/wl_sock.cc
@@ -1,19 +1,19 @@
1/* 1/*
2 * Socket operations for wellenreiter 2 * Socket operations for wellenreiter
3 * 3 *
4 * $Id$ 4 * $Id$
5 */ 5 */
6 6
7#include "sock.hh" 7#include "wl_sock.hh"
8#include "log.hh" 8#include "wl_log.hh"
9 9
10/* Setup UDP Socket for incoming commands */ 10/* Setup UDP Socket for incoming commands */
11int commsock(const char *host, int port) 11int wl_setupsock(const char *host, int port)
12{ 12{
13 struct sockaddr_in saddr; 13 struct sockaddr_in saddr;
14 int sock; 14 int sock;
15 15
16 if((sock=socket(AF_INET, SOCK_DGRAM, 0)) < 0) 16 if((sock=socket(AF_INET, SOCK_DGRAM, 0)) < 0)
17 { 17 {
18 wl_logerr("Cannot set up socket: %s", strerror(errno)); 18 wl_logerr("Cannot set up socket: %s", strerror(errno));
19 return -1; 19 return -1;
@@ -30,17 +30,17 @@ int commsock(const char *host, int port)
30 close(sock); 30 close(sock);
31 return -1; 31 return -1;
32 } 32 }
33 33
34 return sock; 34 return sock;
35} 35}
36 36
37/* Send a string to commsock */ 37/* Send a string to commsock */
38int sendcomm(const char *host, int port, const char *string, ...) 38int wl_send(const char *host, int port, const char *string, ...)
39{ 39{
40 int sock; 40 int sock;
41 char buffer[4096]; 41 char buffer[4096];
42 struct sockaddr_in saddr; 42 struct sockaddr_in saddr;
43 va_list ap; 43 va_list ap;
44 44
45 /* Generate string */ 45 /* Generate string */
46 memset(buffer, 0, sizeof(buffer)); 46 memset(buffer, 0, sizeof(buffer));
@@ -58,36 +58,34 @@ int sendcomm(const char *host, int port, const char *string, ...)
58 wl_logerr("Cannot set up socket: %s", strerror(errno)); 58 wl_logerr("Cannot set up socket: %s", strerror(errno));
59 return -1; 59 return -1;
60 } 60 }
61 61
62 if(sendto(sock, buffer, sizeof(buffer), 0, (struct sockaddr *)&saddr, sizeof(saddr)) < 0) 62 if(sendto(sock, buffer, sizeof(buffer), 0, (struct sockaddr *)&saddr, sizeof(saddr)) < 0)
63 { 63 {
64 wl_logerr("Cannot write to socket: %s", strerror(errno)); 64 wl_logerr("Cannot write to socket: %s", strerror(errno));
65 close(sock); 65 close(sock);
66 return 0; 66 return -1;
67 } 67 }
68 68
69 if(close(sock) < 0) 69 if(close(sock) < 0)
70 wl_logerr("Cannot close socket: %s", strerror(errno)); 70 wl_logerr("Cannot close socket: %s", strerror(errno));
71 71
72 return 1; 72 return 0;
73} 73}
74 74
75/* Check for new messages on commsock */ 75/* Check for new messages on commsock */
76int recvcomm(int *sock, char *out, int maxlen) 76int wl_recv(int *sock, char *out, int maxlen)
77{ 77{
78 struct sockaddr_in *cliaddr; 78 struct sockaddr_in *cliaddr;
79 socklen_t len=sizeof(struct sockaddr); 79 socklen_t len=sizeof(struct sockaddr);
80 char buffer[128], retval[3]; 80 char retval[3];
81
82 memset(buffer, 0, sizeof(buffer));
83 if(recvfrom(*sock, buffer, sizeof(buffer)-1, 0, (struct sockaddr *)cliaddr, &len) < 0)
84 return -1;
85 81
86 memset(out, 0, maxlen); 82 memset(out, 0, maxlen);
87 memcpy(out, buffer, maxlen - 1); 83 if(recvfrom(*sock, out, maxlen - 1, 0, (struct sockaddr *)cliaddr, &len) < 0)
84 return -1;
88 85
86 /* Get packet type and return it */
89 memset(retval, 0, sizeof(retval)); 87 memset(retval, 0, sizeof(retval));
90 memcpy(retval, out, 2); 88 memcpy(retval, out, 2);
91 89
92 return atoi(retval); 90 return atoi(retval);
93} 91}
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/sock.hh b/noncore/net/wellenreiter/libwellenreiter/source/wl_sock.hh
index 611e335..6ddbaef 100644
--- a/noncore/net/wellenreiter/libwellenreiter/source/sock.hh
+++ b/noncore/net/wellenreiter/libwellenreiter/source/wl_sock.hh
@@ -8,13 +8,13 @@
8#include <netinet/in.h> 8#include <netinet/in.h>
9#include <arpa/inet.h> 9#include <arpa/inet.h>
10#include <signal.h> 10#include <signal.h>
11#include <string.h> 11#include <string.h>
12#include <unistd.h> 12#include <unistd.h>
13#include <stdlib.h> 13#include <stdlib.h>
14#include <errno.h> 14#include <errno.h>
15 15
16int commsock(const char *, int); 16int wl_setupsock(const char *, int);
17int sendcomm(const char *, int, const char *, ...); 17int wl_send(const char *, int, const char *, ...);
18int recvcomm(int *, char *, int); 18int wl_recv(int *, char *, int);
19 19
20#endif /* WLSOCK_HH */ 20#endif /* WLSOCK_HH */