Commit Graph

336 Commits

Author SHA1 Message Date
Andreas Schultz
afd76e003d fix non-debug builds 2016-03-24 17:15:12 +01:00
Andreas Schultz
40071fb06d fix AC compilation 2016-03-24 17:15:12 +01:00
Andreas Schultz
29295d1434 [ac] rename last remaining CyaSSL refrence to wolfSSL 2016-03-24 17:15:12 +01:00
Andreas Schultz
2109c62b80 implement basic 802.11n support
Add suport to enable 80211n support on the BSS and set
station parameters through the "Add Station" procedure.

Setting 802.11n radio parameters is rudementary and does
not work yet.
2016-03-24 17:15:11 +01:00
Andreas Schultz
e3a977e40a [wtp] rework wtp_radio_setconfiguration
no functional changes, only code shuffeling:
* move 802.11 IE handling into function
* rework deep if conditions to be simple
* reformat
2016-03-24 17:15:11 +01:00
Andreas Schultz
730f110a25 [wtp] implement vendor specific elements 2016-03-24 17:15:11 +01:00
Moritz Rosenthal
7b9f515bd7 If there is no DNS available on system start the capwap-wtp will stop while evaluating the configuration. I fixed that by checking if the address was yet translated on every address access. If not a DNS request is started before continuing. 2016-03-24 07:09:29 +01:00
Andreas Schultz
471d1058c4 [wtp] prepare message elements for vendor element handling
convert message element type into a struct{ vendor, type }.
Vendor will be 0 for all RFC types.
2016-03-08 10:21:51 +01:00
Andreas Schultz
140be9b143 simplify element list handling
Doing all the work to create a list element only to fail when we can
not decode the element is a waste of effort.
Decode the element first and only on success handle the list operations.
2016-03-07 18:25:49 +01:00
Andreas Schultz
38f7681608 constify capwap_message_elements_ops 2016-03-07 18:25:49 +01:00
Andreas Schultz
627a38a556 move the category setting into the element ops
this prepares the element ops for decoding vendor
ies into seperate types.

It also makes sense to keep all information about a IE
in one place.
2016-03-07 18:09:13 +01:00
Andreas Schultz
1436fc9e5f rename overly verbose capwap_message_elements_ops
The struct is already conveys the scope of the operations,
repeating it in the name of ops again is redundant and
bloats the resulting source code.

Rename the opt to shorter versions.
2016-03-07 17:12:48 +01:00
Andreas Schultz
78a8a75c6b start 802.11n 2016-03-07 16:23:49 +01:00
Andreas Schultz
667d7a59e7 transition to WolfSSL API
Rename all remaining CyaSSL API references to WolfSSL.
Newer WolfSSL have significant DTLS fixes and security
improvements. Continuing to support old CyaSSL releases
would impact the perfomance of encrypted WTP sessions.
2016-03-07 15:32:36 +01:00
Andreas Schultz
d366a98717 add support for new NL80211_ATTR_IFACE_SOCKET_OWNER netlink attribute 2016-03-07 14:45:43 +01:00
Andreas Schultz
973bf5eab7 disable IPv6 on WTP AP interface 2016-03-04 18:39:08 +01:00
Andreas Schultz
0175052cf1 set transport header when injecting 802.3 frames
Resetting the headers is not enoug, we have to make sure
the transport header points the right position and the
skb->protocol is initialized to the payload protocol.
2016-03-04 17:05:56 +01:00
Andreas Schultz
5f98005414 handle WTP QoS IE 2016-03-04 17:04:21 +01:00
Andreas Schultz
d93cd1044d reformat WTP config file reader 2016-03-03 16:44:56 +01:00
Andreas Schultz
2b489947c2 add support for setting the STA WME fields from WMM 2016-03-03 16:44:15 +01:00
Andreas Schultz
4d56938321 reindent ieee80211_retrieve_information_elements_position 2016-03-03 15:27:29 +01:00
Andreas Schultz
d68bc01d00 change supportedrates config setting to the actual MBit value
supportedrates is now a list instead on an array and float values
(e.g. 5.5) are permited.
2016-03-03 08:59:49 +01:00
Andreas Schultz
8dc30ae3c4 rework socket and discovery handling
Swtich sockets to connected when talking to a specific AC. Use
unconnected UDP sockets only during DISCOVERY.

