P2PS: Add P2PS interface info

This adds documentation on P2PS related interface commands and events.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Rajiv Ranjan 2015-01-13 10:48:17 +05:30 committed by Jouni Malinen
parent 04bb845273
commit f92446fb7d
1 changed files with 226 additions and 2 deletions

View File

@ -73,7 +73,7 @@ Device Discovery
p2p_find [timeout in seconds] [type=<social|progressive>] \
[dev_id=<addr>] [dev_type=<device type>] \
[delay=<search delay in ms>]
[delay=<search delay in ms>] [seek=<service name>]
The default behavior is to run a single full scan in the beginning and
then scan only social channels. type=social will scan only social
@ -92,6 +92,24 @@ The optional dev_type option can be used to specify a single device type
(primary or secondary) to search for, e.g.,
"p2p_find dev_type=1-0050F204-1".
With one or more seek arguments, the command sends Probe Request frames
for a P2PS service. For example,
p2p_find 5 dev_id=11:22:33:44:55:66 seek=alt.example.chat seek=alt.example.video
Parameters description:
Timeout - Optional ASCII base-10-encoded u16. If missing, request will not
time out and must be canceled manually
dev_id - Optional to request responses from a single known remote device
Service Name - Mandatory UTF-8 string for ASP seeks
Service name must match the remote service being advertised exactly
(no prefix matching).
Service name may be empty, in which case all ASP services will be
returned, and may be filtered with p2p_serv_disc_req settings, and
p2p_serv_asp_resp results.
Multiple service names may be requested, but if it exceeds internal
limit, it will automatically revert to requesting all ASP services.
p2p_listen [timeout in seconds]
Start Listen-only state (become discoverable without searching for
@ -128,7 +146,7 @@ parameter can be used to request wpa_supplicant to automatically figure
out whether the peer device is operating as a GO and if so, use
join-a-group style PD instead of GO Negotiation style PD.
p2p_connect <peer device address> <pbc|pin|PIN#> [display|keypad]
p2p_connect <peer device address> <pbc|pin|PIN#|p2ps> [display|keypad|p2ps]
[persistent|persistent=<network id>] [join|auth]
[go_intent=<0..15>] [freq=<in MHz>] [ht40] [vht] [provdisc] [auto]
@ -175,6 +193,65 @@ connection.
out whether the peer device is operating as a GO and if so, use
join-a-group operation rather than GO Negotiation.
P2PS attribute changes to p2p_connect command:
P2PS supports two WPS provisioning methods namely PIN method and P2PS default.
The remaining paramters hold same role as in legacy P2P. In case of P2PS default
config method "p2ps" keyword is added in p2p_connect command.
For example:
p2p_connect 02:0a:f5:85:11:00 12345670 p2ps persistent join
(WPS Method = P2PS default)
p2p_connect 02:0a:f5:85:11:00 45629034 keypad persistent
(WPS Method = PIN)
p2p_asp_provision <peer MAC address> <adv_id=peer adv id>
<adv_mac=peer MAC address> [role=2|4|1] <session=session id>
<session_mac=initiator mac address>
[info='service info'] <method=Default|keypad|Display>
This command starts provision discovery with the P2PS enabled peer device.
For example,
p2p_asp_provision 00:11:22:33:44:55 adv_id=4d6fc7 adv_mac=00:55:44:33:22:11 role=1 session=12ab34 session_mac=00:11:22:33:44:55 info='name=john' method=1000
Parameter description:
MAC address - Mandatory
adv_id - Mandatory remote Advertising ID of service connection is being
established for
adv_mac - Mandatory MAC address that owns/registered the service
role - Optional
2 (group client only) or 4 (group owner only)
if not present (or 1) role is negotiated by the two peers.
session - Mandatory Session ID of the first session to be established
session_mac - Mandatory MAC address that owns/initiated the session
method - Optional method to request for provisioning (1000 - P2PS Default,
100 - Keypad(PIN), 8 - Display(PIN))
info - Optional UTF-8 string. Hint for service to indicate possible usage
parameters - Escape single quote & backslash:
with a backslash 0x27 == ' == \', and 0x5c == \ == \\
p2p_asp_provision_resp <peer mac address> <adv_id= local adv id>
<adv_mac=local MAC address> <role=1|2|4> <status=0>
<session=session id> <session_mac=peer MAC address>
This command sends a provision discovery response from responder side.
For example,
p2p_asp_provision_resp 00:55:44:33:22:11 adv_id=4d6fc7 adv_mac=00:55:44:33:22:11 role=1 status=0 session=12ab34 session_mac=00:11:22:33:44:55
Parameters definition:
MAC address - Mandatory
adv_id - Mandatory local Advertising ID of service connection is being
established for
adv_mac - Mandatory MAC address that owns/registered the service
role - Optional 2 (group client only) or 4 (group owner only)
if not present (or 1) role is negotiated by the two peers.
status - Mandatory Acceptance/Rejection code of Provisioning
session - Mandatory Session ID of the first session to be established
session_mac - Mandatory MAC address that owns/initiated the session
p2p_group_add [persistent|persistent=<network id>] [freq=<freq in MHz>]
[ht40] [vht]
@ -219,6 +296,70 @@ removed securely.
Service Discovery
p2p_service_add asp <auto accept> <adv id> <status 0/1> <Config Methods>
<Service name> [Service Information] [Response Info]
This command can be used to search for a P2PS service which includes
Play, Send, Display, and Print service. The parameters for this command
are "asp" to identify the command as P2PS one, auto accept value,
advertisement id which uniquely identifies the service requests, state
of the service whether the service is available or not, config methods
which can be either P2PS method or PIN method, service name followed by
two optional parameters service information, and response info.
For example,
p2p_service_add asp 1 4d6fc7 0 1108 alt.example.chat svc_info='name=john' rsp_info='enter PIN 1234'
Parameters definition:
asp - Mandatory for ASP service registration
auto accept - Mandatory ASCII hex-encoded boolean (0 == no auto-accept,
1 == auto-accept ANY role, 2 == auto-accept CLIENT role,
4 == auto-accept GO role)
Advertisement ID - Mandatory non-zero ASCII hex-encoded u32
(Must be unique/not yet exist in svc db)
State - Mandatory ASCII hex-encoded u8 (0 -- Svc not available,
1 -- Svc available, 2-0xff Application defined)
Config Methods - Mandatory ASCII hex-encoded u16 (bitmask of WSC config
methods)
Service Name - Mandatory UTF-8 string
Service Information - Optional UTF-8 string
Escape single quote & backslash with a backslash:
0x27 == ' == \', and 0x5c == \ == \\
Session response information - Optional (used only if auto accept is TRUE)
UTF-8 string
Escape single quote & backslash with a backslash:
0x27 == ' == \', and 0x5c == \ == \\
p2p_service_rep asp <auto accept> <adv id> <status 0/1> <Config Methods>
<Service name> [Service Information] [Response Info]
This command can be used to replace the existing service request
attributes from the initiator side. The replacement is only allowed if
the advertisement id issued in the command matches with any one entry in
the list of existing SD queries. If advertisement id doesn't match the
command returns a failure.
For example,
p2p_service_rep asp 1 4d6fc7 1 1108 alt.example.chat svc_info='name=john' rsp_info='enter PIN 1234'
Parameters definition:
asp - Mandatory for ASP service registration
auto accept - Mandatory ASCII hex-encoded boolean (1 == true, 0 == false)
Advertisement ID - Mandatory non-zero ASCII hex-encoded u32
(Must already exist in svc db)
State - Mandatory ASCII hex-encoded u8 (can be used to indicate svc
available or not available for instance)
Config Methods - Mandatory ASCII hex-encoded u16 (bitmask of WSC config
methods)
Service Name - Mandatory UTF-8 string (Must match existing string in svc db)
Service Information - Optional UTF-8 string
Escape single quote & backslash with a backslash:
0x27 == ' == \', and 0x5c == \ == \\
Session response information - Optional (used only if auto accept is TRUE)
UTF-8 string
Escape single quote & backslash with a backslash:
0x27 == ' == \', and 0x5c == \ == \\
p2p_serv_disc_req
Schedule a P2P service discovery request. The parameters for this
@ -300,6 +441,27 @@ p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [sec-source] 2
p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [source+sink] 2,3,4,5
p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [source][pri-sink] 2,3,4,5
p2p_serv_disc_req <Unicast|Broadcast mac address> asp <Transaction ID>
<Service Name> [Service Information]
The command can be used for service discovery for P2PS enabled devices.
For example: p2p_serv_disc_req 00:00:00:00:00:00 asp a1 alt.example 'john'
Parameters definition:
MAC address - Mandatory Existing
asp - Mandatory for ASP queries
Transaction ID - Mandatory non-zero ASCII hex-encoded u8 for GAS
Service Name Prefix - Mandatory UTF-8 string.
Will match from beginning of remote Service Name
Service Information Substring - Optional UTF-8 string
If Service Information Substring is not included, all services matching
Service Name Prefix will be returned.
If Service Information Substring is included, both the Substring and the
Service Name Prefix must match for service to be returned.
If remote service has no Service Information, all Substring searches
will fail.
p2p_serv_disc_cancel_req <query identifier>
Cancel a pending P2P service discovery request. This command takes a
@ -375,6 +537,11 @@ p2p_service_del upnp <version hex> <service>
Remove a local UPnP service from internal SD query processing.
p2p_service_del asp <adv id>
Removes the local asp service from internal SD query list.
For example: p2p_service_del asp 4d6fc7
p2p_service_flush
Remove all local services from internal SD query processing.
@ -609,6 +776,63 @@ remove_network <network id>
Remove a network entry from configuration.
P2PS Events/Responses:
P2PS-PROV-START: This events gets triggered when provisioning is issued for
either seeker or advertiser.
For example,
P2PS-PROV-START 00:55:44:33:22:11 adv_id=111 adv_mac=00:55:44:33:22:11 conncap=1 session=1234567 session_mac=00:11:22:33:44:55 info='xxxx'
Parameters definition:
MAC address - always
adv_id - always ASCII hex-encoded u32
adv_mac - always MAC address that owns/registered the service
conncap - always mask of 0x01 (new), 0x02 (group client), 0x04 (group owner)
bits
session - always Session ID of the first session to be established
session_mac - always MAC address that owns/initiated the session
info - if available, UTF-8 string
Escaped single quote & backslash with a backslash:
\' == 0x27 == ', and \\ == 0x5c == \
P2PS-PROV-DONE: When provisioning is completed then this event gets triggered.
For example,
P2PS-PROV-DONE 00:11:22:33:44:55 status=0 adv_id=111 adv_mac=00:55:44:33:22:11 conncap=1 session=1234567 session_mac=00:11:22:33:44:55 [dev_passwd_id=8 | go=p2p-wlan0-0 | join=11:22:33:44:55:66 | persist=0]
Parameters definition:
MAC address - always main device address of peer. May be different from MAC
ultimately connected to.
status - always ascii hex-encoded u8 (0 == success, 12 == deferred success)
adv_id - always ascii hex-encoded u32
adv_mac - always MAC address that owns/registered the service
conncap - always One of: 1 (new), 2 (group client), 4 (group owner) bits
session - always Session ID of the first session to be established
session_mac - always MAC address that owns/initiated the session
dev_passwd_id - only if conncap value == 1 (New GO negotiation)
8 - "p2ps" password must be passed in p2p_connect command
1 - "display" password must be passed in p2p_connect command
5 - "keypad" password must be passed in p2p_connect command
join only - if conncap value == 2 (Client Only). Display password and "join"
must be passed in p2p_connect and address must be the MAC specified
go only - if conncap value == 4 (GO Only). Interface name must be set with a
password
persist - only if previous persistent group existed between peers and shall
be re-used. Group is restarted by sending "p2p_group_add persistent=0"
where value is taken from P2P-PROV-DONE
Extended Events/Response
P2P-DEVICE-FOUND 00:11:22:33:44:55 p2p_dev_addr=00:11:22:33:44:55 pri_dev_type=0-00000000-0 name='' config_methods=0x108 dev_capab=0x21 group_capab=0x0 adv_id=111 asp_svc=alt.example.chat
Parameters definition:
adv_id - if ASP ASCII hex-encoded u32. If it is reporting the
"wildcard service", this value will be 0
asp_svc - if ASP this is the service string. If it is reporting the
"wildcard service", this value will be org.wi-fi.wfds
wpa_cli action script
---------------------