3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-11-25 01:19:23 +01:00
Commit Graph

414 Commits

Author SHA1 Message Date
Denis Kenzior
3b4cc1bfe2 wiphy: Rename get_ext_feature API
to has_ext_feature
2018-05-24 15:24:16 -05:00
Tim Kourt
933eabb6ef wiphy: added accessor for the feature flags 2018-05-24 13:10:56 -05:00
Tim Kourt
46abfc7813 wiphy: add support for MAX_NUM_SCAN_SSIDS 2018-05-08 19:17:40 -05:00
Denis Kenzior
b8c80060d3 wiphy: Update ext_features size 2018-05-01 20:46:06 -05:00
Andrew Zaborowski
ffcda135d2 eapol: Check for "No Group Traffic" group cipher suite 2017-10-23 11:14:40 -05:00
Andrew Zaborowski
fd4ab5d3df wiphy: Add wiphy_get_ext_feature
Save the extended features reported by the wiphy in the NEW_WIPHY event
or GET_WIPHY dump and allow netdev to query it with
wiphy_get_ext_feature()
2017-05-19 10:01:53 -05:00
Denis Kenzior
cacd0d83f4 wiphy: Add phy filtering 2017-03-16 16:50:25 -05:00
Denis Kenzior
5dc347ecb1 wiphy: Coalesce ATTR_WIPHY parsing logic
We parse ATTR_WIPHY and ATTR_WIPHY_NAME in several places.  Implement a
helper function to make this easier and cut down on code size.
2017-03-08 17:32:38 -06:00
Denis Kenzior
97191d56f1 wiphy: Make sure path is valid
DBus has certain rules on what constitutes a valid path.  Since the
wiphy name is freeform, it is possible to set it such that the contents
do not contain a valid path.

We fall back to simply using the wiphy index as the path.
2017-03-07 12:01:40 -06:00
Denis Kenzior
c3b33a2cfd wiphy: Make sure Name attribute is valid utf8
DBus strings must be valid utf8.  The kernel only enforces that the
wiphy name is null terminated string.  It does not validate or otherwise
check the contents in any way.  Thus it is possible to have
non-printable or non-utf8 characters inside.
2017-03-07 12:00:03 -06:00
Denis Kenzior
4703dd5200 wiphy: Remove pointless check
wiphy->name is always true since the name member is an array
2017-03-07 11:23:54 -06:00
Denis Kenzior
74e1b85e54 wiphy: React to wiphy name changes
NL80211_CMD_SET_WIPHY can be used to set various attributes on the wiphy
object in the kernel.  This includes ATTR_WIPHY_NAME among others.  iwd
currently does not parse or store any of the other attributes, so we
react to changes in WIPHY_NAME only.
2017-03-07 11:22:25 -06:00
Denis Kenzior
d86b7404fd wiphy: Remove unneeded check
The wiphy attribute should never be repeated by the kernel, so this
check is ultimately not needed.  This condition can also be easily
checked by looking at the iwmon output in case things do go terribly
wrong.
2017-03-07 09:57:40 -06:00
Tim Kourt
d3030acbec wiphy: Use real adapter name in path str 2017-02-21 13:34:24 -06:00
Tim Kourt
18886349df wiphy: expose the name property through DBus 2017-02-21 13:33:50 -06:00
Andrew Zaborowski
99e58db152 wiphy: Add utility to check if bss ciphers compatible
Move the BSS's supported ciphers checks from network_bss_select to a new
function in wiphy.c so we can reuse it in device.c.
2017-01-20 15:42:31 -06:00
Markus Ongyerth
139c8af210 wiphy: Remove useless null check on array 2016-12-19 11:02:55 -06:00
Denis Kenzior
bdd676a23a wiphy: Add support for BIP in wiphy_select_cipher 2016-10-24 21:29:37 -05:00
Denis Kenzior
2899315828 wiphy: Rename pairwise_ciphers to supported_ciphers
Since the ciphers stored here are not only for pairwise, but also group
and management ciphers.
2016-10-24 21:29:03 -05:00
Denis Kenzior
13f83fda81 wiphy: Also print whether we support BIP 2016-10-24 21:25:04 -05:00
Andrew Zaborowski
0ffec2e481 dbus: Switch to using org.freedesktop.DBus.Properties
Use the org.freedesktop.DBus.Properties interfaces on objects with
properties and drop the old style GetProperty/SetProperty methods on
individual interfaces.  Agent and KnownNetworks have no properties at
this time so don't add org.freedesktop.DBus.Properties interfaces.
2016-09-21 16:46:34 -05:00
Denis Kenzior
c60d34cd8d wiphy: Add wiphy_get_supported_bands 2016-09-13 14:36:46 -05:00
Andrew Zaborowski
c0b81662e4 wiphy: Add a Model and Vendor properties
Use the ell hwdb api to find the device model and vendor and expose
these as DBus properties.
2016-08-04 12:35:20 -05:00
Denis Kenzior
37ea99d09e netdev: Remove netdev_new_wiphy_hint 2016-07-19 15:49:22 -05:00
Andrew Zaborowski
2e845b5ee2 wiphy: Powered property setter 2016-07-13 12:33:30 -05:00
Andrew Zaborowski
bafafbf080 wiphy: Add a read-only Powered property 2016-07-13 10:34:23 -05:00
Andrew Zaborowski
4ebdf4e2ca wiphy: Add Adapter objects above Device
Change the path for net.connman.iwd.Device objects to /phyX/Y and
register net.connman.iwd.Adapter at /phyX grouping devices of the same
wiphy.

