Commit Graph

361 Commits

Author SHA1 Message Date
Andreas Schultz 84859e20c4 also clear the local control port when resetting the WTP state
Without reseting the port, the new control socket will be
bound to the same port as the old one.
2016-03-30 09:22:02 +02:00
Andreas Schultz 32e9567f7b rework bssid handling and stop all used bssids when leaving RUN
Instead of haing a pool of unsused BSS Id's and a list of active
BSS's (wlans), use a single array and only mark the BSS Id as used
or unused.

When leaving RUN state, release (stop) all used BSS.
2016-03-29 15:28:40 +02:00
Andreas Schultz 40a98c9075 move packet processing from main receive loop into function 2016-03-29 11:51:39 +02:00
Andreas Schultz a3c2e52d3c reset WTP state when going into DTLS TD 2016-03-29 11:51:39 +02:00
Andreas Schultz 7eddb74767 rework overly deep if statement in wtp_dfa_run 2016-03-29 11:51:39 +02:00
Andreas Schultz 73afba9a6d rework overly deep if statement in wtp_dfa_state_join 2016-03-29 11:51:39 +02:00
Andreas Schultz 0842a2c6f5 rework error path in dfa dtls 2016-03-29 11:51:39 +02:00
Andreas Schultz 43dde134b7 simplify if statement in wtp_dfa_state_discovery 2016-03-29 11:51:39 +02:00
Andreas Schultz 4117ab1f71 move discovery request generation into function 2016-03-29 11:51:39 +02:00
Andreas Schultz e6d1472824 simplify if statement in wtp_dfa_state_datacheck 2016-03-29 11:48:28 +02:00
Andreas Schultz 1091aa0830 simplify if statement in wtp_dfa_state_configure 2016-03-29 11:48:28 +02:00
Andreas Schultz f85928e0b0 rework error exits path to simplify if statement 2016-03-29 11:48:28 +02:00
Andreas Schultz e92c257ac4 move deep if statement in wtp_send_configure into function 2016-03-29 11:48:28 +02:00
Andreas Schultz 13ef6c0d62 rework deep indented if statement in wtp_dfa_retransmition_timeout 2016-03-29 11:48:28 +02:00
Andreas Schultz 258c8ff750 rework overly deep if statement in wtp_dfa_running 2016-03-29 11:48:28 +02:00
Andreas Schultz de9b54e8b1 reindent wtp_dfa_execute 2016-03-29 11:48:28 +02:00
Andreas Schultz 26415cae34 [wtp] remove curly brackets from single line if statements 2016-03-29 11:48:28 +02:00
Andreas Schultz 067f920d81 reformat some overly long code lines 2016-03-29 11:48:28 +02:00
Tobias Hintze ad27e80521 Merge pull request #2 from nm-mrt/dns-support
Handle no DNS at system start
2016-03-25 13:16:20 +01:00
Moritz Rosenthal f9bb716dac Changed name of addr_capwap.socket to addr_capwap.sockaddr
Changed FQDN size from 128 to 256 according to RFC1035
2016-03-25 12:41:43 +01:00
Andreas Schultz ea87da11ba [wtp] use goto error exit instead of deep nested if conditions
Convert WTP main() function to linux kernel style goto error exits.
2016-03-24 17:15:12 +01:00
Andreas Schultz 3b7c0adda7 [wtp] move overly deep indented wtp descriptor config parser into function 2016-03-24 17:15:12 +01:00
Andreas Schultz aa5af8056b [wtp] move overly deep indented config parser into function 2016-03-24 17:15:12 +01:00
Andreas Schultz fbe31bda21 rename variable to avoid potential type clash 2016-03-24 17:15:12 +01:00
Andreas Schultz 7293ce43da [ac] drop old libjson compatibility
json-c >= 0.11 is required now
2016-03-24 17:15:12 +01:00
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