Home | History | Annotate | Line # | Download | only in wpa_supplicant
      1      1.1  christos wpa_supplicant and Wi-Fi P2P
      2      1.1  christos ============================
      3      1.1  christos 
      4      1.1  christos This document describes how the Wi-Fi P2P implementation in
      5      1.1  christos wpa_supplicant can be configured and how an external component on the
      6      1.1  christos client (e.g., management GUI) is used to enable WPS enrollment and
      7      1.1  christos registrar registration.
      8      1.1  christos 
      9      1.1  christos 
     10      1.1  christos Introduction to Wi-Fi P2P
     11      1.1  christos -------------------------
     12      1.1  christos 
     13      1.1  christos TODO
     14      1.1  christos 
     15      1.1  christos More information about Wi-Fi P2P is available from Wi-Fi Alliance:
     16      1.1  christos http://www.wi-fi.org/Wi-Fi_Direct.php
     17      1.1  christos 
     18      1.1  christos 
     19      1.1  christos wpa_supplicant implementation
     20      1.1  christos -----------------------------
     21      1.1  christos 
     22      1.1  christos TODO
     23      1.1  christos 
     24      1.1  christos 
     25      1.1  christos wpa_supplicant configuration
     26      1.1  christos ----------------------------
     27      1.1  christos 
     28      1.1  christos Wi-Fi P2P is an optional component that needs to be enabled in the
     29      1.1  christos wpa_supplicant build configuration (.config). Here is an example
     30      1.1  christos configuration that includes Wi-Fi P2P support and Linux nl80211
     31      1.1  christos -based driver interface:
     32      1.1  christos 
     33      1.1  christos CONFIG_DRIVER_NL80211=y
     34      1.1  christos CONFIG_CTRL_IFACE=y
     35      1.1  christos CONFIG_P2P=y
     36      1.1  christos CONFIG_AP=y
     37      1.1  christos CONFIG_WPS=y
     38      1.1  christos 
     39      1.1  christos 
     40      1.1  christos In run-time configuration file (wpa_supplicant.conf), some parameters
     41      1.1  christos for P2P may be set. In order to make the devices easier to recognize,
     42      1.1  christos device_name and device_type should be specified. For example,
     43      1.1  christos something like this should be included:
     44      1.1  christos 
     45      1.1  christos ctrl_interface=/var/run/wpa_supplicant
     46      1.1  christos device_name=My P2P Device
     47      1.1  christos device_type=1-0050F204-1
     48      1.1  christos 
     49      1.1  christos 
     50      1.1  christos wpa_cli
     51      1.1  christos -------
     52      1.1  christos 
     53      1.1  christos Actual Wi-Fi P2P operations are requested during runtime. These can be
     54      1.1  christos done for example using wpa_cli (which is described below) or a GUI
     55      1.1  christos like wpa_gui-qt4.
     56      1.1  christos 
     57      1.1  christos 
     58      1.1  christos wpa_cli starts in interactive mode if no command string is included on
     59      1.1  christos the command line. By default, it will select the first network interface
     60      1.1  christos that it can find (and that wpa_supplicant controls). If more than one
     61      1.1  christos interface is in use, it may be necessary to select one of the explicitly
     62      1.1  christos by adding -i argument on the command line (e.g., 'wpa_cli -i wlan1').
     63      1.1  christos 
     64      1.1  christos Most of the P2P operations are done on the main interface (e.g., the
     65      1.1  christos interface that is automatically added when the driver is loaded, e.g.,
     66      1.1  christos wlan0). When using a separate virtual interface for group operations
     67      1.1  christos (e.g., wlan1), the control interface for that group interface may need
     68      1.1  christos to be used for some operations (mainly WPS activation in GO). This may
     69      1.1  christos change in the future so that all the needed operations could be done
     70      1.1  christos over the main control interface.
     71      1.1  christos 
     72      1.1  christos Device Discovery
     73      1.1  christos 
     74  1.1.1.2  christos p2p_find [timeout in seconds] [type=<social|progressive>] \
     75  1.1.1.3  christos 	[dev_id=<addr>] [dev_type=<device type>] \
     76  1.1.1.4  christos 	[delay=<search delay in ms>] [seek=<service name>] [freq=<MHz>]
     77      1.1  christos 
     78      1.1  christos The default behavior is to run a single full scan in the beginning and
     79      1.1  christos then scan only social channels. type=social will scan only social
     80      1.1  christos channels, i.e., it skips the initial full scan. type=progressive is
     81      1.1  christos like the default behavior, but it will scan through all the channels
     82      1.1  christos progressively one channel at the time in the Search state rounds. This
     83      1.1  christos will help in finding new groups or groups missed during the initial
     84  1.1.1.4  christos full scan. When the type parameter is not included (i.e., full scan), the
     85  1.1.1.4  christos optional freq parameter can be used to override the first scan to use only
     86  1.1.1.4  christos the specified channel after which only social channels are scanned.
     87      1.1  christos 
     88  1.1.1.2  christos The optional dev_id option can be used to specify a single P2P peer to
     89  1.1.1.2  christos search for. The optional delay parameter can be used to request an extra
     90  1.1.1.2  christos delay to be used between search iterations (e.g., to free up radio
     91  1.1.1.2  christos resources for concurrent operations).
     92  1.1.1.2  christos 
     93  1.1.1.3  christos The optional dev_type option can be used to specify a single device type
     94  1.1.1.3  christos (primary or secondary) to search for, e.g.,
     95  1.1.1.3  christos "p2p_find dev_type=1-0050F204-1".
     96  1.1.1.3  christos 
     97  1.1.1.4  christos 
     98  1.1.1.4  christos With one or more seek arguments, the command sends Probe Request frames
     99  1.1.1.4  christos for a P2PS service. For example,
    100  1.1.1.4  christos p2p_find 5 dev_id=11:22:33:44:55:66 seek=alt.example.chat seek=alt.example.video
    101  1.1.1.4  christos 
    102  1.1.1.4  christos Parameters description:
    103  1.1.1.4  christos     Timeout - Optional ASCII base-10-encoded u16. If missing, request will not
    104  1.1.1.4  christos 	time out and must be canceled manually
    105  1.1.1.4  christos     dev_id - Optional to request responses from a single known remote device
    106  1.1.1.4  christos     Service Name - Mandatory UTF-8 string for ASP seeks
    107  1.1.1.4  christos 	Service name must match the remote service being advertised exactly
    108  1.1.1.4  christos 	(no prefix matching).
    109  1.1.1.4  christos 	Service name may be empty, in which case all ASP services will be
    110  1.1.1.4  christos 	returned, and may be filtered with p2p_serv_disc_req settings, and
    111  1.1.1.4  christos 	p2p_serv_asp_resp results.
    112  1.1.1.4  christos 	Multiple service names may be requested, but if it exceeds internal
    113  1.1.1.4  christos 	limit, it will automatically revert to requesting all ASP services.
    114  1.1.1.4  christos 
    115      1.1  christos p2p_listen [timeout in seconds]
    116      1.1  christos 
    117      1.1  christos Start Listen-only state (become discoverable without searching for
    118      1.1  christos other devices). Optional parameter can be used to specify the duration
    119      1.1  christos for the Listen operation in seconds. This command may not be of that
    120      1.1  christos much use during normal operations and is mainly designed for
    121      1.1  christos testing. It can also be used to keep the device discoverable without
    122      1.1  christos having to maintain a group.
    123      1.1  christos 
    124      1.1  christos p2p_stop_find
    125      1.1  christos 
    126      1.1  christos Stop ongoing P2P device discovery or other operation (connect, listen
    127      1.1  christos mode).
    128      1.1  christos 
    129      1.1  christos p2p_flush
    130      1.1  christos 
    131      1.1  christos Flush P2P peer table and state.
    132      1.1  christos 
    133      1.1  christos Group Formation
    134      1.1  christos 
    135  1.1.1.2  christos p2p_prov_disc <peer device address> <display|keypad|pbc> [join|auto]
    136      1.1  christos 
    137      1.1  christos Send P2P provision discovery request to the specified peer. The
    138      1.1  christos parameters for this command are the P2P device address of the peer and
    139      1.1  christos the desired configuration method. For example, "p2p_prov_disc
    140      1.1  christos 02:01:02:03:04:05 display" would request the peer to display a PIN for
    141      1.1  christos us and "p2p_prov_disc 02:01:02:03:04:05 keypad" would request the peer
    142      1.1  christos to enter a PIN that we display.
    143      1.1  christos 
    144      1.1  christos The optional "join" parameter can be used to indicate that this command
    145      1.1  christos is requesting an already running GO to prepare for a new client. This is
    146  1.1.1.2  christos mainly used with "display" to request it to display a PIN. The "auto"
    147  1.1.1.2  christos parameter can be used to request wpa_supplicant to automatically figure
    148  1.1.1.2  christos out whether the peer device is operating as a GO and if so, use
    149  1.1.1.2  christos join-a-group style PD instead of GO Negotiation style PD.
    150      1.1  christos 
    151  1.1.1.4  christos p2p_connect <peer device address> <pbc|pin|PIN#|p2ps> [display|keypad|p2ps]
    152  1.1.1.2  christos 	[persistent|persistent=<network id>] [join|auth]
    153  1.1.1.6  christos 	[go_intent=<0..15>] [freq=<in MHz>] [ht40] [vht] [he] [provdisc] [auto]
    154  1.1.1.5  christos 	[ssid=<hexdump>]
    155      1.1  christos 
    156      1.1  christos Start P2P group formation with a discovered P2P peer. This includes
    157      1.1  christos optional group owner negotiation, group interface setup, provisioning,
    158      1.1  christos and establishing data connection.
    159      1.1  christos 
    160      1.1  christos The <pbc|pin|PIN#> parameter specifies the WPS provisioning
    161      1.1  christos method. "pbc" string starts pushbutton method, "pin" string start PIN
    162      1.1  christos method using an automatically generated PIN (which will be returned as
    163      1.1  christos the command return code), PIN# means that a pre-selected PIN can be
    164      1.1  christos used (e.g., 12345670). [display|keypad] is used with PIN method
    165      1.1  christos to specify which PIN is used (display=dynamically generated random PIN
    166      1.1  christos from local display, keypad=PIN entered from peer display). "persistent"
    167  1.1.1.2  christos parameter can be used to request a persistent group to be formed. The
    168  1.1.1.2  christos "persistent=<network id>" alternative can be used to pre-populate
    169  1.1.1.2  christos SSID/passphrase configuration based on a previously used persistent
    170  1.1.1.2  christos group where this device was the GO. The previously used parameters will
    171  1.1.1.2  christos then be used if the local end becomes the GO in GO Negotiation (which
    172  1.1.1.2  christos can be forced with go_intent=15).
    173      1.1  christos 
    174      1.1  christos "join" indicates that this is a command to join an existing group as a
    175      1.1  christos client. It skips the GO Negotiation part. This will send a Provision
    176      1.1  christos Discovery Request message to the target GO before associating for WPS
    177      1.1  christos provisioning.
    178      1.1  christos 
    179      1.1  christos "auth" indicates that the WPS parameters are authorized for the peer
    180      1.1  christos device without actually starting GO Negotiation (i.e., the peer is
    181      1.1  christos expected to initiate GO Negotiation). This is mainly for testing
    182      1.1  christos purposes.
    183      1.1  christos 
    184      1.1  christos "go_intent" can be used to override the default GO Intent for this GO
    185      1.1  christos Negotiation.
    186      1.1  christos 
    187      1.1  christos "freq" can be used to set a forced operating channel (e.g., freq=2412
    188      1.1  christos to select 2.4 GHz channel 1).
    189      1.1  christos 
    190  1.1.1.2  christos "provdisc" can be used to request a Provision Discovery exchange to be
    191  1.1.1.2  christos used prior to starting GO Negotiation as a workaround with some deployed
    192  1.1.1.2  christos P2P implementations that require this to allow the user to accept the
    193  1.1.1.2  christos connection.
    194  1.1.1.2  christos 
    195  1.1.1.4  christos "auto" can be used to request wpa_supplicant to automatically figure
    196  1.1.1.4  christos out whether the peer device is operating as a GO and if so, use
    197  1.1.1.4  christos join-a-group operation rather than GO Negotiation.
    198  1.1.1.4  christos 
    199  1.1.1.5  christos "ssid=<hexdump>" can be used to specify the Group SSID for join
    200  1.1.1.5  christos operations. This allows the P2P Client interface to filter scan results
    201  1.1.1.5  christos based on SSID to avoid selecting an incorrect BSS entry in case the same
    202  1.1.1.5  christos P2P Device or Interface address have been used in multiple groups
    203  1.1.1.5  christos recently.
    204  1.1.1.5  christos 
    205  1.1.1.4  christos P2PS attribute changes to p2p_connect command:
    206  1.1.1.4  christos 
    207  1.1.1.4  christos P2PS supports two WPS provisioning methods namely PIN method and P2PS default.
    208  1.1.1.5  christos The remaining parameters hold same role as in legacy P2P. In case of P2PS
    209  1.1.1.5  christos default config method "p2ps" keyword is added in p2p_connect command.
    210  1.1.1.4  christos 
    211  1.1.1.4  christos For example:
    212  1.1.1.4  christos p2p_connect 02:0a:f5:85:11:00 12345670 p2ps persistent join
    213  1.1.1.4  christos 	(WPS Method = P2PS default)
    214  1.1.1.4  christos 
    215  1.1.1.4  christos p2p_connect 02:0a:f5:85:11:00 45629034 keypad persistent
    216  1.1.1.4  christos 	(WPS Method = PIN)
    217  1.1.1.4  christos 
    218  1.1.1.4  christos p2p_asp_provision <peer MAC address> <adv_id=peer adv id>
    219  1.1.1.4  christos 	<adv_mac=peer MAC address> [role=2|4|1] <session=session id>
    220  1.1.1.4  christos 	<session_mac=initiator mac address>
    221  1.1.1.4  christos 	[info='service info'] <method=Default|keypad|Display>
    222  1.1.1.4  christos 
    223  1.1.1.4  christos This command starts provision discovery with the P2PS enabled peer device.
    224  1.1.1.4  christos 
    225  1.1.1.4  christos For example,
    226  1.1.1.4  christos 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
    227  1.1.1.4  christos 
    228  1.1.1.4  christos Parameter description:
    229  1.1.1.4  christos     MAC address - Mandatory
    230  1.1.1.4  christos     adv_id - Mandatory remote Advertising ID of service connection is being
    231  1.1.1.4  christos 	established for
    232  1.1.1.4  christos     adv_mac - Mandatory MAC address that owns/registered the service
    233  1.1.1.4  christos     role - Optional
    234  1.1.1.4  christos 	2 (group client only) or 4 (group owner only)
    235  1.1.1.4  christos 	if not present (or 1) role is negotiated by the two peers.
    236  1.1.1.4  christos     session - Mandatory Session ID of the first session to be established
    237  1.1.1.4  christos     session_mac - Mandatory MAC address that owns/initiated the session
    238  1.1.1.4  christos     method - Optional method to request for provisioning (1000 - P2PS Default,
    239  1.1.1.4  christos 	100 - Keypad(PIN), 8 - Display(PIN))
    240  1.1.1.4  christos     info - Optional UTF-8 string. Hint for service to indicate possible usage
    241  1.1.1.4  christos 	parameters - Escape single quote & backslash:
    242  1.1.1.4  christos 	with a backslash 0x27 == ' == \', and 0x5c == \ == \\
    243  1.1.1.4  christos 
    244  1.1.1.4  christos p2p_asp_provision_resp <peer mac address> <adv_id= local adv id>
    245  1.1.1.4  christos 	<adv_mac=local MAC address> <role=1|2|4> <status=0>
    246  1.1.1.4  christos 	<session=session id> <session_mac=peer MAC address>
    247  1.1.1.4  christos 
    248  1.1.1.4  christos This command sends a provision discovery response from responder side.
    249  1.1.1.4  christos 
    250  1.1.1.4  christos For example,
    251  1.1.1.4  christos 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
    252  1.1.1.4  christos 
    253  1.1.1.4  christos Parameters definition:
    254  1.1.1.4  christos     MAC address - Mandatory
    255  1.1.1.4  christos     adv_id - Mandatory local Advertising ID of service connection is being
    256  1.1.1.4  christos 	established for
    257  1.1.1.4  christos     adv_mac - Mandatory MAC address that owns/registered the service
    258  1.1.1.4  christos     role -  Optional 2 (group client only) or 4 (group owner only)
    259  1.1.1.4  christos 	if not present (or 1) role is negotiated by the two peers.
    260  1.1.1.4  christos     status - Mandatory Acceptance/Rejection code of Provisioning
    261  1.1.1.4  christos     session - Mandatory Session ID of the first session to be established
    262  1.1.1.4  christos     session_mac - Mandatory MAC address that owns/initiated the session
    263  1.1.1.4  christos 
    264  1.1.1.3  christos p2p_group_add [persistent|persistent=<network id>] [freq=<freq in MHz>]
    265  1.1.1.6  christos 	[ht40] [vht] [he]
    266      1.1  christos 
    267      1.1  christos Set up a P2P group owner manually (i.e., without group owner
    268      1.1  christos negotiation with a specific peer). This is also known as autonomous
    269      1.1  christos GO. Optional persistent=<network id> can be used to specify restart of
    270      1.1  christos a persistent group. Optional freq=<freq in MHz> can be used to force
    271      1.1  christos the GO to be started on a specific frequency. Special freq=2 or freq=5
    272      1.1  christos options can be used to request the best 2.4 GHz or 5 GHz band channel
    273      1.1  christos to be selected automatically.
    274      1.1  christos 
    275      1.1  christos p2p_reject <peer device address>
    276      1.1  christos 
    277      1.1  christos Reject connection attempt from a peer (specified with a device
    278      1.1  christos address). This is a mechanism to reject a pending GO Negotiation with
    279      1.1  christos a peer and request to automatically block any further connection or
    280      1.1  christos discovery of the peer.
    281      1.1  christos 
    282      1.1  christos p2p_group_remove <group interface>
    283      1.1  christos 
    284      1.1  christos Terminate a P2P group. If a new virtual network interface was used for
    285      1.1  christos the group, it will also be removed. The network interface name of the
    286      1.1  christos group interface is used as a parameter for this command.
    287      1.1  christos 
    288      1.1  christos p2p_cancel
    289      1.1  christos 
    290  1.1.1.2  christos Cancel an ongoing P2P group formation and joining-a-group related
    291  1.1.1.5  christos operation. This operation unauthorizes the specific peer device (if any
    292  1.1.1.2  christos had been authorized to start group formation), stops P2P find (if in
    293  1.1.1.2  christos progress), stops pending operations for join-a-group, and removes the
    294  1.1.1.2  christos P2P group interface (if one was used) that is in the WPS provisioning
    295  1.1.1.2  christos step. If the WPS provisioning step has been completed, the group is not
    296  1.1.1.2  christos terminated.
    297      1.1  christos 
    298  1.1.1.3  christos p2p_remove_client <peer's P2P Device Address|iface=<interface address>>
    299  1.1.1.3  christos 
    300  1.1.1.3  christos This command can be used to remove the specified client from all groups
    301  1.1.1.3  christos (operating and persistent) from the local GO. Note that the peer device
    302  1.1.1.3  christos can rejoin the group if it is in possession of a valid key. See p2p_set
    303  1.1.1.3  christos per_sta_psk command below for more details on how the peer can be
    304  1.1.1.3  christos removed securely.
    305  1.1.1.3  christos 
    306      1.1  christos Service Discovery
    307      1.1  christos 
    308  1.1.1.4  christos p2p_service_add asp <auto accept> <adv id> <status 0/1> <Config Methods>
    309  1.1.1.4  christos 	<Service name> [Service Information] [Response Info]
    310  1.1.1.4  christos 
    311  1.1.1.4  christos This command can be used to search for a P2PS service which includes
    312  1.1.1.4  christos Play, Send, Display, and Print service. The parameters for this command
    313  1.1.1.4  christos are "asp" to identify the command as P2PS one, auto accept value,
    314  1.1.1.4  christos advertisement id which uniquely identifies the service requests, state
    315  1.1.1.4  christos of the service whether the service is available or not, config methods
    316  1.1.1.4  christos which can be either P2PS method or PIN method, service name followed by
    317  1.1.1.4  christos two optional parameters service information, and response info.
    318  1.1.1.4  christos 
    319  1.1.1.4  christos For example,
    320  1.1.1.4  christos p2p_service_add asp 1 4d6fc7 0 1108 alt.example.chat svc_info='name=john' rsp_info='enter PIN 1234'
    321  1.1.1.4  christos 
    322  1.1.1.4  christos Parameters definition:
    323  1.1.1.4  christos     asp - Mandatory for ASP service registration
    324  1.1.1.4  christos     auto accept - Mandatory ASCII hex-encoded boolean (0 == no auto-accept,
    325  1.1.1.4  christos 	1 == auto-accept ANY role, 2 == auto-accept CLIENT role,
    326  1.1.1.4  christos 	4 == auto-accept GO role)
    327  1.1.1.4  christos     Advertisement ID - Mandatory non-zero ASCII hex-encoded u32
    328  1.1.1.4  christos 	(Must be unique/not yet exist in svc db)
    329  1.1.1.4  christos     State - Mandatory ASCII hex-encoded u8 (0 -- Svc not available,
    330  1.1.1.4  christos 	1 -- Svc available, 2-0xff  Application defined)
    331  1.1.1.4  christos     Config Methods - Mandatory ASCII hex-encoded u16 (bitmask of WSC config
    332  1.1.1.4  christos 	methods)
    333  1.1.1.4  christos     Service Name - Mandatory UTF-8 string
    334  1.1.1.4  christos     Service Information - Optional UTF-8 string
    335  1.1.1.4  christos 	Escape single quote & backslash with a backslash:
    336  1.1.1.4  christos 	0x27 == ' == \', and 0x5c == \ == \\
    337  1.1.1.4  christos     Session response information -  Optional (used only if auto accept is TRUE)
    338  1.1.1.4  christos 	UTF-8 string
    339  1.1.1.4  christos 	Escape single quote & backslash with a backslash:
    340  1.1.1.4  christos 	0x27 == ' == \', and 0x5c == \ == \\
    341  1.1.1.4  christos 
    342  1.1.1.4  christos p2p_service_rep asp <auto accept> <adv id> <status 0/1> <Config Methods>
    343  1.1.1.4  christos 	<Service name> [Service Information] [Response Info]
    344  1.1.1.4  christos 
    345  1.1.1.4  christos This command can be used to replace the existing service request
    346  1.1.1.4  christos attributes from the initiator side. The replacement is only allowed if
    347  1.1.1.4  christos the advertisement id issued in the command matches with any one entry in
    348  1.1.1.4  christos the list of existing SD queries. If advertisement id doesn't match the
    349  1.1.1.4  christos command returns a failure.
    350  1.1.1.4  christos 
    351  1.1.1.4  christos For example,
    352  1.1.1.4  christos p2p_service_rep asp 1 4d6fc7 1 1108 alt.example.chat svc_info='name=john' rsp_info='enter PIN 1234'
    353  1.1.1.4  christos 
    354  1.1.1.4  christos Parameters definition:
    355  1.1.1.4  christos     asp - Mandatory for ASP service registration
    356  1.1.1.4  christos     auto accept - Mandatory ASCII hex-encoded boolean (1 == true, 0 == false)
    357  1.1.1.4  christos     Advertisement ID - Mandatory non-zero ASCII hex-encoded u32
    358  1.1.1.4  christos 	(Must already exist in svc db)
    359  1.1.1.4  christos     State - Mandatory ASCII hex-encoded u8 (can be used to indicate svc
    360  1.1.1.4  christos 	available or not available for instance)
    361  1.1.1.4  christos     Config Methods - Mandatory ASCII hex-encoded u16 (bitmask of WSC config
    362  1.1.1.4  christos 	methods)
    363  1.1.1.4  christos     Service Name - Mandatory UTF-8 string (Must match existing string in svc db)
    364  1.1.1.4  christos     Service Information - Optional UTF-8 string
    365  1.1.1.4  christos 	Escape single quote & backslash with a backslash:
    366  1.1.1.4  christos 	0x27 == ' == \', and 0x5c == \ == \\
    367  1.1.1.4  christos     Session response information -  Optional (used only if auto accept is TRUE)
    368  1.1.1.4  christos 	UTF-8 string
    369  1.1.1.4  christos 	Escape single quote & backslash with a backslash:
    370  1.1.1.4  christos 	0x27 == ' == \', and 0x5c == \ == \\
    371  1.1.1.4  christos 
    372      1.1  christos p2p_serv_disc_req
    373      1.1  christos 
    374      1.1  christos Schedule a P2P service discovery request. The parameters for this
    375      1.1  christos command are the device address of the peer device (or 00:00:00:00:00:00
    376      1.1  christos for wildcard query that is sent to every discovered P2P peer that
    377      1.1  christos supports service discovery) and P2P Service Query TLV(s) as hexdump. For
    378      1.1  christos example,
    379      1.1  christos 
    380      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 02000001
    381      1.1  christos 
    382      1.1  christos schedules a request for listing all available services of all service
    383      1.1  christos discovery protocols and requests this to be sent to all discovered
    384      1.1  christos peers (note: this can result in long response frames). The pending
    385      1.1  christos requests are sent during device discovery (see p2p_find).
    386      1.1  christos 
    387  1.1.1.3  christos There can be multiple pending peer device specific queries (each will be
    388  1.1.1.3  christos sent in sequence whenever the peer is found).
    389      1.1  christos 
    390      1.1  christos This command returns an identifier for the pending query (e.g.,
    391      1.1  christos "1f77628") that can be used to cancel the request. Directed requests
    392      1.1  christos will be automatically removed when the specified peer has replied to
    393      1.1  christos it.
    394      1.1  christos 
    395  1.1.1.3  christos Service Query TLV has following format:
    396  1.1.1.3  christos Length (2 octets, little endian) - length of following data
    397  1.1.1.3  christos Service Protocol Type (1 octet) - see the table below
    398  1.1.1.3  christos Service Transaction ID (1 octet) - nonzero identifier for the TLV
    399  1.1.1.3  christos Query Data (Length - 2 octets of data) - service protocol specific data
    400  1.1.1.3  christos 
    401  1.1.1.3  christos Service Protocol Types:
    402  1.1.1.3  christos 0 = All service protocols
    403  1.1.1.3  christos 1 = Bonjour
    404  1.1.1.3  christos 2 = UPnP
    405  1.1.1.3  christos 3 = WS-Discovery
    406  1.1.1.3  christos 4 = Wi-Fi Display
    407  1.1.1.3  christos 
    408      1.1  christos For UPnP, an alternative command format can be used to specify a
    409      1.1  christos single query TLV (i.e., a service discovery for a specific UPnP
    410      1.1  christos service):
    411      1.1  christos 
    412      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 upnp <version hex> <ST: from M-SEARCH>
    413      1.1  christos 
    414      1.1  christos For example:
    415      1.1  christos 
    416      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 urn:schemas-upnp-org:device:InternetGatewayDevice:1
    417      1.1  christos 
    418      1.1  christos Additional examples for queries:
    419      1.1  christos 
    420      1.1  christos # list of all Bonjour services
    421      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 02000101
    422      1.1  christos 
    423      1.1  christos # list of all UPnP services
    424      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 02000201
    425      1.1  christos 
    426      1.1  christos # list of all WS-Discovery services
    427      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 02000301
    428      1.1  christos 
    429      1.1  christos # list of all Bonjour and UPnP services
    430      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 0200010102000202
    431      1.1  christos 
    432      1.1  christos # Apple File Sharing over TCP
    433      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 130001010b5f6166706f766572746370c00c000c01
    434      1.1  christos 
    435      1.1  christos # Bonjour SSTH (supported service type hash)
    436      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 05000101000000
    437      1.1  christos 
    438      1.1  christos # UPnP examples
    439      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 ssdp:all
    440      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 upnp:rootdevice
    441      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 urn:schemas-upnp-org:service:ContentDirectory:2
    442      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 uuid:6859dede-8574-59ab-9332-123456789012
    443      1.1  christos p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 urn:schemas-upnp-org:device:InternetGatewayDevice:1
    444      1.1  christos 
    445  1.1.1.2  christos # Wi-Fi Display examples
    446  1.1.1.2  christos # format: wifi-display <list of roles> <list of subelements>
    447  1.1.1.2  christos p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [source] 2,3,4,5
    448  1.1.1.2  christos p2p_serv_disc_req 02:01:02:03:04:05 wifi-display [pri-sink] 3
    449  1.1.1.2  christos p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [sec-source] 2
    450  1.1.1.2  christos p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [source+sink] 2,3,4,5
    451  1.1.1.2  christos p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [source][pri-sink] 2,3,4,5
    452  1.1.1.2  christos 
    453  1.1.1.4  christos p2p_serv_disc_req <Unicast|Broadcast mac address> asp <Transaction ID>
    454  1.1.1.4  christos 	<Service Name> [Service Information]
    455  1.1.1.4  christos 
    456  1.1.1.4  christos The command can be used for service discovery for P2PS enabled devices.
    457  1.1.1.4  christos 
    458  1.1.1.4  christos For example: p2p_serv_disc_req 00:00:00:00:00:00 asp a1 alt.example 'john'
    459  1.1.1.4  christos 
    460  1.1.1.4  christos Parameters definition:
    461  1.1.1.4  christos     MAC address - Mandatory Existing
    462  1.1.1.4  christos     asp - Mandatory for ASP queries
    463  1.1.1.4  christos     Transaction ID - Mandatory non-zero ASCII hex-encoded u8 for GAS
    464  1.1.1.4  christos     Service Name Prefix - Mandatory UTF-8 string.
    465  1.1.1.4  christos 	Will match from beginning of remote Service Name
    466  1.1.1.4  christos     Service Information Substring - Optional UTF-8 string
    467  1.1.1.4  christos 	If Service Information Substring is not included, all services matching
    468  1.1.1.4  christos 	Service Name Prefix will be returned.
    469  1.1.1.4  christos 	If Service Information Substring is included, both the Substring and the
    470  1.1.1.4  christos 	Service Name Prefix must match for service to be returned.
    471  1.1.1.4  christos 	If remote service has no Service Information, all Substring searches
    472  1.1.1.4  christos 	will fail.
    473  1.1.1.4  christos 
    474      1.1  christos p2p_serv_disc_cancel_req <query identifier>
    475      1.1  christos 
    476      1.1  christos Cancel a pending P2P service discovery request. This command takes a
    477      1.1  christos single parameter: identifier for the pending query (the value returned
    478      1.1  christos by p2p_serv_disc_req, e.g., "p2p_serv_disc_cancel_req 1f77628".
    479      1.1  christos 
    480      1.1  christos p2p_serv_disc_resp
    481      1.1  christos 
    482      1.1  christos Reply to a service discovery query. This command takes following
    483      1.1  christos parameters: frequency in MHz, destination address, dialog token,
    484      1.1  christos response TLV(s). The first three parameters are copied from the
    485      1.1  christos request event. For example, "p2p_serv_disc_resp 2437 02:40:61:c2:f3:b7
    486      1.1  christos 1 0300000101". This command is used only if external program is used
    487      1.1  christos to process the request (see p2p_serv_disc_external).
    488      1.1  christos 
    489      1.1  christos p2p_service_update
    490      1.1  christos 
    491      1.1  christos Indicate that local services have changed. This is used to increment
    492      1.1  christos the P2P service indicator value so that peers know when previously
    493      1.1  christos cached information may have changed. This is only needed when external
    494      1.1  christos service discovery processing is enabled since the commands to
    495      1.1  christos pre-configure services for internal processing will increment the
    496      1.1  christos indicator automatically.
    497      1.1  christos 
    498      1.1  christos p2p_serv_disc_external <0|1>
    499      1.1  christos 
    500      1.1  christos Configure external processing of P2P service requests: 0 (default) =
    501      1.1  christos no external processing of requests (i.e., internal code will process
    502      1.1  christos each request based on pre-configured services), 1 = external
    503      1.1  christos processing of requests (external program is responsible for replying
    504      1.1  christos to service discovery requests with p2p_serv_disc_resp). Please note
    505      1.1  christos that there is quite strict limit on how quickly the response needs to
    506      1.1  christos be transmitted, so use of the internal processing is strongly
    507      1.1  christos recommended.
    508      1.1  christos 
    509      1.1  christos p2p_service_add bonjour <query hexdump> <RDATA hexdump>
    510      1.1  christos 
    511      1.1  christos Add a local Bonjour service for internal SD query processing.
    512      1.1  christos 
    513      1.1  christos Examples:
    514      1.1  christos 
    515      1.1  christos # AFP Over TCP (PTR)
    516      1.1  christos p2p_service_add bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027
    517      1.1  christos # AFP Over TCP (TXT) (RDATA=null)
    518      1.1  christos p2p_service_add bonjour 076578616d706c650b5f6166706f766572746370c00c001001 00
    519      1.1  christos 
    520      1.1  christos # IP Printing over TCP (PTR) (RDATA=MyPrinter._ipp._tcp.local.)
    521      1.1  christos p2p_service_add bonjour 045f697070c00c000c01 094d795072696e746572c027
    522      1.1  christos # IP Printing over TCP (TXT) (RDATA=txtvers=1,pdl=application/postscript)
    523      1.1  christos p2p_service_add bonjour 096d797072696e746572045f697070c00c001001 09747874766572733d311a70646c3d6170706c69636174696f6e2f706f7374736372797074
    524      1.1  christos 
    525      1.1  christos # Supported Service Type Hash (SSTH)
    526      1.1  christos p2p_service_add bonjour 000000 <32-byte bitfield as hexdump>
    527      1.1  christos (note: see P2P spec Annex E.4 for information on how to construct the bitfield)
    528      1.1  christos 
    529      1.1  christos p2p_service_del bonjour <query hexdump>
    530      1.1  christos 
    531      1.1  christos Remove a local Bonjour service from internal SD query processing.
    532      1.1  christos 
    533      1.1  christos p2p_service_add upnp <version hex> <service>
    534      1.1  christos 
    535      1.1  christos Add a local UPnP service for internal SD query processing.
    536      1.1  christos 
    537      1.1  christos Examples:
    538      1.1  christos 
    539      1.1  christos p2p_service_add upnp 10 uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice
    540      1.1  christos p2p_service_add upnp 10 uuid:5566d33e-9774-09ab-4822-333456785632::upnp:rootdevice
    541      1.1  christos p2p_service_add upnp 10 uuid:1122de4e-8574-59ab-9322-333456789044::urn:schemas-upnp-org:service:ContentDirectory:2
    542      1.1  christos p2p_service_add upnp 10 uuid:5566d33e-9774-09ab-4822-333456785632::urn:schemas-upnp-org:service:ContentDirectory:2
    543      1.1  christos p2p_service_add upnp 10 uuid:6859dede-8574-59ab-9332-123456789012::urn:schemas-upnp-org:device:InternetGatewayDevice:1
    544      1.1  christos 
    545      1.1  christos p2p_service_del upnp <version hex> <service>
    546      1.1  christos 
    547      1.1  christos Remove a local UPnP service from internal SD query processing.
    548      1.1  christos 
    549  1.1.1.4  christos p2p_service_del asp <adv id>
    550  1.1.1.4  christos 
    551  1.1.1.4  christos Removes the local asp service from internal SD query list.
    552  1.1.1.4  christos For example: p2p_service_del asp 4d6fc7
    553  1.1.1.4  christos 
    554      1.1  christos p2p_service_flush
    555      1.1  christos 
    556      1.1  christos Remove all local services from internal SD query processing.
    557      1.1  christos 
    558      1.1  christos Invitation
    559      1.1  christos 
    560      1.1  christos p2p_invite [persistent=<network id>|group=<group ifname>] [peer=address]
    561  1.1.1.6  christos 	[go_dev_addr=address] [freq=<freq in MHz>] [ht40] [vht] [he]
    562  1.1.1.3  christos 	[pref=<MHz>]
    563      1.1  christos 
    564      1.1  christos Invite a peer to join a group (e.g., group=wlan1) or to reinvoke a
    565      1.1  christos persistent group (e.g., persistent=4). If the peer device is the GO of
    566  1.1.1.2  christos the persistent group, the peer parameter is not needed. Otherwise it is
    567      1.1  christos used to specify which device to invite. go_dev_addr parameter can be
    568      1.1  christos used to override the GO device address for Invitation Request should
    569      1.1  christos it be not known for some reason (this should not be needed in most
    570  1.1.1.2  christos cases). When reinvoking a persistent group, the GO device can specify
    571  1.1.1.3  christos the frequency for the group with the freq parameter. When reinvoking a
    572  1.1.1.3  christos persistent group, the P2P client device can use freq parameter to force
    573  1.1.1.3  christos a specific operating channel (or invitation failure if GO rejects that)
    574  1.1.1.3  christos or pref parameter to request a specific channel (while allowing GO to
    575  1.1.1.3  christos select to use another channel, if needed).
    576      1.1  christos 
    577      1.1  christos Group Operations
    578      1.1  christos 
    579      1.1  christos (These are used on the group interface.)
    580      1.1  christos 
    581      1.1  christos wps_pin <any|address> <PIN>
    582      1.1  christos 
    583      1.1  christos Start WPS PIN method. This allows a single WPS Enrollee to connect to
    584      1.1  christos the AP/GO. This is used on the GO when a P2P client joins an existing
    585      1.1  christos group. The second parameter is the address of the Enrollee or a string
    586      1.1  christos "any" to allow any station to use the entered PIN (which will restrict
    587      1.1  christos the PIN for one-time-use). PIN is the Enrollee PIN read either from a
    588      1.1  christos label or display on the P2P Client/WPS Enrollee.
    589      1.1  christos 
    590      1.1  christos wps_pbc
    591      1.1  christos 
    592      1.1  christos Start WPS PBC method (i.e., push the button). This allows a single WPS
    593      1.1  christos Enrollee to connect to the AP/GO. This is used on the GO when a P2P
    594      1.1  christos client joins an existing group.
    595      1.1  christos 
    596      1.1  christos p2p_get_passphrase
    597      1.1  christos 
    598      1.1  christos Get the passphrase for a group (only available when acting as a GO).
    599      1.1  christos 
    600      1.1  christos p2p_presence_req [<duration> <interval>] [<duration> <interval>]
    601      1.1  christos 
    602      1.1  christos Send a P2P Presence Request to the GO (this is only available when
    603      1.1  christos acting as a P2P client). If no duration/interval pairs are given, the
    604      1.1  christos request indicates that this client has no special needs for GO
    605  1.1.1.3  christos presence. The first parameter pair gives the preferred duration and
    606      1.1  christos interval values in microseconds. If the second pair is included, that
    607  1.1.1.3  christos indicates which value would be acceptable. This command returns OK
    608  1.1.1.3  christos immediately and the response from the GO is indicated in a
    609  1.1.1.3  christos P2P-PRESENCE-RESPONSE event message.
    610      1.1  christos 
    611      1.1  christos Parameters
    612      1.1  christos 
    613      1.1  christos p2p_ext_listen [<period> <interval>]
    614      1.1  christos 
    615      1.1  christos Configure Extended Listen Timing. If the parameters are omitted, this
    616      1.1  christos feature is disabled. If the parameters are included, Listen State will
    617      1.1  christos be entered every interval msec for at least period msec. Both values
    618      1.1  christos have acceptable range of 1-65535 (with interval obviously having to be
    619      1.1  christos larger than or equal to duration). If the P2P module is not idle at
    620      1.1  christos the time the Extended Listen Timing timeout occurs, the Listen State
    621      1.1  christos operation will be skipped.
    622      1.1  christos 
    623      1.1  christos The configured values will also be advertised to other P2P Devices. The
    624      1.1  christos received values are available in the p2p_peer command output:
    625      1.1  christos 
    626      1.1  christos ext_listen_period=100 ext_listen_interval=5000
    627      1.1  christos 
    628      1.1  christos p2p_set <field> <value>
    629      1.1  christos 
    630      1.1  christos Change dynamic P2P parameters
    631      1.1  christos 
    632      1.1  christos p2p_set discoverability <0/1>
    633      1.1  christos 
    634      1.1  christos Disable/enable advertisement of client discoverability. This is
    635      1.1  christos enabled by default and this parameter is mainly used to allow testing
    636      1.1  christos of device discoverability.
    637      1.1  christos 
    638      1.1  christos p2p_set managed <0/1>
    639      1.1  christos 
    640      1.1  christos Disable/enable managed P2P Device operations. This is disabled by
    641      1.1  christos default.
    642      1.1  christos 
    643  1.1.1.5  christos p2p_set listen_channel <channel> [<op_class>]
    644      1.1  christos 
    645      1.1  christos Set P2P Listen channel. This is mainly meant for testing purposes and
    646      1.1  christos changing the Listen channel during normal operations can result in
    647      1.1  christos protocol failures.
    648      1.1  christos 
    649  1.1.1.5  christos When specifying a social channel on the 2.4 GHz band (1/6/11) there is
    650  1.1.1.5  christos no need to specify the operating class since it defaults to 81.  When
    651  1.1.1.5  christos specifying a social channel on the 60 GHz band (2), specify the 60 GHz
    652  1.1.1.5  christos operating class (180).
    653  1.1.1.5  christos 
    654      1.1  christos p2p_set ssid_postfix <postfix>
    655      1.1  christos 
    656      1.1  christos Set postfix string to be added to the automatically generated P2P SSID
    657      1.1  christos (DIRECT-<two random characters>). For example, postfix of "-testing"
    658      1.1  christos could result in the SSID becoming DIRECT-ab-testing.
    659      1.1  christos 
    660  1.1.1.3  christos p2p_set per_sta_psk <0/1>
    661  1.1.1.3  christos 
    662  1.1.1.3  christos Disabled(default)/enables use of per-client PSK in the P2P groups. This
    663  1.1.1.3  christos can be used to request GO to assign a unique PSK for each client during
    664  1.1.1.3  christos WPS provisioning. When enabled, this allow clients to be removed from
    665  1.1.1.5  christos the group securely with p2p_remove_client command since that client's
    666  1.1.1.3  christos PSK is removed at the same time to prevent it from connecting back using
    667  1.1.1.3  christos the old PSK. When per-client PSK is not used, the client can still be
    668  1.1.1.3  christos disconnected, but it will be able to re-join the group since the PSK it
    669  1.1.1.3  christos learned previously is still valid. It should be noted that the default
    670  1.1.1.3  christos passphrase on the GO that is normally used to allow legacy stations to
    671  1.1.1.3  christos connect through manual configuration does not change here, so if that is
    672  1.1.1.3  christos shared, devices with knowledge of that passphrase can still connect.
    673  1.1.1.3  christos 
    674      1.1  christos set <field> <value>
    675      1.1  christos 
    676      1.1  christos Set global configuration parameters which may also affect P2P
    677      1.1  christos operations. The format on these parameters is same as is used in
    678      1.1  christos wpa_supplicant.conf. Only the parameters listen here should be
    679      1.1  christos changed. Modifying other parameters may result in incorrect behavior
    680      1.1  christos since not all existing users of the parameters are updated.
    681      1.1  christos 
    682      1.1  christos set uuid <UUID>
    683      1.1  christos 
    684      1.1  christos Set WPS UUID (by default, this is generated based on the MAC address).
    685      1.1  christos 
    686      1.1  christos set device_name <device name>
    687      1.1  christos 
    688      1.1  christos Set WPS Device Name (also included in some P2P messages).
    689      1.1  christos 
    690      1.1  christos set manufacturer <manufacturer>
    691      1.1  christos 
    692      1.1  christos Set WPS Manufacturer.
    693      1.1  christos 
    694      1.1  christos set model_name <model name>
    695      1.1  christos 
    696      1.1  christos Set WPS Model Name.
    697      1.1  christos 
    698      1.1  christos set model_number <model number>
    699      1.1  christos 
    700      1.1  christos Set WPS Model Number.
    701      1.1  christos 
    702      1.1  christos set serial_number <serial number>
    703      1.1  christos 
    704      1.1  christos Set WPS Serial Number.
    705      1.1  christos 
    706      1.1  christos set device_type <device type>
    707      1.1  christos 
    708      1.1  christos Set WPS Device Type.
    709      1.1  christos 
    710      1.1  christos set os_version <OS version>
    711      1.1  christos 
    712      1.1  christos Set WPS OS Version.
    713      1.1  christos 
    714      1.1  christos set config_methods <config methods>
    715      1.1  christos 
    716      1.1  christos Set WPS Configuration Methods.
    717      1.1  christos 
    718      1.1  christos set sec_device_type <device type>
    719      1.1  christos 
    720      1.1  christos Add a new Secondary Device Type.
    721      1.1  christos 
    722      1.1  christos set p2p_go_intent <GO intent>
    723      1.1  christos 
    724      1.1  christos Set the default P2P GO Intent. Note: This value can be overridden in
    725      1.1  christos p2p_connect command and as such, there should be no need to change the
    726      1.1  christos default value here during normal operations.
    727      1.1  christos 
    728      1.1  christos set p2p_ssid_postfix <P2P SSID postfix>
    729      1.1  christos 
    730      1.1  christos Set P2P SSID postfix.
    731      1.1  christos 
    732      1.1  christos set persistent_reconnect <0/1>
    733      1.1  christos 
    734      1.1  christos Disable/enabled persistent reconnect for reinvocation of persistent
    735      1.1  christos groups. If enabled, invitations to reinvoke a persistent group will be
    736      1.1  christos accepted without separate authorization (e.g., user interaction).
    737      1.1  christos 
    738      1.1  christos set country <two character country code>
    739      1.1  christos 
    740      1.1  christos Set country code (this is included in some P2P messages).
    741      1.1  christos 
    742  1.1.1.3  christos set p2p_search_delay <delay>
    743  1.1.1.3  christos 
    744  1.1.1.3  christos Set p2p_search_delay which adds extra delay in milliseconds between
    745  1.1.1.3  christos concurrent search iterations to make p2p_find friendlier to concurrent
    746  1.1.1.3  christos operations by avoiding it from taking 100% of radio resources. The
    747  1.1.1.3  christos default value is 500 ms.
    748  1.1.1.3  christos 
    749      1.1  christos Status
    750      1.1  christos 
    751      1.1  christos p2p_peers [discovered]
    752      1.1  christos 
    753      1.1  christos List P2P Device Addresses of all the P2P peers we know. The optional
    754      1.1  christos "discovered" parameter filters out the peers that we have not fully
    755      1.1  christos discovered, i.e., which we have only seen in a received Probe Request
    756      1.1  christos frame.
    757      1.1  christos 
    758      1.1  christos p2p_peer <P2P Device Address>
    759      1.1  christos 
    760      1.1  christos Fetch information about a known P2P peer.
    761      1.1  christos 
    762      1.1  christos Group Status
    763      1.1  christos 
    764      1.1  christos (These are used on the group interface.)
    765      1.1  christos 
    766      1.1  christos status
    767      1.1  christos 
    768      1.1  christos Show status information (connection state, role, use encryption
    769      1.1  christos parameters, IP address, etc.).
    770      1.1  christos 
    771      1.1  christos sta
    772      1.1  christos 
    773      1.1  christos Show information about an associated station (when acting in AP/GO role).
    774      1.1  christos 
    775      1.1  christos all_sta
    776      1.1  christos 
    777      1.1  christos Lists the currently associated stations.
    778      1.1  christos 
    779      1.1  christos Configuration data
    780      1.1  christos 
    781      1.1  christos list_networks
    782      1.1  christos 
    783      1.1  christos Lists the configured networks, including stored information for
    784      1.1  christos persistent groups. The identifier in this list is used with
    785      1.1  christos p2p_group_add and p2p_invite to indicate which persistent group is to
    786      1.1  christos be reinvoked.
    787      1.1  christos 
    788      1.1  christos remove_network <network id>
    789      1.1  christos 
    790      1.1  christos Remove a network entry from configuration. 
    791      1.1  christos 
    792      1.1  christos 
    793  1.1.1.4  christos P2PS Events/Responses:
    794  1.1.1.4  christos 
    795  1.1.1.4  christos P2PS-PROV-START: This events gets triggered when provisioning is issued for
    796  1.1.1.4  christos either seeker or advertiser.
    797  1.1.1.4  christos 
    798  1.1.1.4  christos For example,
    799  1.1.1.4  christos 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'
    800  1.1.1.4  christos 
    801  1.1.1.4  christos Parameters definition:
    802  1.1.1.4  christos     MAC address - always
    803  1.1.1.4  christos     adv_id - always ASCII hex-encoded u32
    804  1.1.1.4  christos     adv_mac - always MAC address that owns/registered the service
    805  1.1.1.4  christos     conncap - always mask of 0x01 (new), 0x02 (group client), 0x04 (group owner)
    806  1.1.1.4  christos 	bits
    807  1.1.1.4  christos     session - always Session ID of the first session to be established
    808  1.1.1.4  christos     session_mac - always MAC address that owns/initiated the session
    809  1.1.1.4  christos     info - if available, UTF-8 string
    810  1.1.1.4  christos 	Escaped single quote & backslash with a backslash:
    811  1.1.1.4  christos 	\' == 0x27 == ', and \\ == 0x5c == \
    812  1.1.1.4  christos 
    813  1.1.1.4  christos P2PS-PROV-DONE: When provisioning is completed then this event gets triggered.
    814  1.1.1.4  christos 
    815  1.1.1.4  christos For example,
    816  1.1.1.4  christos 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]
    817  1.1.1.4  christos 
    818  1.1.1.4  christos Parameters definition:
    819  1.1.1.4  christos     MAC address - always main device address of peer. May be different from MAC
    820  1.1.1.4  christos 	ultimately connected to.
    821  1.1.1.4  christos     status - always ascii hex-encoded u8 (0 == success, 12 == deferred success)
    822  1.1.1.4  christos     adv_id - always ascii hex-encoded u32
    823  1.1.1.4  christos     adv_mac - always MAC address that owns/registered the service
    824  1.1.1.4  christos     conncap - always One of: 1 (new), 2 (group client), 4 (group owner) bits
    825  1.1.1.4  christos     session - always Session ID of the first session to be established
    826  1.1.1.4  christos     session_mac - always MAC address that owns/initiated the session
    827  1.1.1.4  christos     dev_passwd_id - only if conncap value == 1 (New GO negotiation)
    828  1.1.1.4  christos 	8 - "p2ps" password must be passed in p2p_connect command
    829  1.1.1.4  christos 	1 - "display" password must be passed in p2p_connect command
    830  1.1.1.4  christos 	5 - "keypad" password must be passed in p2p_connect command
    831  1.1.1.4  christos     join only - if conncap value == 2 (Client Only). Display password and "join"
    832  1.1.1.4  christos 	must be passed in p2p_connect and address must be the MAC specified
    833  1.1.1.4  christos     go only - if conncap value == 4 (GO Only). Interface name must be set with a
    834  1.1.1.4  christos 	password
    835  1.1.1.4  christos     persist - only if previous persistent group existed between peers and shall
    836  1.1.1.4  christos 	be re-used. Group is restarted by sending "p2p_group_add persistent=0"
    837  1.1.1.4  christos 	where value is taken from P2P-PROV-DONE
    838  1.1.1.4  christos 
    839  1.1.1.4  christos Extended Events/Response
    840  1.1.1.4  christos 
    841  1.1.1.4  christos 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
    842  1.1.1.4  christos 
    843  1.1.1.4  christos Parameters definition:
    844  1.1.1.4  christos     adv_id - if ASP ASCII hex-encoded u32. If it is reporting the
    845  1.1.1.4  christos 	"wildcard service", this value will be 0
    846  1.1.1.4  christos     asp_svc - if ASP this is the service string. If it is reporting the
    847  1.1.1.4  christos 	"wildcard service", this value will be org.wi-fi.wfds
    848  1.1.1.4  christos 
    849  1.1.1.4  christos 
    850      1.1  christos wpa_cli action script
    851      1.1  christos ---------------------
    852      1.1  christos 
    853      1.1  christos See examples/p2p-action.sh
    854      1.1  christos 
    855      1.1  christos TODO: describe DHCP/DNS setup
    856      1.1  christos TODO: cross-connection
    857