aboutsummaryrefslogtreecommitdiffstats
path: root/src/p2p/p2p.h
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2014-01-28 10:57:39 -0800
committerDmitry Shmidt <dimitrysh@google.com>2014-01-28 11:02:20 -0800
commitcf32e60fa7e0d33fe1551a6dba8dcbbec47ea50e (patch)
tree454f4b5c08cbd7d8cd14a732784cfbf624806965 /src/p2p/p2p.h
parent1846323989242844f0e857458a8939fa5836429c (diff)
downloadandroid_external_wpa_supplicant_8-cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50e.tar.gz
android_external_wpa_supplicant_8-cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50e.tar.bz2
android_external_wpa_supplicant_8-cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50e.zip
Cumulative patch from commit 2e988392436227c51002b573ee27a8cee37f70e9
2e98839 P2P: Disable DNS server from dnsmasq c07f261 P2P NFC: Add script for connection handover with nfcpy 12288d8 WPS NFC: Protect nfcpy pretty print calls against exceptions c209dd1 WPS NFC: nfcpy script to use new connection handover design 6202500 WPS NFC: Logging level configuration to wps-nfc.py and wps-ap-nfc.py 1f1b5b3 WPS NFC: Clean up nfcpy script no-wait operations 79ede5a WPS NFC: Validate ctrl_iface response before decoding it ab1db08 WPS NFC: Use argparse in the nfcpy scripts 6f8fa6e WPS NFC: Update wps-nfc.py and wps-ap-nfc.py to use new nfcpy API b56f6c8 P2P NFC: Add support for freq option in NFC ctrl_iface commands 91a6501 WPS NFC: Use BSSID and AP Channel from handover select 91226e0 WPS: Add testing option to corrupt public key hash 7312776 WPS NFC: add more debug prints for connection handover report 5cd4f66 WPS NFC: Use AP Channel information from credential container d2f1837 WPS NFC: Add BSSID and AP channel info to Configuration Token 75dbf98 WPS-STRICT: Update valid Device Password ID and Config Error range 5cd4740 P2P NFC: WPA state machine config with driver-based BSS selection 8e9f53c P2P NFC: Static handover with NFC Tag on client dd87677 P2P NFC: Enable own NFC Tag on GO Registrar abe44e3 P2P NFC: Add GO info into handover message when in client role 23318be P2P NFC: Optimize join-a-group operation based on NFC information 86e3208 P2P NFC: Copy DH parameters to a separate group interface d4b4d7f WPS NFC: Update DH keys for ER operations ac08752 WPS NFC: Use pubkey mismatch config error from Enrollee 59b45d1 P2P NFC: Add processing of P2P client while NFC handover case 74df9ec P2P NFC: Do not try to join peer if both devices are already GO 201b0f5 P2P: Add test option to disable IP address assignment request 25ef852 P2P: Add support for IP address assignment in 4-way handshake fdd48ff P2P NFC: Optimize GO Negotiation retries c4f87a7 P2P NFC: Add NFC tag enabling for static handover dd37a93 P2P NFC: Report handover select from tag for static handover db6ae69 P2P NFC: Report connection handover as trigger for P2P 9358878 P2P NFC: Build connection handover messages c00ab85 P2P NFC: Define WPS_NFC config method 0deab08 P2P NFC: Allow separate WPS/P2P IES to be parsed fca9958 P2P NFC: Pass OOB Dev Password through P2P parser ab9e344 P2P NFC: Pass OOB Device Password ID to P2P 5154689 P2P NFC: Add WPS attribute building for P2P NFC 01afd8d P2P NFC: Add NDEF helpers for P2P connection handover messages 9e323a2 P2P NFC: Add OOB GO Negotiation Channel attribute 14d8645 WPS NFC: Allow BSSID and channel to be included in handover select 50d1f89 NFC: Update WPS ER to use the new connection handover design d950793 WPS NFC: Add support for wpa_supplicant AP/GO mode to use handover fa4c298 WPS NFC: Process new style handover select 068cdb1 WPS NFC: New style connection handover select from AP/Registrar 3189ca0 WPS NFC: Add AP mode connection handover report 41f9ffb WPS NFC: Build new style carrier record for connection handover request 3f1639d WPS NFC: Split DH key generation to a separate function 9754917 WPS NFC: Update NFC connection handover design 34b6795 WPS NFC: Use abbreviated handshake if both PK hashes delivered OOB 57630e6 WPS: Preparations for allowing SSID filtering for provisioning step 5f45455 WPS NFC: Validate peer public key hash on Enrollee ff40cd6 WPS NFC: Send M2D with config error 20 on pkhash mismatch e435417 WPS: Remove Version attribute from NFC messages 72403ec WPS: Add builder functions for AP Channel and RF Bands attributes ea43ad9 P2P: Make group operating channel available 9f7cd9a P2P: Split add-group-info into a helper function 253f2e3 P2P: Apply unsafe frequency rules to available channels 1682c62 Add a header file defining QCA OUI and vendor extensions Change-Id: Ia7604d018e1ffb25e06bdc01ce258fc4a0569245 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'src/p2p/p2p.h')
-rw-r--r--src/p2p/p2p.h59
1 files changed, 54 insertions, 5 deletions
diff --git a/src/p2p/p2p.h b/src/p2p/p2p.h
index 2ce6ea6a..08e7176c 100644
--- a/src/p2p/p2p.h
+++ b/src/p2p/p2p.h
@@ -9,6 +9,8 @@
#ifndef P2P_H
#define P2P_H
+#include "wps/wps_defs.h"
+
/**
* P2P_MAX_REG_CLASSES - Maximum number of regulatory classes
*/
@@ -50,7 +52,7 @@ struct p2p_channels {
};
enum p2p_wps_method {
- WPS_NOT_READY, WPS_PIN_DISPLAY, WPS_PIN_KEYPAD, WPS_PBC
+ WPS_NOT_READY, WPS_PIN_DISPLAY, WPS_PIN_KEYPAD, WPS_PBC, WPS_NFC
};
/**
@@ -706,6 +708,8 @@ struct p2p_config {
* persistent group (instead of invitation to join an active
* group)
* @channels: Available operating channels for the group
+ * @dev_pw_id: Device Password ID for NFC static handover or -1 if not
+ * used
* Returns: Status code (P2P_SC_*)
*
* This optional callback can be used to implement persistent reconnect
@@ -727,7 +731,8 @@ struct p2p_config {
const u8 *go_dev_addr, const u8 *ssid,
size_t ssid_len, int *go, u8 *group_bssid,
int *force_freq, int persistent_group,
- const struct p2p_channels *channels);
+ const struct p2p_channels *channels,
+ int dev_pw_id);
/**
* invitation_received - Callback on Invitation Request RX
@@ -972,7 +977,7 @@ int p2p_connect(struct p2p_data *p2p, const u8 *peer_addr,
int go_intent, const u8 *own_interface_addr,
unsigned int force_freq, int persistent_group,
const u8 *force_ssid, size_t force_ssid_len,
- int pd_before_go_neg, unsigned int pref_freq);
+ int pd_before_go_neg, unsigned int pref_freq, u16 oob_pw_id);
/**
* p2p_authorize - Authorize P2P group formation (GO negotiation)
@@ -1000,7 +1005,7 @@ int p2p_authorize(struct p2p_data *p2p, const u8 *peer_addr,
int go_intent, const u8 *own_interface_addr,
unsigned int force_freq, int persistent_group,
const u8 *force_ssid, size_t force_ssid_len,
- unsigned int pref_freq);
+ unsigned int pref_freq, u16 oob_pw_id);
/**
* p2p_reject - Reject peer device (explicitly block connection attempts)
@@ -1102,12 +1107,14 @@ enum p2p_invite_role {
* @persistent_group: Whether this is to reinvoke a persistent group
* @pref_freq: Preferred operating frequency in MHz or 0 (this is only used if
* force_freq == 0)
+ * @dev_pw_id: Device Password ID from OOB Device Password (NFC) static handover
+ * case or -1 if not used
* Returns: 0 on success, -1 on failure
*/
int p2p_invite(struct p2p_data *p2p, const u8 *peer, enum p2p_invite_role role,
const u8 *bssid, const u8 *ssid, size_t ssid_len,
unsigned int force_freq, const u8 *go_dev_addr,
- int persistent_group, unsigned int pref_freq);
+ int persistent_group, unsigned int pref_freq, int dev_pw_id);
/**
* p2p_presence_req - Request GO presence
@@ -1372,6 +1379,11 @@ struct p2p_group_config {
size_t ssid_len;
/**
+ * freq - Operating channel of the group
+ */
+ int freq;
+
+ /**
* cb_ctx - Context to use with callback functions
*/
void *cb_ctx;
@@ -1892,4 +1904,41 @@ int p2p_set_disc_int(struct p2p_data *p2p, int min_disc_int, int max_disc_int,
*/
const char * p2p_get_state_txt(struct p2p_data *p2p);
+struct wpabuf * p2p_build_nfc_handover_req(struct p2p_data *p2p,
+ int client_freq,
+ const u8 *go_dev_addr,
+ const u8 *ssid, size_t ssid_len);
+struct wpabuf * p2p_build_nfc_handover_sel(struct p2p_data *p2p,
+ int client_freq,
+ const u8 *go_dev_addr,
+ const u8 *ssid, size_t ssid_len);
+
+struct p2p_nfc_params {
+ int sel;
+ const u8 *wsc_attr;
+ size_t wsc_len;
+ const u8 *p2p_attr;
+ size_t p2p_len;
+
+ enum {
+ NO_ACTION, JOIN_GROUP, AUTH_JOIN, INIT_GO_NEG, RESP_GO_NEG,
+ BOTH_GO, PEER_CLIENT
+ } next_step;
+ struct p2p_peer_info *peer;
+ u8 oob_dev_pw[WPS_OOB_PUBKEY_HASH_LEN + 2 +
+ WPS_OOB_DEVICE_PASSWORD_LEN];
+ size_t oob_dev_pw_len;
+ int go_freq;
+ u8 go_dev_addr[ETH_ALEN];
+ u8 go_ssid[32];
+ size_t go_ssid_len;
+};
+
+int p2p_process_nfc_connection_handover(struct p2p_data *p2p,
+ struct p2p_nfc_params *params);
+
+void p2p_set_authorized_oob_dev_pw_id(struct p2p_data *p2p, u16 dev_pw_id,
+ int go_intent,
+ const u8 *own_interface_addr);
+
#endif /* P2P_H */