From: Andrew Zaborowski <balrogg@gmail.com>
To: iwd@lists.01.org
Subject: [PATCH 06/11] wsc: Replace netdev_connect_wsc with netdev_connect usage
Date: Mon, 21 Oct 2019 15:55:05 +0200 [thread overview]
Message-ID: <20191021135510.12657-6-balrogg@gmail.com> (raw)
In-Reply-To: <20191021135510.12657-1-balrogg@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2991 bytes --]
From: Andrew Zaborowski <andrew.zaborowski@intel.com>
netdev_connect can achieve the same effect as netdev_connect_wsc but is
more flexible as it allows us to supply additional association IEs. We
will need this capability to make P2P connections. This way we're also
moving the WSC-specific bits to wsc.c from the crowded netdev.c.
Also make sure we free the handshake state on netdev_connect error in
wsc_connect().
---
src/netdev.c | 2 +-
src/wsc.c | 43 +++++++++++++++++++++++++++++++++++--------
2 files changed, 36 insertions(+), 9 deletions(-)
diff --git a/src/netdev.c b/src/netdev.c
index 48cdb5c1..93baa6ea 100644
--- a/src/netdev.c
+++ b/src/netdev.c
@@ -2501,7 +2501,7 @@ int netdev_connect(struct netdev *netdev, struct scan_bss *bss,
if (!cmd_connect)
return -EINVAL;
- if (is_rsn)
+ if (is_rsn || hs->settings_8021x)
sm = eapol_sm_new(hs);
}
diff --git a/src/wsc.c b/src/wsc.c
index 068cf82a..d971797a 100644
--- a/src/wsc.c
+++ b/src/wsc.c
@@ -360,7 +360,7 @@ static void wsc_credential_obtained(struct wsc *wsc,
wsc->n_creds += 1;
}
-static void wsc_eapol_event(uint32_t event, const void *event_data,
+static void wsc_eap_event(uint32_t event, const void *event_data,
void *user_data)
{
struct wsc *wsc = user_data;
@@ -434,6 +434,11 @@ static void wsc_connect(struct wsc *wsc)
struct handshake_state *hs;
struct l_settings *settings = l_settings_new();
struct scan_bss *bss = wsc->target;
+ int r;
+ struct wsc_association_request request;
+ uint8_t *pdu;
+ size_t pdu_len;
+ struct iovec ie_iov;
wsc->target = NULL;
@@ -473,19 +478,41 @@ static void wsc_connect(struct wsc *wsc)
}
handshake_state_set_event_func(hs, wsc_handshake_event, wsc);
+ handshake_state_set_eap_event_func(hs, wsc_eap_event, wsc);
handshake_state_set_8021x_config(hs, settings);
wsc->eap_settings = settings;
- if (netdev_connect_wsc(wsc->netdev, bss, hs,
- wsc_netdev_event, wsc_connect_cb,
- wsc_eapol_event, wsc) < 0) {
- dbus_pending_reply(&wsc->pending,
- dbus_error_failed(wsc->pending));
- handshake_state_free(hs);
- return;
+ request.version2 = true;
+ request.request_type = WSC_REQUEST_TYPE_ENROLLEE_OPEN_8021X;
+
+ pdu = wsc_build_association_request(&request, &pdu_len);
+ if (!pdu) {
+ r = -ENOMEM;
+ goto error;
}
+ ie_iov.iov_base = ie_tlv_encapsulate_wsc_payload(pdu, pdu_len,
+ &ie_iov.iov_len);
+ l_free(pdu);
+
+ if (!ie_iov.iov_base) {
+ r = -ENOMEM;
+ goto error;
+ }
+
+ r = netdev_connect(wsc->netdev, bss, hs, &ie_iov, 1, wsc_netdev_event,
+ wsc_connect_cb, wsc);
+ l_free(ie_iov.iov_base);
+
+ if (r < 0)
+ goto error;
+
wsc->wsc_association = true;
+ return;
+error:
+ handshake_state_free(hs);
+ dbus_pending_reply(&wsc->pending,
+ dbus_error_failed(wsc->pending));
}
static void station_state_watch(enum station_state state, void *userdata)
--
2.20.1
next prev parent reply other threads:[~2019-10-21 13:55 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-21 13:55 [PATCH 01/11] netdev: Add a wdev_id based frame watch API Andrew Zaborowski
2019-10-21 13:55 ` [PATCH 02/11] netdev: Report RSSI to frame watch callbacks Andrew Zaborowski
2019-10-22 3:34 ` Denis Kenzior
2019-10-22 13:46 ` Andrew Zaborowski
2019-10-21 13:55 ` [PATCH 03/11] netdev: Extend checks for P2P scenarios Andrew Zaborowski
2019-10-22 3:36 ` Denis Kenzior
2019-10-21 13:55 ` [PATCH 04/11] eapol: Move the EAP event handler to handshake state Andrew Zaborowski
2019-10-22 4:11 ` Denis Kenzior
2019-10-22 14:00 ` Andrew Zaborowski
2019-10-22 14:34 ` Denis Kenzior
2019-10-21 13:55 ` [PATCH 05/11] unit: Update test-wsc to use handshake_state_set_eap_event_func Andrew Zaborowski
2019-10-21 13:55 ` Andrew Zaborowski [this message]
2019-10-21 13:55 ` [PATCH 07/11] netdev: Drop unused netdev_connect_wsc Andrew Zaborowski
2019-10-21 13:55 ` [PATCH 08/11] wsc: Add wsc_new_p2p_enrollee, refactor Andrew Zaborowski
2019-10-22 14:47 ` Denis Kenzior
2019-10-22 23:46 ` Andrew Zaborowski
2019-10-21 13:55 ` [PATCH 09/11] wsc: Accept extra IEs in wsc_new_p2p_enrollee Andrew Zaborowski
2019-10-21 13:55 ` [PATCH 10/11] wiphy: Add wiphy_get_max_roc_duration Andrew Zaborowski
2019-10-22 3:26 ` Denis Kenzior
2019-10-21 13:55 ` [PATCH 11/11] wiphy: Add wiphy_get_supported_rates Andrew Zaborowski
2019-10-22 14:53 ` [PATCH 01/11] netdev: Add a wdev_id based frame watch API Denis Kenzior
2019-10-22 23:56 ` Andrew Zaborowski
2019-10-23 0:23 ` Denis Kenzior
2019-10-23 1:04 ` Andrew Zaborowski
2019-10-23 1:32 ` Denis Kenzior
2019-10-24 0:59 ` Andrew Zaborowski
2019-10-24 2:53 ` Denis Kenzior
2019-10-24 3:22 ` Andrew Zaborowski
2019-10-24 15:29 ` Denis Kenzior
2019-10-24 21:47 ` Andrew Zaborowski
2019-10-24 22:16 ` Denis Kenzior
2019-10-24 22:45 ` Andrew Zaborowski
2019-10-25 1:27 ` Denis Kenzior
2019-10-25 2:59 ` Andrew Zaborowski
2019-10-25 3:56 ` Denis Kenzior
2019-10-25 4:42 ` Andrew Zaborowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191021135510.12657-6-balrogg@gmail.com \
--to=balrogg@gmail.com \
--cc=iwd@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.