In JOIN, we need send our local address. The old, routing table
based local address discovery is broken for many reasons (VRF,
policy routing, ...). With a connected socket, we can the same
information with a simple getsockname.

During DISCOVERY we are talking to all potential AC's at once.
So using an unconnected socket makes still sense.
2016-03-02 15:13:56 +01:00
Andreas Schultz
067eb8d11a remove socket.o reference from kernel build 2016-02-29 15:45:23 +01:00
Andreas Schultz
484002b3e6 add support for CAPWAP IEEE 802.11 Information Element to AssocResponse 2016-02-29 15:30:54 +01:00
Andreas Schultz
a85f07f18a change buffer data type in hexdump logging to unsigned char 2016-02-29 15:30:19 +01:00
Andreas Schultz
e4a5abba65 add support for CAPWAP IEEE 802.11 Information Element 2016-02-29 14:32:02 +01:00
Andreas Schultz
9fee37a994 rework wifi type and rate logic
Hard coding basic rates is wrong. Each Wifi types does expect
some default basic rates. However those rates are not set in
stone and the AC is permited to set then to whatever it deems
ok. This might prevent client from connecting, but it still is
the AC decission to do so.

This is first step towards a more flexible basic rate handling.
2016-02-29 14:26:13 +01:00
Andreas Schultz
3bfd0c5642 logging: add alternate log syntax 2016-02-29 14:23:58 +01:00
Andreas Schultz
c66dc85c04 add hexdump log formater 2016-02-29 14:23:41 +01:00
Andreas Schultz
b80073b756 inject 802.11 frames through the normal device queue 2016-02-25 12:39:19 +01:00
Andreas Schultz
0c19932b58 send 802.3 frames through the normal device TX path
Injecting 802.11 frames underneath the device logic bypasses
the queue logik and leads to delay. Pass 802.3 frames through
the normal device TX chain.

This has the added benefit that AF_PACKET sockets (e.g. tcpdump)
see the send frames.
2016-02-22 16:56:03 +01:00
Andreas Schultz
f3119eec8d rework kernel socket handling to use udp tunnel infrastructure
Reimplmenting what is already there doesn't make sense. Switch
to the existing and UDP tunnel support code and handle the data
channel as a connected UDP socket
2016-02-22 16:54:54 +01:00
Andreas Schultz
cc5b38f322 impelment station binding to wlanid
* add a kernel bash hash list to track station to
  radio and wlan id binding
* enforce binding on recv
* configure binding through netlink interface from
  WTP process
2016-02-18 19:36:22 +01:00
Andreas Schultz
a6d0efe91a wtp: rework kernel socket handling
Switch to a connected UDP kernel socket. Comparing the
local and remote IPs is no longer required and handling
different IP versions and UDP types is automatic.

The WTP logic needs to reopen the socket on demand now.
2016-02-18 15:06:39 +01:00
Andreas Schultz
cae859e42f [debug] add debug trace logging for some procedures 2016-02-17 11:56:03 +01:00
Andreas Schultz
c71a9db6ed remove IEEE 802.11 WTP Radio Information from responses
RFC 5416 does require IEEE 802.11 WTP Radio Information for
Discovery and Join Response Messages in Chapter 5. However
Chapter 6.25 indicates that this IE should only be included
in the request messages.
2016-02-17 11:52:59 +01:00
Andreas Schultz
3a9a673d71 register pernet support befor anything else 2016-02-08 17:33:31 +01:00
Andreas Schultz
1ee42c1881 unsigned long is 64bit on some platforms, use the 32bit datatype instead 2016-02-08 17:33:00 +01:00
Andreas Schultz
f6711c3b14 Vendor Payload can appear multiple times, make it a list element 2016-02-08 17:31:40 +01:00
Andreas Schultz
385832a010 start with network namespace support
This is incomplete. There are several places left where a global
variable is used (e.g. there can only be one AC session).
2016-02-05 17:43:15 +01:00
Andreas Schultz
69ca3d3256 change __genl_const to const
__genl_const was depreciated some time ago.
2016-02-05 17:42:43 +01:00
Andreas Schultz
8c20d78941 remove dos style newlines 2016-02-05 17:38:49 +01:00
Andreas Schultz
93cb64ca6f convert (partially) to wolfssl 2016-02-05 17:33:57 +01:00
Andreas Schultz
7e0b977fcd fix strict aliasing errors 2016-02-05 17:33:57 +01:00
vemax78
58c63bbc4e Fix error in retrasmisson packets 2016-02-05 17:33:09 +01:00
vemax78
729ed4f768 Use the capwap_exit instead of exit 2015-01-24 13:17:47 +01:00
vemax78
8042cd2e04 Merge 2015-01-24 13:14:05 +01:00
Alexis La Goutte
28112ee228 Fix Branch condition evaluates to a garbage value found by Clang Analyzer
---
 src/ac/ac_backend.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