Turns out no changes to the test/* scripts are needed.
2016-07-13 10:32:49 -05:00
Denis Kenzior
0cffac45d4 wiphy: Notify netdev when a new wiphy has been added 2016-07-01 14:42:18 -05:00
Denis Kenzior
e81af82313 wiphy: React to new_wiphy events 2016-06-24 23:32:15 -05:00
Denis Kenzior
3bd0c9ae13 wiphy: React to del_wiphy events 2016-06-24 23:31:58 -05:00
Denis Kenzior
1500756144 wiphy: Print wiphy id 2016-06-24 23:31:02 -05:00
Denis Kenzior
ed18ab4fc0 wiphy: Rework wiphy dump parser 2016-06-24 23:30:05 -05:00
Denis Kenzior
0d9ec3b5ed wiphy: Rework printing basic wiphy info 2016-06-24 23:30:05 -05:00
Denis Kenzior
74add19057 device: Move the rest of device specific code
.. out of wiphy.c
2016-06-16 16:37:14 -05:00
Denis Kenzior
0fe815f870 netdev: Move deauthenticate handling out of wiphy.c 2016-06-16 16:37:14 -05:00
Denis Kenzior
48c0a216d7 wiphy: Rearrange / remove #includes 2016-06-16 16:37:14 -05:00
Denis Kenzior
c28e652570 device: Move device_list management out of wiphy.c 2016-06-16 16:37:14 -05:00
Denis Kenzior
49c7515ac1 netdev: Move eapol_io handling 2016-06-16 16:37:12 -05:00
Denis Kenzior
75ce550de9 netdev: Move operstate operations out of wiphy.c
Also make netdev_set_linkmode_and_operstate static
2016-06-16 15:13:43 -05:00
Denis Kenzior
dd4b0dc3d3 netdev: Move key setting logic out of wiphy.c 2016-06-16 15:13:43 -05:00
Denis Kenzior
c714b20102 wiphy: Move handshake_failed handler out of wiphy.c 2016-06-16 15:13:43 -05:00
Denis Kenzior
64d382cc89 netdev: Move disconnect event handling
.. out of wiphy.c
2016-06-16 15:13:43 -05:00
Denis Kenzior
0eeb71e4eb netdev: Move CQM event handling out of wiphy.c 2016-06-16 15:13:43 -05:00
Denis Kenzior
d526dbc175 netdev: Move associate event handling
.. out of wiphy.c
2016-06-16 15:13:39 -05:00
Denis Kenzior
d82754636b netdev: Move deauthenticate event handling
.. out of wiphy.c
2016-06-15 14:02:24 -05:00
Denis Kenzior
f5a7e204e7 device: Fix valgrind warning
Device removal should probably be managed by netdev objects going away,
but for now, silence the warning
2016-06-15 11:01:44 -05:00
Denis Kenzior
31a0e42772 wiphy: Move association logic out of wiphy.c
The eapol state machine parameters are now built inside device.c when
the network connection is attempted.  The reason is that the device
object knows about network settings, wiphy constraints and should
contain the main 'management' logic.

netdev now manages the actual low-level process of building association
messages, detecting authentication events, etc.
2016-06-15 10:54:13 -05:00
Denis Kenzior
b2d8616ca4 device: Move device_get_address out of wiphy.c 2016-06-14 19:57:21 -05:00
Denis Kenzior
c18cf173c3 device: Move device_get_ifindex out of wiphy.c 2016-06-14 19:57:21 -05:00
Denis Kenzior
74c8af9180 device: Move device_get_wiphy out of wiphy.c 2016-06-14 19:57:21 -05:00
Denis Kenzior
e23ea59f95 device: Move device_is_busy out of wiphy.c 2016-06-14 19:57:21 -05:00
Denis Kenzior
6e57e4a00c device: Move device_get_path out of wiphy.c 2016-06-14 19:57:21 -05:00
Denis Kenzior
e0c27a2ca8 device: Move device_get_connected_network
out of wiphy.c
2016-06-14 19:57:21 -05:00
Denis Kenzior
aedbdd01ae device: Migrate authentication to netdev api
This also moves device_connect_network to device.c where it belongs
2016-06-14 19:57:21 -05:00
Denis Kenzior
6bd71066ff device: Move device_disassociated out of wiphy.c 2016-06-14 11:16:07 -05:00
Denis Kenzior
64604ed59c device: Expose device_enter_state 2016-06-14 11:13:34 -05:00
Denis Kenzior
9d4baab8bd device: Move device structure definition
Temporarily move device structure definition into device.h and out of
wiphy.c.  Eventually the device structure should be opaque to device.c
2016-06-14 11:11:06 -05:00
Andrew Zaborowski
9cef1490c5 network: Basic last seen time tracking 2016-06-10 09:33:54 -05:00
Andrew Zaborowski
a0468fb9be device: Implement GetOrderedNetworks()
Keep an updated sorted list of networks in addition to the "networks"
hashmap.  The list can be queried through the GetOrderedNetworks dbus
method.

We also take advantage of that list to get rid of a single
l_hashmap_foreach in new_scan_results.
2016-06-10 09:33:13 -05:00
Andrew Zaborowski
99f99e0bc0 agent: Add reason parameter to Cancel
Add a parameter the UI can use to show user an explanation of why a
password prompt is disappearing.
2016-06-10 09:26:56 -05:00
Andrew Zaborowski
dae897854b network: return boolean from network_rankmod
Since the rankmod value only makes sense for autoconnectable networks,
change network_rankmod to return an indication of whether the rankmod is
valid as a boolean instead of as a double, as discussed before.
2016-06-09 14:16:06 -05:00
Andrew Zaborowski
e07b24e5d8 wiphy: Move NULL check to device_disassociated
Do nothing in device_disassociated if device->connected_network
indicates we are not associated.  This may happen if the device was
connected since before iwd was started, this should possibly be fixed
separately by querying device state when device is detected.
2016-06-09 14:14:20 -05:00
Andrew Zaborowski
3fa9a21a39 network: Add network_disconnected
Let network handle anything that needs to be done on a disconnection,
this way keep the settings opening and closing logic in network.c.
2016-06-09 14:13:58 -05:00
Denis Kenzior
c96d43a6da wiphy: Use util_address_to_string 2016-06-06 18:25:00 -05:00
Denis Kenzior
64c388fe76 wiphy: Fix crash in device address property getter
Address is being returned as a string, even though it is actually an
array of 6 uint8_t elements
2016-06-06 18:23:53 -05:00
Denis Kenzior
dcfbc74326 wiphy: Remove addr from device struct 2016-06-06 12:05:24 -05:00
Denis Kenzior
cedb980f92 wiphy: Remove name from device struct 2016-06-06 12:05:20 -05:00
Denis Kenzior
d6c6e4acda netdev: Move netdev enumeration to netdev.c 2016-06-06 12:03:23 -05:00
Denis Kenzior
8113f4c64e wiphy: Add wiphy_find 2016-06-03 09:53:46 -05:00
Denis Kenzior
7b929181ca wiphy: Remove unused wiphy_notify_dellink 2016-06-01 13:07:04 -05:00
Denis Kenzior
0b0fd5639f wiphy: Parse NEW_WIPHY and DEL_WIPHY events 2016-06-01 13:07:04 -05:00
Denis Kenzior
e48ca5a5a6 wiphy: Rename netdev to device 2016-06-01 13:06:59 -05:00
Denis Kenzior
af9ca22360 wiphy: Remove extraneous return 2016-05-31 11:29:48 -05:00
Andrew Zaborowski
1ba2630216 networks: Simplify parameters
for network_seen and network_connected

Only accept a struct network pointer instead of separately the ssid and
security type.  This is needed so we can do some more simplification in
the next patch by having access to the network struct.
2016-05-30 21:46:45 -05:00
Rahul Rahul
fc7ca17558 wiphy: added hw address property to device 2016-05-23 14:54:27 -05:00
Andrew Zaborowski
7950e2d5d3 wiphy: Emit PropertyChanged signals
for Device and Network
2016-05-23 11:55:06 -05:00
Andrew Zaborowski
ab1319a9d5 wiphy: Drop Device.GetNetworks and related signals
Drop the Device interface methods and properties made redundant by
the ObjectManager.
2016-05-23 11:48:41 -05:00
Andrew Zaborowski
15bab067fc dbus: Remove Manager interface, add AgentManager
Move the Agent-related methods to a new interface, AgentManager, and
drop the remaining methods and signals made redundant by the
ObjectManager.
2016-05-23 11:46:59 -05:00
Denis Kenzior
0e106d8534 wiphy: Use network_bss_* api 2016-05-16 16:14:15 -05:00
Denis Kenzior
cefba4d735 wiphy: Use network_connect_failed 2016-05-16 16:03:17 -05:00
Denis Kenzior
dcadf4d2f8 wiphy: Use network_autoconnect 2016-05-16 16:00:21 -05:00
Denis Kenzior
c619a71652 wiphy: Use network accessor methods 2016-05-16 15:44:27 -05:00
Denis Kenzior
9bfa0aa768 merge: device_connect_network 2016-05-16 13:48:10 -05:00
Denis Kenzior
d4feeebdc1 network: Move network related code into network.c
away from wiphy.c
2016-05-16 12:37:48 -05:00
Denis Kenzior
5e4c675175 network: Use device_get_wiphy 2016-05-16 12:32:44 -05:00
Denis Kenzior
66610f1248 device: Add device_get_wiphy() 2016-05-16 12:26:00 -05:00
Denis Kenzior
68a79b23fb device: Add device_is_busy() 2016-05-16 12:24:41 -05:00
Denis Kenzior
a9e9be469c wiphy: Expose wiphy_select_cipher 2016-05-16 12:21:26 -05:00
Denis Kenzior
bcb2ef3e40 network: Rework connect logic 2016-05-16 12:05:28 -05:00
Denis Kenzior
2fe80a8f86 device: Add device_connect_network 2016-05-16 12:04:45 -05:00
Denis Kenzior
a789703f6f wiphy: Use network_create, register & remove 2016-05-15 21:41:37 -05:00
Denis Kenzior
54e7cced8e network: Move PSK sync to network.c 2016-05-15 21:04:02 -05:00
Denis Kenzior
24366efb32 wiphy: Use network_settings_load & _close 2016-05-15 21:01:46 -05:00
Denis Kenzior
49df40fdff network: Move network_emit_removed to network.c 2016-05-12 09:52:52 -05:00
Denis Kenzior
5dc3a892db network: Move network_emit_added to network.c 2016-05-12 09:51:02 -05:00
Denis Kenzior
3ca8dfb5ad wiphy: move & rename iwd_device_get_path
Move declaration to device.h and rename to device_get_path
2016-05-12 09:49:07 -05:00
Denis Kenzior
ae1dc10c0c wiphy: Move __iwd_network_append_properties
to network.c
2016-05-11 22:32:25 -05:00
Denis Kenzior
23fe106cc5 device: Add device_get_connected_network() 2016-05-11 22:27:31 -05:00
Denis Kenzior
0c7504b5fb wiphy: Use network_get_security() 2016-05-11 22:12:25 -05:00
Denis Kenzior
f3ad1492c9 wiphy: Use network_get_path() 2016-05-11 22:12:25 -05:00
Denis Kenzior
2ccbf65519 wiphy: Use network_get_netdev 2016-05-11 22:04:09 -05:00
Denis Kenzior
0847e31542 wiphy: Use network_get_ssid 2016-05-11 22:01:44 -05:00
Denis Kenzior
414bc3198d wiphy: Move network object definition 2016-05-11 21:59:32 -05:00
Denis Kenzior
17a8460835 scan: Move scan_ssid_security to iwd.h
Security type is used all over the place, so move it out to a more
common place.
2016-05-11 15:54:14 -05:00
Denis Kenzior
c2c4039e79 wiphy: Rename netdev_state to device_state 2016-05-05 12:25:45 -05:00
Denis Kenzior
f3fc0ea1f9 device: Refactor netdev watches
Turn netdev watches into device watches.  The intent is to refactor out
netdev specific details into its own class and move device specific
logic into device.c away from wiphy.c
2016-05-05 12:14:59 -05:00
Denis Kenzior
0e3495488f wiphy: Move netdev_state enum 2016-05-05 11:40:54 -05:00
Andrew Zaborowski
692bfa23fe wiphy: Sanity check before netdev_disassociated
The lost beacon event can be received when iwd thinks netdev is
diconnected if it was connected before iwd started, and then
netdev_disassociated will segfault.
2016-04-11 14:39:06 -05:00
Rahul Rahul
971d93a9e6 wiphy: Add ConnectedNetwork property to Device
This property is optional.  If the device is connected, it holds the
object path of the connected network.
2016-03-09 16:46:07 -06:00
Rahul Rahul
492f25c4f6 wiphy: Add Connected property to Network interface
Added a property that will allow one to figure out whether this Network
is currently connected.
2016-03-04 10:20:41 -06:00
Mat Martineau
96e7be28bd wiphy: Removed unused function 2016-02-18 18:21:22 -06:00
Denis Kenzior
e2de4423db dbus: Update to the new ell D-Bus APIs 2016-02-11 16:19:55 -06:00
Denis Kenzior
ad7bbbb920 wiphy: Record network last-connected time 2016-02-11 16:19:44 -06:00
Denis Kenzior
962e2e8b2c wiphy: Use SHA256 AKM if available 2016-02-10 13:20:46 -06:00
Denis Kenzior
76c62b0843 scan: Keep track of SHA256 support over PSK/8021X 2016-02-10 12:56:11 -06:00
Denis Kenzior
b9402af687 scan: Add scan_ssid_security_to_str 2016-02-09 17:08:03 -06:00
Andrew Zaborowski
02eeb82c53 wiphy: Allow connecting to 8021X networks 2015-11-02 21:51:07 -06:00
Andrew Zaborowski
2bccb7e7dc eapol: Remove user_data from __eapol_rx_packet args
Instead of passing the user_data parameter in every __eapol_rx_packet
call to be used by EAPOL in all tx_packet calls, add
eapol_sm_set_tx_user_data function that sets the value of user_data for
all subsequent tx_packet calls.  This way tx_packet can be called from
places that are not necessarily inside an __eapol_rx_packet call.
2015-11-02 21:40:21 -06:00
Denis Kenzior
5f55c07da9 wiphy: Keep track of supported freqs & bands 2015-10-06 15:23:32 -05:00
Denis Kenzior
14e40f27e3 netdev: Add netdev attribute getters 2015-10-02 12:58:26 -05:00
Denis Kenzior
8a68ebd65b scan: Move bss_address_to_string to scan.[ch] 2015-10-02 12:06:20 -05:00
Denis Kenzior
ca0e3eb940 wiphy: Call netdev watches 2015-09-29 12:14:48 -05:00
Denis Kenzior
8026921801 main: Rework init/exit logic 2015-09-28 20:41:02 -05:00
Denis Kenzior
b19a683c36 wiphy: Rename function 2015-09-28 20:37:08 -05:00
Denis Kenzior
907b7d1e07 netdev: Move NETDEV_STATE enum to netdev.h 2015-09-28 20:37:08 -05:00
Denis Kenzior
f064230afa scan: Add scan request queue
For queuing up Active & Passive scans from other modules inside IWD
2015-09-22 14:06:40 -05:00
Denis Kenzior
b000c702b0 scan: Refactor scanning code
In preparation for adding active scans
2015-09-22 14:04:08 -05:00
Denis Kenzior
94aba17968 wiphy: Add auto-connect logic 2015-06-22 18:33:55 -05:00
Denis Kenzior
f055c22825 wiphy: Don't crash if called outside D-Bus 2015-06-22 18:33:38 -05:00
Denis Kenzior
002ca518c9 wiphy: Keep track of auto-connect candidates 2015-06-22 17:42:30 -05:00
Denis Kenzior
a2be179f57 wiphy: Add netdev state machine 2015-06-22 17:16:18 -05:00
Denis Kenzior
831d702ab2 wiphy: Add rank to debug output in process_bss 2015-06-16 17:12:28 -05:00
Denis Kenzior
0d977f62f6 wiphy: Use scan_bss_rank_compare 2015-06-16 17:12:28 -05:00
Denis Kenzior
7df688e11b wiphy: Fix memory leak
==2469== 24 bytes in 1 blocks are still reachable in loss record 1 of 1
==2469==    at 0x4C2B970: malloc (vg_replace_malloc.c:296)
==2469==    by 0x40E6DD: l_malloc (util.c:62)
==2469==    by 0x40F1CD: l_queue_new (queue.c:63)
==2469==    by 0x40D534: scan_init (scan.c:796)
==2469==    by 0x403AC3: nl80211_appeared (wiphy.c:2121)
==2469==    by 0x415FF3: get_family_callback (genl.c:987)
==2469==    by 0x415A4F: process_request (genl.c:381)
==2469==    by 0x415A4F: received_data (genl.c:492)
==2469==    by 0x413184: io_callback (io.c:120)
==2469==    by 0x4127C2: l_main_run (main.c:346)
==2469==    by 0x40253E: main (main.c:171)
2015-06-10 16:41:37 -05:00
Denis Kenzior
f2f1bfcdf9 scan: Move rest of scanning code into scan.c 2015-06-01 09:45:47 -05:00
Denis Kenzior
92c677e715 wiphy: Remove scheduled scan support
Refactoring the entire scan code, and this part seems to not be
supported by the target kernels.  Revisit / redo this functionality once
things become a bit clearer.
2015-05-31 22:10:35 -05:00
Andrew Zaborowski
00cafb2cc5 wiphy: Check early that a BSS supports compatible ciphers.
In the D-bus .Connect call return an error immediately if we
find that there's no common cipher supported between iwd, the
network adapter and the AP.  This is to avoid asking the agent
for the passkey if we know the connection will fail.

An alternative would be to only show networks that we can connect
to in the scan results on D-bus but I suspect that would cause
more pain to users debugging their wifi setups on average.

For now, if a passphrase is needed we check once before querying
for passphrase and recheck afterwards when we're about to
associate.
2015-05-27 08:52:01 -05:00
Denis Kenzior
99cdb860c0 eapol: Simplify install_tk callback 2015-05-21 21:10:21 -05:00
Denis Kenzior
e93dd44607 eapol: Simplify GTK install callback
Instead of passing in the RSN/WPA elements, simply pass in the
configured cipher.  This will make the implementation of the install_gtk
callback much simpler.
2015-05-21 21:08:47 -05:00
Denis Kenzior
d22a1af576 wiphy: Group RSN/WPA generation and setup 2015-05-21 20:43:54 -05:00
Andrew Zaborowski
0293b62f2e wiphy: select TKIP if CCMP not supported
If AP does not support CCMP, or if the wiphy does not.
2015-05-18 12:50:50 -05:00
Andrew Zaborowski
27d18cdd96 wiphy: Detect IE type in key install callbacks 2015-05-18 12:34:47 -05:00
Denis Kenzior
e2591b9865 wiphy: Track whether Rekey Offload is supported 2015-05-06 15:24:14 -05:00
Andrew Zaborowski
31284bf86b wiphy: If handshake failed check connect_pending
When handling repeated 4-Way Handshakes from the AP there will be no
.Connect() call pending so we need to check that netdev->connect_pending
is non-NULL.  It may be a good idea to check this even during initial
handshake.
2015-05-05 21:22:41 -05:00
Andrew Zaborowski
1d0afbc44c wiphy: Basic WPA support
Legacy WPA will be used with APs that advertise WPA support and
no WPA2 (RSN).  TKIP is not yet supported though, so only CCMP
will work.
2015-05-05 21:22:34 -05:00
Denis Kenzior
1795105c60 wiphy: Move scan result parsing to scan.c 2015-05-01 17:27:42 -05:00
Denis Kenzior
bf43acfd93 scan: Add scan_bss_free 2015-04-30 22:21:31 -05:00
Denis Kenzior
73a26c51b6 scan: Move struct bss to scan_bss in scan.h 2015-04-30 21:38:27 -05:00
Denis Kenzior
348a90ada3 wiphy: Tweak errors returned by Disconnect() 2015-04-30 18:42:55 -05:00
Denis Kenzior
0286dfadd4 wiphy: Handle beacon loss events 2015-04-30 18:42:44 -05:00
Denis Kenzior
efe795b72d wiphy: Fix memory leak
When disconnect is triggered locally, we do not clean up properly.

==4336==    at 0x4C2B970: malloc (vg_replace_malloc.c:296)
==4336==    by 0x40CEED: l_malloc (util.c:62)
==4336==    by 0x40F46A: l_settings_new (settings.c:82)
==4336==    by 0x40CE2E: storage_network_open (storage.c:180)
==4336==    by 0x40498E: network_connect_psk (wiphy.c:307)
==4336==    by 0x40498E: network_connect (wiphy.c:359)
==4336==    by 0x41D7EE: _dbus_object_tree_dispatch (dbus-service.c:845)
==4336==    by 0x416A16: message_read_handler (dbus.c:297)
==4336==    by 0x411984: io_callback (io.c:120)
==4336==    by 0x410FC2: l_main_run (main.c:346)
==4336==    by 0x40253E: main (main.c:171)
2015-04-30 17:01:20 -05:00
Denis Kenzior
341b69ce7c wiphy: Fix memory leak
This happens when connecting / disconnecting successfully multiple
times.

==4336== 64 bytes in 2 blocks are definitely lost in loss record 9 of 11
==4336==    at 0x4C2B970: malloc (vg_replace_malloc.c:296)
==4336==    by 0x40CEED: l_malloc (util.c:62)
==4336==    by 0x40D6D9: l_util_from_hexstring (util.c:493)
==4336==    by 0x4049C6: network_connect_psk (wiphy.c:315)
==4336==    by 0x4049C6: network_connect (wiphy.c:359)
==4336==    by 0x41D7EE: _dbus_object_tree_dispatch (dbus-service.c:845)
==4336==    by 0x416A16: message_read_handler (dbus.c:297)
==4336==    by 0x411984: io_callback (io.c:120)
==4336==    by 0x410FC2: l_main_run (main.c:346)
==4336==    by 0x40253E: main (main.c:171)
2015-04-30 17:00:38 -05:00
Denis Kenzior
5137d8b855 wiphy: Ensure connected_bss is always valid 2015-04-30 16:21:56 -05:00
Denis Kenzior
15620721b0 wiphy: Store connected_network on netdev object
Instead of storing the network pointer for each BSS, store it on the
netdev object.  This saves space inside struct bss and makes longer term
refactoring simpler.
2015-04-30 16:21:56 -05:00
Denis Kenzior
67a895c95f wiphy: Simplify code that removes lost networks
The current code is quite complicated and can be made simpler by using
the newly introduced l_hashmap_foreach_remove function.
2015-04-30 16:21:56 -05:00
Denis Kenzior
4c11845198 wiphy: Fix memory leak
==4249== 231 (32 direct, 199 indirect) bytes in 1 blocks are definitely
lost in loss record 10 of 10
==4249==    at 0x4C2B970: malloc (vg_replace_malloc.c:296)
==4249==    by 0x40CF5D: l_malloc (util.c:62)
==4249==    by 0x40F4DA: l_settings_new (settings.c:82)
==4249==    by 0x40CE9E: storage_network_open (storage.c:180)
==4249==    by 0x40499E: network_connect_psk (wiphy.c:307)
==4249==    by 0x40499E: network_connect (wiphy.c:359)
==4249==    by 0x41D85E: _dbus_object_tree_dispatch (dbus-service.c:845)
==4249==    by 0x416A86: message_read_handler (dbus.c:297)
==4249==    by 0x4119F4: io_callback (io.c:120)
==4249==    by 0x411032: l_main_run (main.c:346)
==4249==    by 0x40253E: main (main.c:171)
2015-04-30 16:21:56 -05:00
Denis Kenzior
93aaf21459 wiphy: Add initial preference management
This patch saves off the PSK generated based on the passphrase provided
by the agent/user.  The PSK is saved only if the connection is
successful.

Subsequent connection attempts to the known AP use the PSK saved on the
filesystem (default /var/lib/iwd/<ssid>.psk).  If the connection fails,
the agent will again be asked for the passphrase on the next attempt.
2015-04-27 07:55:13 -05:00
Denis Kenzior
a28f3fa3ec wiphy: Parse ciphers supported by the phy 2015-04-17 13:02:32 -05:00
Denis Kenzior
431cadb7aa wiphy: Optimize storage 2015-04-17 12:49:56 -05:00
Denis Kenzior
c9f1090380 wiphy: If connection failed, reset the PSK
This allows us to retry the agent for the correct passphrase
2015-04-08 15:07:02 -05:00
Denis Kenzior
0b48ba3a4a wiphy: Use CMD_DISCONNECT, not CMD_DEAUTHENTICATE
CMD_DEAUTHENTICATE seems to carry only the management frame pdu
information.  CMD_DISCONNECT is carrying the information that is
actually needed by us:
> Event: Disconnect (0x30) len 28		1140.118545
    Wiphy: 0 (0x00000000)
    Interface Index: 3 (0x00000003)
    Reason Code: 2 (0x0002)
    Disconnect by AP: true
2015-04-08 15:04:22 -05:00
Denis Kenzior
313dcbb8ff wiphy: Rework Device.Disconnect() logic 2015-04-08 15:03:28 -05:00
Denis Kenzior
6921e239a4 wiphy: Only support UTF-8 SSIDs
We will ignore non-UTF8 based SSIDs.  Support for non-UTF8 SSIDs seems
to be of dubious value in the real world as the vast majority of
consumer devices would not even allow such SSIDs to be configured or
used.

There also seems to be no compelling argument to support such SSIDs, so
until that argument arrives, non-UTF8 SSIDs will be filtered out.  This
makes the D-Bus API and implementation much easier.
2015-04-08 13:38:41 -05:00
Denis Kenzior
b2e1c36cbb wiphy: Stop eapol state machine if disconnecting 2015-03-29 22:50:34 -05:00
Denis Kenzior
ecede21c1e wiphy: Handle handshake failures 2015-03-29 22:32:11 -05:00
Denis Kenzior
3a6c06e85b wiphy: De-auth if setting key transaction fails 2015-03-29 22:32:11 -05:00
Denis Kenzior
85a5d7ba98 wiphy: Keep track of new/set key command ids 2015-03-29 22:32:11 -05:00
Denis Kenzior
b81e22f809 wiphy: Move reason codes to mpdu.h 2015-03-29 20:27:57 -05:00
Jukka Rissanen
7b945d948f wiphy: Set the linkmode and operstate of the link
We need to set the linkmode and operstate after successful
authentication.

Initial value for linkmode is 1 (user space controlled) and
IF_OPER_DORMANT for opermode. After successful authentication,
the operstate is set to IF_OPER_UP.

More specific details can be seen in kernel sources at
https://www.kernel.org/doc/Documentation/networking/operstates.txt
2015-03-27 13:14:31 -05:00
Jukka Rissanen
42622525d2 wiphy: Send NL80211_CMD_SET_STATION command to kernel
After we have authenticated successfully, send the Set Station
command to kernel so that AP gets authorized.
2015-03-27 13:12:47 -05:00
Denis Kenzior
86ea449cd1 wiphy: Make sure to set user_data
This is needed for TK/GTK installation
2015-03-25 23:28:45 -05:00
Denis Kenzior
0412360d77 wiphy: Install group key 2015-03-25 23:28:40 -05:00
Denis Kenzior
75bacbb896 wiphy: Install pairwise key 2015-03-25 23:28:18 -05:00
Denis Kenzior
842eb643eb wiphy: Return an error if agent request fails
If there is no agent registered, then the caller should not be hanging
without a response forever.
2015-03-20 15:42:50 -05:00
Denis Kenzior
709b94587e wiphy: Print an error if PMK generation fails 2015-03-20 15:22:44 -05:00
Denis Kenzior
2598a1efed wiphy: call eapol_init and eapol_exit 2015-03-20 12:30:24 -05:00
Denis Kenzior
4c351196a9 wiphy: Print errno if read fails 2015-03-20 12:30:11 -05:00
Denis Kenzior
25af920563 wiphy: Separate out the ell include
To make it clear it is not a system include
2015-03-20 12:29:50 -05:00
Marcel Holtmann
2c061e6394 wiphy: Fix compiler warning with sizeof function
CC       src/wiphy.o
src/wiphy.c: In function ‘eapol_read’:
src/wiphy.c:172:24: error: argument to ‘sizeof’ in ‘memset’ call is the same expression as the destination; did you mean to remove the addressof? [-Werror=sizeof-pointer-memaccess]
  memset(&sll, 0, sizeof(&sll));
                        ^
2015-03-20 06:43:54 +01:00
Denis Kenzior
96cd2391da wiphy: Start 4-way handshake 2015-03-20 00:27:38 -05:00
Denis Kenzior
2a41fe6dd2 eapol: Add read handler for PAE frames 2015-03-20 00:27:38 -05:00
Denis Kenzior
7835eb8b88 wiphy: Fix style 2015-03-19 23:57:37 -05:00
Jukka Rissanen
24e79280a9 wiphy: DBus reply was sent too early when connecting PSK network
We can give reply to connect DBus call in associating event only
when we are connecting to Open network. For PSK AP, the reply can
only be sent after we have finished 4-way handshaking.
2015-03-19 23:57:37 -05:00
Ravi kumar Veeramally
02b501b4f0 core: Find WPA BSS from scan results
Parse vendor specific IE and BSS scan results, find it AP has
WPA security details.
2015-03-16 12:15:23 -05:00
Jukka Rissanen
56c4dc1a8c wiphy: Add enumeration of reason codes
When disconnecting, use a properly documented reason code.  These codes
come from the ieee80211.h file which is part of the Linux Kernel.
2015-03-12 11:19:27 -05:00
Tomasz Bursztyka
279ed50441 wiphy: Don't parse attributes of scan reply
The success or not of a scan command is found from the message directly.
There's no need to look for any attribute from the scan netlink answer.
The message is an error message or not, and that tells if the scan has
been started or not.
2015-03-11 10:24:34 -05:00
Tomasz Bursztyka
9c1780c0a1 wiphy: Use dbus object path as network key in hash
Modifying a bit how networks are stored inside the hashtable:
1 - instead of the network id, the network's object path is used
2 - network holds the pointer of the object path
3 - the hashtable does not free the key (network_free() will)

This permits to optimize on:
1 - one memory allocation used for 2 distinct things
2 - remove the need to re-compute the object path (and the id) when it's
needed, it can use dircetly the one stored in the network structure.
2015-03-10 09:32:58 -05:00
Patrik Flykt
1637f3519a wiphy: Request passphrase when connecting
Request a passphrase via Agent if none is set at the time network is
being connected. When freeing a network, cancel any outstanding Agent
requests and free allocated memory.
2015-03-06 12:51:51 -06:00
Ravi kumar Veeramally
e24b18accd wiphy: Handle failed netlink requests
l_genl_family_send only returns request id. If request
failed at low level, current implementation does not handle that.
In case of request failure clear pending dbus messages.
2015-03-03 09:43:48 -06:00
Tomasz Bursztyka
ab07091f8c util: Move msg_append_attr into util part 2015-03-02 20:44:02 -06:00
Denis Kenzior
1d8b330261 wiphy: Use new l_genl send() APIs 2015-02-27 11:00:45 -06:00
Ravi kumar Veeramally
67cdc80753 wiphy: Open PAE socket when an interface is found
Open a PAE socket to retrieve eapol frames for 4-way handshake.
2015-02-26 10:55:01 -06:00
Tomasz Bursztyka
6b018ca6f7 wiphy: Reduce static allocation size
iwd_device_get_path() is not going to produce longer string than 12
bytes (/ + maximum of uint32_t expressed as a string + '\0').
2015-02-26 10:05:16 -06:00
Denis Kenzior
b067c08cfe wiphy: Remove unneeded initialization 2015-02-26 10:03:51 -06:00
Denis Kenzior
e69b21ccdf wiphy: Don't store rsne unless needed
Open networks do not contain a RSN element, so storing a 256 byte buffer
was too expensive.

This patch also has the side-effect of fixing detection of Open
Networks.  Prior to this, if the scan results did not contain an RSN IE,
the 'rsne' variable would be set to all zeros.  scan_get_ssid_security
would then be called, but instead of a NULL struct ie_rsn_info, a
non-null, but zerod out ie_rsn_info would be passed in.  This caused the
code to work, but for the wrong reasons.
2015-02-25 21:13:24 -06:00
Denis Kenzior
458ad2af77 wiphy: Set authentication parameters for WPA2 2015-02-25 20:56:46 -06:00
Ravi kumar Veeramally
19957f1162 wiphy: Remove extra white space 2015-02-25 11:34:42 -06:00
Ravi kumar Veeramally
46cdef5f7b wiphy: Fix deauthenticate event from AP
If AP issued deauthenticate event, netdev->connect_pending is null.
iwd crashes without this check.
2015-02-25 11:23:46 -06:00
Denis Kenzior
97a92a9d02 wiphy: Don't connect to networks we don't support 2015-02-24 23:19:27 -06:00
Denis Kenzior
975953dd89 wiphy: Store RSN IE inside struct bss 2015-02-24 23:11:48 -06:00