2015-01-22 10:19:38 +01:00
Alexis La Goutte
63189997df Fix Uninitialized argument value found by Clang Analyzer
(Need to be confirmed)
---
 src/ac/ac_dfa_join.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
2015-01-22 10:19:38 +01:00
Alexis La Goutte
4d1b60a6c1 Fix Dead Store (Dead increment) found by Clang Analyzer
---
 src/common/binding/ieee80211/ieee80211.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
2015-01-22 10:19:38 +01:00
Alexis La Goutte
49f7ba41df Fix Dead Store (Dead increment) found by Clang Analyzer
---
 src/wtp/binding/ieee80211/wifi_drivers.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
2015-01-22 10:19:38 +01:00
Alexis La Goutte
d12d15d67d Fix Dead Store (Dead Assignment) found by Clang Analyzer
---
 src/wtp/wtp_dfa.c | 2 --
 1 file changed, 2 deletions(-)
2015-01-22 10:19:38 +01:00
Alexis La Goutte
e5f1fbd992 Fix Dead Store (Dead Assignment) found by Clang Analyzer
---
 src/wtp/binding/ieee80211/wifi_nl80211.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
2015-01-22 10:19:38 +01:00
Alexis La Goutte
3a51803eba Fix Dead Store (Dead Assignment) found by Clang Analyzer
---
 src/common/capwap_protocol.c | 2 --
 1 file changed, 2 deletions(-)
2015-01-22 10:19:38 +01:00
Alexis La Goutte
1ba7fc2355 Add exit(1) when ASSERT()
Move to 520 issues found by Clang Analyzer to only 18 !
---
 src/common/capwap_debug.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
2015-01-22 10:19:38 +01:00
Alexis La Goutte
addf009bae Fix equality comparison with extraneous parentheses [-Werror,-Wparentheses-equality] when build with Clang
---
 src/wtp/wtp_dfa_discovery.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
2015-01-22 10:19:38 +01:00
vemax78
32a25aa34e Remove printk 2015-01-11 22:17:59 +01:00
vemax78
5fb61094d7 Update patch to last trunk version of OpenWRT/Compat Wireless 2015-01-06 22:56:10 +01:00
vemax78
c7fa31ce56 Fix data channel defrag 2015-01-04 21:31:25 +01:00
vemax78
ceb6ee2322 Fix data channel defrag 2015-01-04 21:30:28 +01:00
vemax78
21ffd7cd23 Fix data channel fragmentation 2014-12-28 20:49:21 +01:00
vemax78
0c27172ca6 Separate netlink socket for receive message and send event 2014-12-28 16:14:19 +01:00
vemax78
b05d6631f4 Fix reset data session 2014-12-28 15:53:11 +01:00
vemax78
7c9ecebe7d Add debug output messages 2014-12-28 15:48:52 +01:00
vemax78
b64d563e33 Fix macro 2014-12-28 15:48:15 +01:00
vemax78
f05c7acdcf Fix sequence number of control messages 2014-12-27 19:10:08 +01:00
vemax78
2894b2c7aa Fix error management to send socket functions 2014-12-27 18:45:09 +01:00
vemax78
98069694c5 Teardown connection if receive packet in unknown state 2014-12-26 15:37:30 +01:00
vemax78
6b1deb48aa Remove debug dump 2014-12-26 14:55:09 +01:00
vemax78
80b1780d92 Add critical section on netlink send message 2014-12-24 13:31:24 +01:00
vemax78
33ea96d9f5 Added functionality into capwap data channel kernel module 2014-12-23 21:12:25 +01:00
vemax78
e2dea6b3de Improved session management into kernel module. A session is now indexed by
ip address and session id.
2014-10-20 19:53:32 +02:00
vemax78
8937ded1d3 Improved the management of soap request/response.
The director has the opportunity to change the configuration of AC in join
connection. The virtual interfaces which encapsulate the wifi stations is
managed dynamically by the Director.
The AC must request authorization from Director for associate a station.
2014-10-19 21:37:22 +02:00
vemax78
63f5fcea19 Fix fragment error
Add stub for virtual interfaces of data packet
2014-09-21 11:20:35 +02:00
vemax78
8d9985fdea The capwap data channel migrated from userspace to kernalspace 2014-09-10 21:58:23 +02:00
vemax78
71006a9121 Fix minor bug.
Add draft of ac kernel module.
2014-06-15 09:09:48 +02:00
vemax78
2d6c4c4dd8 Check netlink file descriptor only if receive IEEE 802.11 packets in usermode. 2014-06-14 14:52:02 +02:00
vemax78
c3865e4cbb Change WTP Kernel Module path 2014-06-10 22:34:38 +02:00
vemax78
089a044f3f Fix capwap protocol and optional wireless information header.
Complete IEEE802.11 frames tunnel WTP side.
Now WTP can send data packets to the AC.
2014-06-09 22:30:04 +02:00
vemax78
67daa8dcbb Permit to forward IEEE802.11 Data Packet from kernel space to user space bypass
kernel network stack.
2014-06-07 22:37:19 +02:00
vemax78
92c86462dc Created a patch for mac80211 that allows to capture the raw IEEE80211 packets
(management, control, data) of one or more wireless interfaces.
Not necessary the monitor interface. The patch allows to discriminate which
IEEE802.11 types and IEEE802.11 subtypes capture.
2014-06-04 22:58:34 +02:00
vemax78
0ebf1a434f Add skeleton code for CAPWAP Data Channel kernel module.
The IEEE802.11 data packets will embedded into CAPWAP Data Channel directly in
kernel mode. The CAPWAP Data Channel in usermode be used only for compatibility
reasons.
2014-06-01 16:32:30 +02:00
vemax78
289fbe01c7 Fix error into wifi change frequency 2014-05-28 22:49:03 +02:00
vemax78
3573dd4251 Removing the OpenSSL library for CyaSSL.
OpenSSL license was not compatible with the GPL license.
2014-05-15 21:43:21 +02:00
vemax78
e1023a388e Add business logic of Authentication/Association in SplitMAC mode. 2014-04-25 22:05:36 +02:00
vemax78
d4d7649f3b Removed the necessity of having to calculate each time the string of
macaddress stations.
2014-04-23 22:39:19 +02:00
vemax78
1c810c2d72 Fix disconnect station in local mac.
Fix management of AC IEEE802.11 management packet to station.
2014-04-23 22:11:24 +02:00
vemax78
ebb4eb0c98 Fix function/variable name
Prepared to management the IEEE802.11 Management Frame coming from the AC.
2014-04-22 23:02:49 +02:00
vemax78
7668ab7c7c Moved the management of the AP and Stations from nl80211 driver to generic wifi. 2014-04-21 23:16:56 +02:00
vemax78
fbd717b779 Added Delete Station Message Element into Station Configuration Message. 2014-04-15 22:26:31 +02:00
vemax78
21661277a0 Add station timer. Fix multiple bug. 2014-04-15 21:59:35 +02:00
vemax78
3e06393469 Change the location of binding file. 2014-04-15 16:45:39 +02:00
vemax78
3569267283 Big update with type fix and minor new function.
Complete the IEEE802.11 Station Association with interation of AC in LocalMAC mode.
After the IEEE802.11 Authorization / Association is complete, the AC can now
authorize the WTP to accept data station packets with Station Configuration Message.
2014-04-14 22:33:12 +02:00
vemax78
2ec98ac74d Prepare for add station configuration message 2014-04-09 19:25:08 +02:00
vemax78
127d2f944c Removed obsolete functions 2014-04-09 18:45:22 +02:00
vemax78
539fa51e69 Fix functions and logic.
Add new functions
Add logic into AC for create/destroy station
2014-04-06 17:02:31 +02:00
vemax78
ae97e96f57 Started implementing the packet management of IEEE802.11 by AC side.
Made it clear some constants.
2014-04-02 22:40:04 +02:00
vemax78
7fd2d4357a Preparations to parse IEEE802.11 management packets 2014-03-26 21:35:52 +01:00
vemax78
4c466d68be Added the function to extract the frame from CAPWAP data packet 2014-03-23 22:24:59 +01:00