From a509bcfc107d01e50613e42f7f02a717d56f1900 Mon Sep 17 00:00:00 2001
From: Jakob Olsson <Jakob Olsson>
Date: Mon, 25 Nov 2019 13:22:07 +0100
Subject: [PATCH] update uci.wireless.json

---
 uci/uci.wireless.json | 1511 +++++++++++++++++++++--------------------
 1 file changed, 779 insertions(+), 732 deletions(-)

diff --git a/uci/uci.wireless.json b/uci/uci.wireless.json
index a037efd..c5e1185 100644
--- a/uci/uci.wireless.json
+++ b/uci/uci.wireless.json
@@ -1,733 +1,780 @@
 {
-	"definitions": {
-		"channel_2_t": {
-			"description": "Specifies the wireless channel to use. “auto” defaults to the lowest available channel.",
-			"title": "2.4GHz Channel",
-			"type": "integer",
-			"default": "auto",
-			"minimum": 1,
-			"maximum": 14
-		},
-		"channel_5_t": {
-			"description": "Specifies the wireless channel to use. “auto” defaults to the lowest available channel.",
-			"title": "5GHz Channel",
-			"type": "integer",
-			"default": "auto",
-			"minimum": 32,
-			"maximum": 200
-		},
-		"channels_2_t": {
-			"description": "Use specific channels, when channel is in “auto” mode. This option allows hostapd to select one of the provided channels when a channel should be automatically selected. Channels can be provided as range using hyphen ('-') or individual channels can be specified by space (' ') separated values.",
-			"title": "2.4GHz Channels",
-			"type": "array",
-			"items": { "$ref": "#/definitions/channel_2_t"}
-		},
-		"channels_5_t": {
-			"description": "Use specific channels, when channel is in “auto” mode. This option allows hostapd to select one of the provided channels when a channel should be automatically selected. Channels can be provided as range using hyphen ('-') or individual channels can be specified by space (' ') separated values.",
-			"title": "5GHz Channels",
-			"type": "array",
-			"items": { "$ref": "#/definitions/channel_5_t"}
-		},
-		"macaddr_t": {
-			"description": "Specifies the radio adapter associated to this section, it is not used to change the device mac but to identify the underlying interface.",
-			"title": "MAC Address",
-			"type": "string",
-			"minLength": 17,
-			"maxLength": 17,
-			"pattern":"^([0-9a-fA-F][0-9a-fA-F]:){5}[0-9a-fA-F][0-9a-fA-F]$"
-		},
-		"nasid_t": {
-			"title": "MAC Address",
-			"type": "string",
-			"minLength": 1,
-			"maxLength": 48,
-			"pattern":"^([0-9a-fA-F]){1,48}$"
-		},
-		"iface_t": {
-			"title": "Interface",
-			"type": "string",
-			"minLength": 1,
-			"maxLength": 16
-		},
-		"ssid_t": {
-			"title": "SSID",
-			"type": "string",
-			"minLength": 0,
-			"maxLength": 32
-		},
-		"nstations_t": {
-			"title": "Number of stations",
-			"type": "integer",
-			"minimum": 0,
-			"maximum": 2007
-		},
-		"bandwidth_2_t": {
-			"title": "Bandwidth",
-			"type": "integer",
-			"enum": [
-				20,
-				40
-			]
-		},
-		"bandwidth_5_t": {
-			"title": "Bandwidth",
-			"type": "integer",
-			"enum": [
-				20,
-				40,
-				80,
-				160
-			]
-		},
-		"port_t": {
-			"type": "integer",
-			"minimum": 1,
-			"maximum": 65535
-		},
-		"server_t": {
-			"type": "string",
-			"oneOf": [
-				{ "format": "ipv4" },
-				{ "format": "ipv6" }
-			]
-		}
-	},
-	"$schema": "http://json-schema.org/draft-07/schema#",
-	"$id": "https://www.iopsys.eu/dataelements",
-	"properties": {
-		"wifi-status": {
-			"type":"object",
-			"properties": {
-				"wlan": { "type": "boolean" },
-				"wps": { "type": "boolean" },
-				"sched_status": {
-					"type": "boolean",
-					"default": 0
-				},
-				"schedule": { "type": "integer" }
-			}
-		},
-		"bandsteering": {
-			"type":"object",
-			"properties": {
-				"enabled": { "type": "boolean" },
-				"policy": { "type": "integer" }
-			}
-		},
-		"apsteerings": {
-			"type": "object",
-			"properties": {
-				"enabeld": { "type": "boolean" }
-			}
-		},
-		"wifi-device": {
-			"type":"object",
-			"required": [
-				"type",
-				"channel"
-			],
-			"allOf": [
-				{
-					"if": {
-						"properties": {
-							"band": {
-								"const": "b"
-							}
-						}
-					},
-					"then": {
-						"properties": {
-							"channel": {
-								"oneOf": [
-									{
-										"type": "string",
-										"const": "auto"
-									},
-									{ "$ref": "#/definitions/channels_2_t" }
-								]
-							},
-							"bandwidth": { "$ref": "#/definitions/bandwidth_2_t"},
-							"channels": { "$ref": "#/definitions/channels_2_t" }
-						}
-					},
-					"else": {
-						"properties": {
-							"channel": {
-								"oneOf": [
-									{
-										"type": "string",
-										"const": "auto"
-									},
-									{ "$ref": "#/definitions/channels_5_t" }
-								]
-							},
-							"bandwidth": { "$ref": "#/definitions/bandwidth_5_t"},
-							"channels": { "$ref": "#/definitions/channels_5_t" }
-						}
-					}
-				},
-				{
-					"if": {
-						"properties": {
-							"country": {
-								"type": "string",
-								"minLength": 2,
-								"maxLength": 3
-							}
-						}
-					},
-					"then": {
-						"properties": {
-							"country_ie": {
-								"description": "Enables IEEE 802.11d country IE (information element) advertisement in beacon and probe response frames. This IE contains the country code and channel/power map. Requires country.",
-								"type": "integer",
-								"const": 1
-							}
-						}
-					},
-					"else": {
-						"properties": {
-							"country_ie": {
-								"description": "Enables IEEE 802.11d country IE (information element) advertisement in beacon and probe response frames. This IE contains the country code and channel/power map. Requires country.",
-								"type": "integer",
-								"const": 0
-							}
-						}
-					}
-				}
-			],
-			"properties": {
-				"type": {
-					"description": "The type is determined on firstboot during the initial radio device detection - it is usually not required to change it. Used values are broadcom on brcm47xx, or mac80211 for all other platforms",
-					"type": "string"
-				},
-				"phy": {
-					"desription": "Specifies the radio phy associated to this section. If present, it is usually autodetected and should not be changed.",
-					"type": "string"
-				},
-				"macaddr": {
-					"$ref": "#/definitions/macaddr_t"
-				},
-				"disabled": {
-					"description": "Disables the radio adapter if set to 1. Removing this option or setting it to 0 will enable the adapter",
-					"type": "boolean",
-					"default": false
-				},
-				"hwmode": {
-					"description": "Selects the wireless protocol to use, possible values are 11b, 11g, and 11a. Note that 11ng and 11na are not available options, see ticket 17541.",
-					"type": "string",
-					"enum": [
-						"auto",
-						"11b",
-						"11g",
-						"11a"
-					]
-				},
-				"htmode": {
-					"description": "Specifies the channel width in 802.11n and 802.11ac mode, possible values are: HT20, HT40-, HT40+, HT40, or VHT20, VHT40, VHT80, VHT160, NOHT disables 11n",
-					"type": "string",
-					"enum": [
-						"HT20",
-						"HT40",
-						"HT40-",
-						"HT40+",
-						"VHT20",
-						"VHT40",
-						"VHT80",
-						"VHT160",
-						"NOHT"
-					]
-				},
-				"chanbw": {
-					"description": "Specifies a narrow channel width in MHz, possible values are: 5, 10, 20",
-					"type": "integer",
-					"default": 20,
-					"enum": [5, 10, 20]
-				},
-				"ht_capab": {
-					"description": "Specifies the available capabilities of the radio. The values are autodetected.",
-					"type": "string"
-				},
-				"txpower": {
-					"description": "Specifies the transmission power in dBm",
-					"type": "integer",
-					"minimum": 0
-				},
-				"diversity": {
-					"description": "Enables or disables the automatic antenna selection by the driver",
-					"type": "boolean",
-					"default": 1
-				},
-				"rxantenna": {
-					"description": "Specifies the antenna for receiving, the value may be driver specific, usually it is 1 for the first and 2 for the second antenna. Specifying 0 enables automatic selection by the driver if supported. This option has no effect if diversity is enabled",
-					"type": "integer"
-				},
-				"txantenna": {
-					"description": "Specifies the antenna for transmitting, values are identical to rxantenna",
-					"type": "integer"
-				},
-				"country": {
-					"description": "Specifies the country code, affects the available channels and transmission powers. For type broadcom a two letter country code is used (EN or DE). The madwifi driver expects a numeric code.",
-					"type": "string",
-					"minLength": 2,
-					"maxLength": 3
-				},
-				"distance": {
-					"description": "Distance between the ap and the furthest client in meters.",
-					"type": "integer"
-				},
-				"beacon_int": {
-					"description": "Set the beacon interval. This is the time interval between beacon frames, measured in units of 1.024 ms. hostapd permits this to be set between 15 and 65535. This option only has an effect on ap and adhoc wifi-ifaces",
-					"type": "integer",
-					"default": 100,
-					"minimum": 15,
-					"maximum": 65535
-				},
-				"basic_rate": {
-					"description": "Set the supported basic rates. Each basic_rate is measured in kb/s. This option only has an effect on ap and adhoc wifi-ifaces",
-					"type": "array",
-					"items": {
-					"type": "integer",
-						"minimum": 0
-					}
-				},
-				"path": {
-					"description": "Path to phy",
-					"type": "string",
-					"pattern": "^\/$|(^(?=\/)|^\\.|^\\.\\.)(\/(?=[^/\\0])[^/\\0]+)*\/?$"
-				},
-				"supported_rates": {
-					"description": "Set the supported data rates. Each supported rate is measured in kb/s. This option only has an effect on ap and adhoc wifi-ifaces. Must be a superset of basic_rate. Basic_rate should be the lowest data rates.",
-					"type": "array",
-					"items": {
-						"type": "integer",
-						"minimum": 0
-					}
-				},
-				"require_mode": {
-					"description": "(AP mode) Set the minimum mode that connecting clients need to support to be allowed to connect. Supported values: g = 802.11g, n = 802.11n, ac = 802.11ac",
-					"type": "string",
-					"enum": [ "g", "n", "ac" ]
-				},
-				"log_level": {
-					"description": "Set the log_level. Supported levels are: 0 = verbose debugging, 1 = debugging, 2 = informational messages, 3 = notification, 4 = warning",
-					"type": "integer",
-					"default": 2,
-					"minimum": 0,
-					"maximum": 4
-				},
-				"legacy_rates": {
-					"description": "0 disables 802.11b data rates, 1 enables 802.11b data rates",
-					"type": "boolean",
-					"defaul": true
-				},
-				"band": {
-					"description": "2.4GHz and 5GHz bands a = 5, b = 2.4",
-					"type": "string",
-					"enum": [
-						"a",
-						"b"
-					]
-				}
-			}
-		},
-		"wifi-iface": {
-			"type":"object",
-			"required": [
-				"device",
-				"network",
-				"mode",
-				"ssid"
-			],
-			"allOf": [
-				{
-					"if": {
-						"properties": {
-							"encryption": {
-								"pattern": "^wep.+$"
-							}
-						}
-					},
-					"then": {
-						"properties": {
-							"key": {
-								"description": "In any WPA-PSK mode, this is a string that specifies the pre-shared passphrase from which the pre-shared key will be derived. The clear text key has to be 8-63 characters long. If a 64-character hexadecimal string is supplied, it will be used directly as the pre-shared key instead. In WEP mode, this can be an integer specifying which key index to use (key1, key2, key3, or key4.) Alternatively, it can be a string specifying a passphrase or key directly, as in key1. In any WPA-Enterprise AP mode, this option has a different interpretation.",
-								"type": "integer",
-								"minimum": 1,
-								"maximum": 4
-							},
-							"key1": {
-								"description": "WEP passphrase or key #1 (selected by the index in key). This string is treated as a passphrase from which the WEP key will be derived. If a 10- or 26-character hexadecimal string is supplied, it will be used directly as the WEP key instead.",
-								"type": "string"
-							},
-							"key2": {
-								"description": "WEP passphrase or key #2 (selected by the index in key), as in key1.",
-								"type": "string"
-							},
-							"key3": {
-								"description": "WEP passphrase or key #3 (selected by the index in key), as in key1.",
-								"type": "string"
-							},
-							"key4": {
-								"description": "WEP passphrase or key #4 (selected by the index in key), as in key1.",
-								"type": "string"
-							}
-						}
-					},
-					"else": {
-						"properties": {
-							"key": {
-								"description": "In any WPA-PSK mode, this is a string that specifies the pre-shared passphrase from which the pre-shared key will be derived. The clear text key has to be 8-63 characters long. If a 64-character hexadecimal string is supplied, it will be used directly as the pre-shared key instead. In WEP mode, this can be an integer specifying which key index to use (key1, key2, key3, or key4.) Alternatively, it can be a string specifying a passphrase or key directly, as in key1. In any WPA-Enterprise AP mode, this option has a different interpretation.",
-								"type": "string",
-								"minLength": 8,
-								"maxLength": 64
-							}
-						}
-					}
-				}
-			],
-			"properties": {
-				"ifname": {
-					"description": "Specifies a custom name for the Wi-Fi interface, which is otherwise automatically named.",
-					"$ref": "#/definitions/iface_t"
-				},
-				"device": {
-					"description": "Specifies the used wireless adapter, must refer to one of the defined wifi-device sections",
-					"$ref": "#/definitions/iface_t"
-				},
-				"network": {
-					"description": "Specifies the network interface to attach the wireless to.",
-					"type": "string",
-					"default": "lan"
-				},
-				"mode": {
-					"description": "Selects the operation mode of the wireless network interface controller. Possible values are ap, sta, adhoc, wds, monitor, mesh",
-					"type": "string",
-					"default": "ap",
-					"enum": [
-						"ap",
-						"sta",
-						"adhoc",
-						"wds",
-						"monitor",
-						"mesh"
-					]
-				},
-				"disabled": {
-					"description": "When set to 1, wireless network is disabled.",
-					"type": "boolean",
-					"default": false
-				},
-				"ssid": {
-					"description": "The broadcasted SSID of the wireless network and for for managed mode the SSID of the network you’re connecting to",
-					"$ref": "#/definitions/ssid_t"
-				},
-				"bssid": {
-					"description": "Override the BSSID of the network, only applicable in adhoc or sta mode. In wds mode specifies the BSSID of another AP to create WDS with.",
-					"$ref": "#/definitions/macaddr_t"
-				},
-				"mesh_id": {
-					"description": "The Mesh ID as defined in IEEE 802.11s. If set, the wireless interface will join this mesh network when brought up. If not, it is necessary to invoke iw <iface> mesh join <mesh_id> to join a mesh after the interface is brought up.",
-					"type": "string"
-				},
-				"hidden": {
-					"description": "Turns off SSID broadcasting if set to 1",
-					"type": "boolean",
-					"default": false
-				},
-				"isolate": {
-					"description": "Isolate wireless clients from each other, only applicable in ap mode.",
-					"type": "boolean",
-					"default": false
-				},
-				"doth": {
-					"description": "Enables 802.11h support.",
-					"type": "boolean",
-					"default": false
-				},
-				"wmm": {
-					"description": "Enables WMM (802.11e) support. Required for 802.11n support",
-					"type": "boolean",
-					"default": true
-				},
-				"encryption": {
-					"description": "Wireless encryption method. Possible values are: none, wep, psk, psk2. For WEP station mode the default is “open system” authentication. Use wep+shared or wep+open to force a specific mode.",
-					"type": "string",
-					"enum": [
-						"none",
-						"wep64-open",
-						"wep64-shared",
-						"wep128-open",
-						"wep128-shared",
-						"wpa-personal",
-						"wpa2-personal",
-						"wpa-wpa2-personal",
-						"wpa-enterprise",
-						"wpa2-enterprise",
-						"wpa-wpa2-enterprise"
-					]
-				},
-				"macfilter": {
-					"description": "Specifies the mac filter policy, disable to disable the filter, allow to treat it as whitelist or deny to treat it as blacklist.",
-					"type": "string",
-					"default": "disable",
-					"enum": ["enable", "disable"]
-				},
-				"maclist": {
-					"description": "List of MAC addresses (divided by spaces) to put into the mac filter.",
-					"type": "array",
-					"items": { "$ref": "#/definitions/macaddr_t"}
-				},
-				"iapp_interface": {
-					"description": "Specifies a network interface to be used for 802.11f (IAPP) - only enabled when defined.",
-					"$ref": "#/definitions/iface_t"
-				},
-				"rsn_preauth": {
-					"description": "Allow preauthentication for WPA2-EAP networks (and advertise it in WLAN beacons). Only works if the specified network interface is a bridge.",
-					"type": "boolean",
-					"default": false
-				 },
-				"ieee80211w": {
-					"description": "Enables MFP (802.11w) support (0 = disabled, 1 = optional, 2 = required). Requires the 'full' version of wpad/hostapd and support from the Wi-Fi driver",
-					"type": "integer",
-					"minimum": 0,
-					"maximum": 2
-				},
-				"ieee80211w_max_timeout": {
-					"description": "Specifies the 802.11w Association SA Query maximum timeout.",
-					"type": "integer"
-				},
-				"ieee80211w_retry_timeout": {
-					"description": "Specifies the 802.11w Association SA Query retry timeout.",
-					"type": "integer"
-				},
-				"maxassoc": {
-					"description": "Specifies the maximum number of clients to connect.",
-					"$ref": "#/definitions/nstations_t"
-				},
-				"macaddr": {
-					"description": "Overrides the MAC address used for the Wi-Fi interface. Warning: if the MAC address specified is a multicast address, this override will fail silently. To avoid this problem, ensure that the mac address specified is a valid unicast mac address.",
-					"$ref": "#/definitions/macaddr_t"
-				},
-				"dtim_period": {
-					"description": "Set the DTIM (delivery traffic information message) period. There will be one DTIM per this many beacon frames. This may be set between 1 and 255. This option only has an effect on ap wifi-ifaces.",
-					"type": "integer",
-					"default": 2,
-					"minimum": 1,
-					"maximum": 255
-				},
-				"short_preamble": {
-					"description": "Set optional use of short preamble",
-					"type": "boolean",
-					"default": true
-				},
-				"max_listen_int": {
-					"description": "Set the maximum allowed STA (client) listen interval. Association will be refused if a STA attempts to associate with a listen interval greater than this value. This option only has an effect on ap wifi-ifaces.",
-					"type": "integer",
-					"default": 65535
-				},
-				"mcast_rate": {
-					"description": "Sets the fixed multicast rate, measured in kb/s. Only supported in adhoc and mesh modes",
-					"type": "integer",
-					"minimum": 0
-				},
-				"wds": {
-					"description": "This sets 4-address mode",
-					"type": "boolean",
-					"default": false
-				},
-				"owe_transition_ssid": {
-					"description": "Opportunistic Wireless Encryption (OWE) Transition SSID (only for OPEN and OWE networks)",
-					"$ref": "#/definitions/ssid_t"
-				},
-				"owe_transition_bssid": {
-					"description": "Opportunistic Wireless Encryption (OWE) Transition BSSID (only for OPEN and OWE networks)",
-					"$ref": "#/definitions/macaddr_t"
-				},
-				"server": {
-					"description": "RADIUS server to handle client authentication",
-					"$ref": "#/definitions/server_t"
-				},
-				"port": {
-					"$ref": "#/definitions/port_t",
-					"description": "RADIUS port",
-					"default": 1812
-				},
-				"key": {
-					"description": "Shared RADIUS secret",
-					"type": "string"
-				},
-				"wpa_group_rekey": {
-					"description": "WPA Group Cipher rekeying interval in seconds",
-					"default": 600,
-					"type": "integer"
-				},
-				"auth_server": {
-					"description": "RADIUS authentication server to handle client authentication",
-					"$ref": "#/definitions/server_t"
-				},
-				"auth_port": {
-					"$ref": "#/definitions/port_t",
-					"description": "RADIUS authentication port",
-					"default": 1812
-				},
-				"auth_secret": {
-					"description": "Shared authentication RADIUS secret",
-					"type": "string"
-				},
-				"auth_cache": {
-					"description": "Disable or enable PMKSA and Opportunistic Key Caching",
-					"type": "boolean"
-				},
-				"acct_server": {
-					"description": "RADIUS accounting server to handle client authentication",
-					"type": "string"
-				},
-				"acct_port": {
-					"$ref": "#/definitions/port_t",
-					"description": "RADIUS accounting port",
-					"default": 1813
-				},
-				"acct_secret": {
-					"description": "Shared accounting RADIUS secret",
-					"type": "string"
-				},
-				"ownip": {
-					"description": "NAS IP Address to use for RADIUS authentication requests",
-					"$ref": "#/definitions/server_t"
-				},
-				"wps": {
-					"description": "Enable wps_pushbutton and wps_label.",
-					"type": "boolean",
-					"default": true
-				},
-				"wps_config": {
-					"description": "List of configuration methods. Currentlly supported methods are: push_button.",
-					"type": "array",
-					"items": {
-						"type": "string",
-						"enum": ["wps_pushbutton"]
-					}
-				},
-				"wps_device_name": {
-					"description": "User-friendly description of device; up to 32 octets encoded in UTF-8.",
-					"type": "string",
-					"default": "LEDE AP",
-					"pattern": "^([0-9a-fA-F]){1,32}$"
-				},
-				"wps_device_type": {
-					"description": "Primary device type. Examples: 1-0050F204-1 (Computer / PC), 1-0050F204-2 (Computer / Server), 5-0050F204-1 (Storage / NAS), 6-0050F204-1 (Network Infrastructure / AP)",
-					"type": "string",
-					"default": "6-0050F204-1",
-					"minLength": 12,
-					"maxLength": 12,
-					"pattern": "^([0-9a-fA-F])-([0-9a-fA-F]){8}-([0-9a-fA-F])$"
-				},
-				"wps_label": {
-					"description": "Enable label configuration method.",
-					"type": "boolean",
-					"default": true
-				},
-				"wps_manufacturer": {
-					"description": "The manufacturer of the device (up to 64 ASCII characters).",
-					"type": "string",
-					"default": "lede-project.org",
-					"minLength": 0,
-					"maxLength": 64
-				},
-				"wps_pushbutton": {
-					"description": "Enable push-button configuration method.",
-					"type": "boolean",
-					"default": true
-				},
-				"wps_pin": {
-					"description": "The PIN to use with WPS-PIN (only in external registrar mode?)",
-					"type": "string"
-				},
-				"ieee80211r": {
-					"description": "Enables fast BSS transition (802.11r) support.",
-					"type": "boolean",
-					"default": false
-				},
-				"nasid": {
-					"description": "PMK-R0 Key Holder identifier (dot11FTR0KeyHolderID). A 1 to 48 octet identifier.",
-					"$ref": "#/definitions/nasid_t"
-				},
-				"mobility_domain": {
-					"description": "Mobility Domain identifier (dot11FTMobilityDomainID, MDID). MDID is used to indicate a group of APs (within an ESS, i.e., sharing the same SSID) between which a STA can use Fast BSS Transition. 2-octet identifier as a hex string.",
-					"type": "string",
-					"minLength": 2,
-					"maxLength": 2,
-					"pattern":"^([0-9a-fA-F]){2}$"
-				},
-				"r0_key_lifetime": {
-					"description": "Default lifetime of the PMK-RO in minutes [1-65535].",
-					"type": "integer",
-					"default": 10000,
-					"minimum": 1,
-					"maximum": 65535
-				},
-				"r1_key_holder": {
-					"description": "PMK-R1 Key Holder identifier (dot11FTR1KeyHolderID). A 6-octet identifier as a hex string.",
-					"type": "string",
-					"default": "00004f577274",
-					"minLength": 6,
-					"maxLength": 6,
-					"pattern": "^([0-9a-fA-F]){6}$"
-				},
-				"reassociation_deadline": {
-					"description": "Reassociation deadline in time units (TUs / 1.024 ms, 1000-65535)",
-					"type": "integer",
-					"default": 1000,
-					"minimum": 1000,
-					"maximum": 65535
-				},
-				"r0kh": {
-					"description": "List of R0KHs in the same Mobility Domain. Valid format: <MAC address>,<NAS Identifier>,<128-bit key as hex string> This list is used to map R0KH-ID (NAS Identifier) to a destination MAC address when requesting PMK-R1 key from the R0KH that the STA used during the Initial Mobility Domain Association.",
-					"type": "string",
-					"pattern": "^([0-9a-fA-F][0-9a-fA-F]:){5}[0-9a-fA-F][0-9a-fA-F],([0-9a-fA-F]){1,48},([0-9a-fA-F]){16}$"
-				},
-				"r1kh": {
-					"description": "List of R1KHs in the same Mobility Domain. Valid format: <MAC address>,<R1KH-ID>,<128-bit key as hex string> This list is used to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD that can request PMK-R1 keys.",
-					"type": "string",
-					"pattern": "^([0-9a-fA-F][0-9a-fA-F]:){5}[0-9a-fA-F][0-9a-fA-F],([0-9a-fA-F]){6},([0-9a-fA-F]){16}$"
-				},
-				"pmk_r1_push": {
-					"description": "Whether PMK-R1 push is enabled at R0KH.",
-					"type": "boolean",
-					"default": false
-				},
-				"ft_over_ds": {
-					"description": "Whether to enable FT-over-DS.",
-					"type": "boolean",
-					"default": true
-				},
-				"ft_psk_generate_local": {
-					"description": "Whether to generate FT response locally for PSK networks. This avoids use of PMK-R1 push/pull from other APs with FT-PSK networks as the required information (PSK and other session data) is already locally available.",
-					"type": "boolean",
-					"default": false
-				},
-				"disassoc_low_ack": {
-					"description": "Disassociate stations based on excessive transmission failures or other indications of connection loss. This depends on the driver capabilities and may not be available with all drivers.",
-					"type": "boolean",
-					"default": true
-				},
-				"max_inactivity": {
-					"description": "Station inactivity limit in seconds: If a station does not send anything in ap_max_inactivity seconds, an empty data frame is sent to it in order to verify whether it is still in range. If this frame is not ACKed, the station will be disassociated and then deauthenticated.",
-					"type": "integer",
-					"default": 300
-				},
-				"skip_inactivity_poll": {
-					"description": "The inactivity polling can be disabled to disconnect stations based on inactivity timeout so that idle stations are more likely to be disconnected even if they are still in range of the AP.",
-					"type": "boolean",
-					"default": false
-				},
-				"max_listen_interval": {
-					"description": "Maximum allowed Listen Interval (how many Beacon periods STAs are allowed to remain asleep).",
-					"type": "integer",
-					"default": 65535
-				}
-			}
-		}
-	}
-}
+    "definitions": {
+        "channel_2_t": {
+            "description": "Specifies the wireless channel to use. 'auto' defaults to the lowest available channel.",
+            "title": "2.4GHz Channel",
+            "type": "integer",
+            "default": "auto",
+            "minimum": 1,
+            "maximum": 14
+        },
+        "channel_5_t": {
+            "description": "Specifies the wireless channel to use. 'auto' defaults to the lowest available channel.",
+            "title": "5GHz Channel",
+            "type": "integer",
+            "default": "auto",
+            "minimum": 32,
+            "maximum": 200
+        },
+        "channels_2_t": {
+            "description": "Use specific channels, when channel is in 'auto' mode. This option allows hostapd to select one of the provided channels when a channel should be automatically selected. Channels can be provided as range using hyphen ('-') or individual channels can be specified by space (' ') separated values.",
+            "title": "2.4GHz Channels",
+            "type": "array",
+            "items": {
+                "$ref": "#/definitions/channel_2_t"
+            }
+        },
+        "channels_5_t": {
+            "description": "Use specific channels, when channel is in 'auto' mode. This option allows hostapd to select one of the provided channels when a channel should be automatically selected. Channels can be provided as range using hyphen ('-') or individual channels can be specified by space (' ') separated values.",
+            "title": "5GHz Channels",
+            "type": "array",
+            "items": {
+                "$ref": "#/definitions/channel_5_t"
+            }
+        },
+        "macaddr_t": {
+            "description": "Specifies the radio adapter associated to this section, it is not used to change the device mac but to identify the underlying interface.",
+            "title": "MAC Address",
+            "type": "string",
+            "minLength": 17,
+            "maxLength": 17,
+            "pattern": "^([0-9a-fA-F][0-9a-fA-F]:){5}[0-9a-fA-F][0-9a-fA-F]$"
+        },
+        "nasid_t": {
+            "title": "MAC Address",
+            "type": "string",
+            "minLength": 1,
+            "maxLength": 48,
+            "pattern": "^([0-9a-fA-F]){1,48}$"
+        },
+        "iface_t": {
+            "title": "Interface",
+            "type": "string",
+            "minLength": 1,
+            "maxLength": 16
+        },
+        "ssid_t": {
+            "title": "SSID",
+            "type": "string",
+            "minLength": 0,
+            "maxLength": 32
+        },
+        "nstations_t": {
+            "title": "Number of stations",
+            "type": "integer",
+            "minimum": 0,
+            "maximum": 2007
+        },
+        "bandwidth_2_t": {
+            "title": "Bandwidth",
+            "type": "integer",
+            "enum": [
+                20,
+                40
+            ]
+        },
+        "bandwidth_5_t": {
+            "title": "Bandwidth",
+            "type": "integer",
+            "enum": [
+                20,
+                40,
+                80,
+                160
+            ]
+        },
+        "port_t": {
+            "type": "integer",
+            "minimum": 1,
+            "maximum": 65535
+        },
+        "server_t": {
+            "type": "string",
+            "oneOf": [
+                {
+                    "format": "ipv4"
+                },
+                {
+                    "format": "ipv6"
+                }
+            ]
+        }
+    },
+    "$schema": "http://json-schema.org/draft-07/schema#",
+    "$id": "https://www.iopsys.eu/dataelements",
+    "properties": {
+        "wifi-status": {
+            "type": "object",
+            "properties": {
+                "wlan": {
+                    "type": "boolean"
+                },
+                "wps": {
+                    "type": "boolean"
+                },
+                "sched_status": {
+                    "type": "boolean",
+                    "default": 0
+                },
+                "schedule": {
+                    "type": "integer"
+                }
+            }
+        },
+        "bandsteering": {
+            "type": "object",
+            "properties": {
+                "enabled": {
+                    "type": "boolean"
+                },
+                "policy": {
+                    "type": "integer"
+                }
+            }
+        },
+        "apsteerings": {
+            "type": "object",
+            "properties": {
+                "enabeld": {
+                    "type": "boolean"
+                }
+            }
+        },
+        "wifi-device": {
+            "type": "object",
+            "required": [
+                "type",
+                "channel"
+            ],
+            "allOf": [
+                {
+                    "if": {
+                        "properties": {
+                            "band": {
+                                "const": "b"
+                            }
+                        }
+                    },
+                    "then": {
+                        "properties": {
+                            "channel": {
+                                "oneOf": [
+                                    {
+                                        "type": "string",
+                                        "const": "auto"
+                                    },
+                                    {
+                                        "$ref": "#/definitions/channels_2_t"
+                                    }
+                                ]
+                            },
+                            "bandwidth": {
+                                "$ref": "#/definitions/bandwidth_2_t"
+                            },
+                            "channels": {
+                                "$ref": "#/definitions/channels_2_t"
+                            }
+                        }
+                    },
+                    "else": {
+                        "properties": {
+                            "channel": {
+                                "oneOf": [
+                                    {
+                                        "type": "string",
+                                        "const": "auto"
+                                    },
+                                    {
+                                        "$ref": "#/definitions/channels_5_t"
+                                    }
+                                ]
+                            },
+                            "bandwidth": {
+                                "$ref": "#/definitions/bandwidth_5_t"
+                            },
+                            "channels": {
+                                "$ref": "#/definitions/channels_5_t"
+                            }
+                        }
+                    }
+                },
+                {
+                    "if": {
+                        "properties": {
+                            "country": {
+                                "type": "string",
+                                "minLength": 2,
+                                "maxLength": 3
+                            }
+                        }
+                    },
+                    "then": {
+                        "properties": {
+                            "country_ie": {
+                                "description": "Enables IEEE 802.11d country IE (information element) advertisement in beacon and probe response frames. This IE contains the country code and channel/power map. Requires country.",
+                                "type": "integer",
+                                "const": 1
+                            }
+                        }
+                    },
+                    "else": {
+                        "properties": {
+                            "country_ie": {
+                                "description": "Enables IEEE 802.11d country IE (information element) advertisement in beacon and probe response frames. This IE contains the country code and channel/power map. Requires country.",
+                                "type": "integer",
+                                "const": 0
+                            }
+                        }
+                    }
+                }
+            ],
+            "properties": {
+                "type": {
+                    "description": "The type is determined on firstboot during the initial radio device detection - it is usually not required to change it. Used values are broadcom on brcm47xx, or mac80211 for all other platforms",
+                    "type": "string"
+                },
+                "phy": {
+                    "desription": "Specifies the radio phy associated to this section. If present, it is usually autodetected and should not be changed.",
+                    "type": "string"
+                },
+                "macaddr": {
+                    "$ref": "#/definitions/macaddr_t"
+                },
+                "disabled": {
+                    "description": "Disables the radio adapter if set to 1. Removing this option or setting it to 0 will enable the adapter",
+                    "type": "boolean",
+                    "default": false
+                },
+                "hwmode": {
+                    "description": "Selects the wireless protocol to use, possible values are 11b, 11g, and 11a. Note that 11ng and 11na are not available options, see ticket 17541.",
+                    "type": "string",
+                    "enum": [
+                        "auto",
+                        "11b",
+                        "11g",
+                        "11a"
+                    ]
+                },
+                "htmode": {
+                    "description": "Specifies the channel width in 802.11n and 802.11ac mode, possible values are: HT20, HT40-, HT40+, HT40, or VHT20, VHT40, VHT80, VHT160, NOHT disables 11n",
+                    "type": "string",
+                    "enum": [
+                        "HT20",
+                        "HT40",
+                        "HT40-",
+                        "HT40+",
+                        "VHT20",
+                        "VHT40",
+                        "VHT80",
+                        "VHT160",
+                        "NOHT"
+                    ]
+                },
+                "chanbw": {
+                    "description": "Specifies a narrow channel width in MHz, possible values are: 5, 10, 20",
+                    "type": "integer",
+                    "default": 20,
+                    "enum": [
+                        5,
+                        10,
+                        20
+                    ]
+                },
+                "ht_capab": {
+                    "description": "Specifies the available capabilities of the radio. The values are autodetected.",
+                    "type": "string"
+                },
+                "txpower": {
+                    "description": "Specifies the transmission power in dBm",
+                    "type": "integer",
+                    "minimum": 0
+                },
+                "diversity": {
+                    "description": "Enables or disables the automatic antenna selection by the driver",
+                    "type": "boolean",
+                    "default": 1
+                },
+                "rxantenna": {
+                    "description": "Specifies the antenna for receiving, the value may be driver specific, usually it is 1 for the first and 2 for the second antenna. Specifying 0 enables automatic selection by the driver if supported. This option has no effect if diversity is enabled",
+                    "type": "integer"
+                },
+                "txantenna": {
+                    "description": "Specifies the antenna for transmitting, values are identical to rxantenna",
+                    "type": "integer"
+                },
+                "country": {
+                    "description": "Specifies the country code, affects the available channels and transmission powers. For type broadcom a two letter country code is used (EN or DE). The madwifi driver expects a numeric code.",
+                    "type": "string",
+                    "minLength": 2,
+                    "maxLength": 3
+                },
+                "distance": {
+                    "description": "Distance between the ap and the furthest client in meters.",
+                    "type": "integer"
+                },
+                "beacon_int": {
+                    "description": "Set the beacon interval. This is the time interval between beacon frames, measured in units of 1.024 ms. hostapd permits this to be set between 15 and 65535. This option only has an effect on ap and adhoc wifi-ifaces",
+                    "type": "integer",
+                    "default": 100,
+                    "minimum": 15,
+                    "maximum": 65535
+                },
+                "basic_rate": {
+                    "description": "Set the supported basic rates. Each basic_rate is measured in kb/s. This option only has an effect on ap and adhoc wifi-ifaces",
+                    "type": "array",
+                    "items": {
+                        "type": "integer",
+                        "minimum": 0
+                    }
+                },
+                "path": {
+                    "description": "Path to phy",
+                    "type": "string",
+                    "pattern": "^/$|(^(?=/)|^\\.|^\\.\\.)(/(?=[^/\\0])[^/\\0]+)*/?$"
+                },
+                "supported_rates": {
+                    "description": "Set the supported data rates. Each supported rate is measured in kb/s. This option only has an effect on ap and adhoc wifi-ifaces. Must be a superset of basic_rate. Basic_rate should be the lowest data rates.",
+                    "type": "array",
+                    "items": {
+                        "type": "integer",
+                        "minimum": 0
+                    }
+                },
+                "require_mode": {
+                    "description": "(AP mode) Set the minimum mode that connecting clients need to support to be allowed to connect. Supported values: g = 802.11g, n = 802.11n, ac = 802.11ac",
+                    "type": "string",
+                    "enum": [
+                        "g",
+                        "n",
+                        "ac"
+                    ]
+                },
+                "log_level": {
+                    "description": "Set the log_level. Supported levels are: 0 = verbose debugging, 1 = debugging, 2 = informational messages, 3 = notification, 4 = warning",
+                    "type": "integer",
+                    "default": 2,
+                    "minimum": 0,
+                    "maximum": 4
+                },
+                "legacy_rates": {
+                    "description": "0 disables 802.11b data rates, 1 enables 802.11b data rates",
+                    "type": "boolean",
+                    "defaul": true
+                },
+                "band": {
+                    "description": "2.4GHz and 5GHz bands a = 5, b = 2.4",
+                    "type": "string",
+                    "enum": [
+                        "a",
+                        "b"
+                    ]
+                }
+            }
+        },
+        "wifi-iface": {
+            "type": "object",
+            "required": [
+                "device",
+                "network",
+                "mode",
+                "ssid"
+            ],
+            "allOf": [
+                {
+                    "if": {
+                        "properties": {
+                            "encryption": {
+                                "pattern": "^wep.+$"
+                            }
+                        }
+                    },
+                    "then": {
+                        "properties": {
+                            "key": {
+                                "description": "In any WPA-PSK mode, this is a string that specifies the pre-shared passphrase from which the pre-shared key will be derived. The clear text key has to be 8-63 characters long. If a 64-character hexadecimal string is supplied, it will be used directly as the pre-shared key instead. In WEP mode, this can be an integer specifying which key index to use (key1, key2, key3, or key4.) Alternatively, it can be a string specifying a passphrase or key directly, as in key1. In any WPA-Enterprise AP mode, this option has a different interpretation.",
+                                "type": "integer",
+                                "minimum": 1,
+                                "maximum": 4
+                            },
+                            "key1": {
+                                "description": "WEP passphrase or key #1 (selected by the index in key). This string is treated as a passphrase from which the WEP key will be derived. If a 10- or 26-character hexadecimal string is supplied, it will be used directly as the WEP key instead.",
+                                "type": "string"
+                            },
+                            "key2": {
+                                "description": "WEP passphrase or key #2 (selected by the index in key), as in key1.",
+                                "type": "string"
+                            },
+                            "key3": {
+                                "description": "WEP passphrase or key #3 (selected by the index in key), as in key1.",
+                                "type": "string"
+                            },
+                            "key4": {
+                                "description": "WEP passphrase or key #4 (selected by the index in key), as in key1.",
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "else": {
+                        "properties": {
+                            "key": {
+                                "description": "In any WPA-PSK mode, this is a string that specifies the pre-shared passphrase from which the pre-shared key will be derived. The clear text key has to be 8-63 characters long. If a 64-character hexadecimal string is supplied, it will be used directly as the pre-shared key instead. In WEP mode, this can be an integer specifying which key index to use (key1, key2, key3, or key4.) Alternatively, it can be a string specifying a passphrase or key directly, as in key1. In any WPA-Enterprise AP mode, this option has a different interpretation.",
+                                "type": "string",
+                                "minLength": 8,
+                                "maxLength": 64
+                            }
+                        }
+                    }
+                }
+            ],
+            "properties": {
+                "ifname": {
+                    "description": "Specifies a custom name for the Wi-Fi interface, which is otherwise automatically named.",
+                    "$ref": "#/definitions/iface_t"
+                },
+                "device": {
+                    "description": "Specifies the used wireless adapter, must refer to one of the defined wifi-device sections",
+                    "$ref": "#/definitions/iface_t"
+                },
+                "network": {
+                    "description": "Specifies the network interface to attach the wireless to.",
+                    "type": "string",
+                    "default": "lan"
+                },
+                "mode": {
+                    "description": "Selects the operation mode of the wireless network interface controller. Possible values are ap, sta, adhoc, wds, monitor, mesh",
+                    "type": "string",
+                    "default": "ap",
+                    "enum": [
+                        "ap",
+                        "sta",
+                        "adhoc",
+                        "wds",
+                        "monitor",
+                        "mesh"
+                    ]
+                },
+                "disabled": {
+                    "description": "When set to 1, wireless network is disabled.",
+                    "type": "boolean",
+                    "default": false
+                },
+                "ssid": {
+                    "description": "The broadcasted SSID of the wireless network and for for managed mode the SSID of the network you’re connecting to",
+                    "$ref": "#/definitions/ssid_t"
+                },
+                "bssid": {
+                    "description": "Override the BSSID of the network, only applicable in adhoc or sta mode. In wds mode specifies the BSSID of another AP to create WDS with.",
+                    "$ref": "#/definitions/macaddr_t"
+                },
+                "mesh_id": {
+                    "description": "The Mesh ID as defined in IEEE 802.11s. If set, the wireless interface will join this mesh network when brought up. If not, it is necessary to invoke iw <iface> mesh join <mesh_id> to join a mesh after the interface is brought up.",
+                    "type": "string"
+                },
+                "hidden": {
+                    "description": "Turns off SSID broadcasting if set to 1",
+                    "type": "boolean",
+                    "default": false
+                },
+                "isolate": {
+                    "description": "Isolate wireless clients from each other, only applicable in ap mode.",
+                    "type": "boolean",
+                    "default": false
+                },
+                "doth": {
+                    "description": "Enables 802.11h support.",
+                    "type": "boolean",
+                    "default": false
+                },
+                "wmm": {
+                    "description": "Enables WMM (802.11e) support. Required for 802.11n support",
+                    "type": "boolean",
+                    "default": true
+                },
+                "encryption": {
+                    "description": "Wireless encryption method. Possible values are: none, wep, psk, psk2. For WEP station mode the default is 'open system' authentication. Use wep+shared or wep+open to force a specific mode.",
+                    "type": "string",
+                    "enum": [
+                        "none",
+                        "wep64-open",
+                        "wep64-shared",
+                        "wep128-open",
+                        "wep128-shared",
+                        "wpa-personal",
+                        "wpa2-personal",
+                        "wpa-wpa2-personal",
+                        "wpa-enterprise",
+                        "wpa2-enterprise",
+                        "wpa-wpa2-enterprise"
+                    ]
+                },
+                "macfilter": {
+                    "description": "Specifies the mac filter policy, disable to disable the filter, allow to treat it as whitelist or deny to treat it as blacklist.",
+                    "type": "string",
+                    "default": "disable",
+                    "enum": [
+                        "enable",
+                        "disable"
+                    ]
+                },
+                "maclist": {
+                    "description": "List of MAC addresses (divided by spaces) to put into the mac filter.",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/macaddr_t"
+                    }
+                },
+                "iapp_interface": {
+                    "description": "Specifies a network interface to be used for 802.11f (IAPP) - only enabled when defined.",
+                    "$ref": "#/definitions/iface_t"
+                },
+                "rsn_preauth": {
+                    "description": "Allow preauthentication for WPA2-EAP networks (and advertise it in WLAN beacons). Only works if the specified network interface is a bridge.",
+                    "type": "boolean",
+                    "default": false
+                },
+                "ieee80211w": {
+                    "description": "Enables MFP (802.11w) support (0 = disabled, 1 = optional, 2 = required). Requires the 'full' version of wpad/hostapd and support from the Wi-Fi driver",
+                    "type": "integer",
+                    "minimum": 0,
+                    "maximum": 2
+                },
+                "ieee80211w_max_timeout": {
+                    "description": "Specifies the 802.11w Association SA Query maximum timeout.",
+                    "type": "integer"
+                },
+                "ieee80211w_retry_timeout": {
+                    "description": "Specifies the 802.11w Association SA Query retry timeout.",
+                    "type": "integer"
+                },
+                "maxassoc": {
+                    "description": "Specifies the maximum number of clients to connect.",
+                    "$ref": "#/definitions/nstations_t"
+                },
+                "macaddr": {
+                    "description": "Overrides the MAC address used for the Wi-Fi interface. Warning: if the MAC address specified is a multicast address, this override will fail silently. To avoid this problem, ensure that the mac address specified is a valid unicast mac address.",
+                    "$ref": "#/definitions/macaddr_t"
+                },
+                "dtim_period": {
+                    "description": "Set the DTIM (delivery traffic information message) period. There will be one DTIM per this many beacon frames. This may be set between 1 and 255. This option only has an effect on ap wifi-ifaces.",
+                    "type": "integer",
+                    "default": 2,
+                    "minimum": 1,
+                    "maximum": 255
+                },
+                "short_preamble": {
+                    "description": "Set optional use of short preamble",
+                    "type": "boolean",
+                    "default": true
+                },
+                "max_listen_int": {
+                    "description": "Set the maximum allowed STA (client) listen interval. Association will be refused if a STA attempts to associate with a listen interval greater than this value. This option only has an effect on ap wifi-ifaces.",
+                    "type": "integer",
+                    "default": 65535
+                },
+                "mcast_rate": {
+                    "description": "Sets the fixed multicast rate, measured in kb/s. Only supported in adhoc and mesh modes",
+                    "type": "integer",
+                    "minimum": 0
+                },
+                "wds": {
+                    "description": "This sets 4-address mode",
+                    "type": "boolean",
+                    "default": false
+                },
+                "owe_transition_ssid": {
+                    "description": "Opportunistic Wireless Encryption (OWE) Transition SSID (only for OPEN and OWE networks)",
+                    "$ref": "#/definitions/ssid_t"
+                },
+                "owe_transition_bssid": {
+                    "description": "Opportunistic Wireless Encryption (OWE) Transition BSSID (only for OPEN and OWE networks)",
+                    "$ref": "#/definitions/macaddr_t"
+                },
+                "server": {
+                    "description": "RADIUS server to handle client authentication",
+                    "$ref": "#/definitions/server_t"
+                },
+                "port": {
+                    "$ref": "#/definitions/port_t",
+                    "description": "RADIUS port",
+                    "default": 1812
+                },
+                "key": {
+                    "description": "Shared RADIUS secret",
+                    "type": "string"
+                },
+                "wpa_group_rekey": {
+                    "description": "WPA Group Cipher rekeying interval in seconds",
+                    "default": 600,
+                    "type": "integer"
+                },
+                "auth_server": {
+                    "description": "RADIUS authentication server to handle client authentication",
+                    "$ref": "#/definitions/server_t"
+                },
+                "auth_port": {
+                    "$ref": "#/definitions/port_t",
+                    "description": "RADIUS authentication port",
+                    "default": 1812
+                },
+                "auth_secret": {
+                    "description": "Shared authentication RADIUS secret",
+                    "type": "string"
+                },
+                "auth_cache": {
+                    "description": "Disable or enable PMKSA and Opportunistic Key Caching",
+                    "type": "boolean"
+                },
+                "acct_server": {
+                    "description": "RADIUS accounting server to handle client authentication",
+                    "type": "string"
+                },
+                "acct_port": {
+                    "$ref": "#/definitions/port_t",
+                    "description": "RADIUS accounting port",
+                    "default": 1813
+                },
+                "acct_secret": {
+                    "description": "Shared accounting RADIUS secret",
+                    "type": "string"
+                },
+                "ownip": {
+                    "description": "NAS IP Address to use for RADIUS authentication requests",
+                    "$ref": "#/definitions/server_t"
+                },
+                "wps": {
+                    "description": "Enable wps_pushbutton and wps_label.",
+                    "type": "boolean",
+                    "default": true
+                },
+                "wps_config": {
+                    "description": "List of configuration methods. Currentlly supported methods are: push_button.",
+                    "type": "array",
+                    "items": {
+                        "type": "string",
+                        "enum": [
+                            "wps_pushbutton"
+                        ]
+                    }
+                },
+                "wps_device_name": {
+                    "description": "User-friendly description of device; up to 32 octets encoded in UTF-8.",
+                    "type": "string",
+                    "default": "LEDE AP",
+                    "pattern": "^([0-9a-fA-F]){1,32}$"
+                },
+                "wps_device_type": {
+                    "description": "Primary device type. Examples: 1-0050F204-1 (Computer / PC), 1-0050F204-2 (Computer / Server), 5-0050F204-1 (Storage / NAS), 6-0050F204-1 (Network Infrastructure / AP)",
+                    "type": "string",
+                    "default": "6-0050F204-1",
+                    "minLength": 12,
+                    "maxLength": 12,
+                    "pattern": "^([0-9a-fA-F])-([0-9a-fA-F]){8}-([0-9a-fA-F])$"
+                },
+                "wps_label": {
+                    "description": "Enable label configuration method.",
+                    "type": "boolean",
+                    "default": true
+                },
+                "wps_manufacturer": {
+                    "description": "The manufacturer of the device (up to 64 ASCII characters).",
+                    "type": "string",
+                    "default": "lede-project.org",
+                    "minLength": 0,
+                    "maxLength": 64
+                },
+                "wps_pushbutton": {
+                    "description": "Enable push-button configuration method.",
+                    "type": "boolean",
+                    "default": true
+                },
+                "wps_pin": {
+                    "description": "The PIN to use with WPS-PIN (only in external registrar mode?)",
+                    "type": "string"
+                },
+                "ieee80211r": {
+                    "description": "Enables fast BSS transition (802.11r) support.",
+                    "type": "boolean",
+                    "default": false
+                },
+                "nasid": {
+                    "description": "PMK-R0 Key Holder identifier (dot11FTR0KeyHolderID). A 1 to 48 octet identifier.",
+                    "$ref": "#/definitions/nasid_t"
+                },
+                "mobility_domain": {
+                    "description": "Mobility Domain identifier (dot11FTMobilityDomainID, MDID). MDID is used to indicate a group of APs (within an ESS, i.e., sharing the same SSID) between which a STA can use Fast BSS Transition. 2-octet identifier as a hex string.",
+                    "type": "string",
+                    "minLength": 2,
+                    "maxLength": 2,
+                    "pattern": "^([0-9a-fA-F]){2}$"
+                },
+                "r0_key_lifetime": {
+                    "description": "Default lifetime of the PMK-RO in minutes [1-65535].",
+                    "type": "integer",
+                    "default": 10000,
+                    "minimum": 1,
+                    "maximum": 65535
+                },
+                "r1_key_holder": {
+                    "description": "PMK-R1 Key Holder identifier (dot11FTR1KeyHolderID). A 6-octet identifier as a hex string.",
+                    "type": "string",
+                    "default": "00004f577274",
+                    "minLength": 6,
+                    "maxLength": 6,
+                    "pattern": "^([0-9a-fA-F]){6}$"
+                },
+                "reassociation_deadline": {
+                    "description": "Reassociation deadline in time units (TUs / 1.024 ms, 1000-65535)",
+                    "type": "integer",
+                    "default": 1000,
+                    "minimum": 1000,
+                    "maximum": 65535
+                },
+                "r0kh": {
+                    "description": "List of R0KHs in the same Mobility Domain. Valid format: <MAC address>,<NAS Identifier>,<128-bit key as hex string> This list is used to map R0KH-ID (NAS Identifier) to a destination MAC address when requesting PMK-R1 key from the R0KH that the STA used during the Initial Mobility Domain Association.",
+                    "type": "string",
+                    "pattern": "^([0-9a-fA-F][0-9a-fA-F]:){5}[0-9a-fA-F][0-9a-fA-F],([0-9a-fA-F]){1,48},([0-9a-fA-F]){16}$"
+                },
+                "r1kh": {
+                    "description": "List of R1KHs in the same Mobility Domain. Valid format: <MAC address>,<R1KH-ID>,<128-bit key as hex string> This list is used to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD that can request PMK-R1 keys.",
+                    "type": "string",
+                    "pattern": "^([0-9a-fA-F][0-9a-fA-F]:){5}[0-9a-fA-F][0-9a-fA-F],([0-9a-fA-F]){6},([0-9a-fA-F]){16}$"
+                },
+                "pmk_r1_push": {
+                    "description": "Whether PMK-R1 push is enabled at R0KH.",
+                    "type": "boolean",
+                    "default": false
+                },
+                "ft_over_ds": {
+                    "description": "Whether to enable FT-over-DS.",
+                    "type": "boolean",
+                    "default": true
+                },
+                "ft_psk_generate_local": {
+                    "description": "Whether to generate FT response locally for PSK networks. This avoids use of PMK-R1 push/pull from other APs with FT-PSK networks as the required information (PSK and other session data) is already locally available.",
+                    "type": "boolean",
+                    "default": false
+                },
+                "disassoc_low_ack": {
+                    "description": "Disassociate stations based on excessive transmission failures or other indications of connection loss. This depends on the driver capabilities and may not be available with all drivers.",
+                    "type": "boolean",
+                    "default": true
+                },
+                "max_inactivity": {
+                    "description": "Station inactivity limit in seconds: If a station does not send anything in ap_max_inactivity seconds, an empty data frame is sent to it in order to verify whether it is still in range. If this frame is not ACKed, the station will be disassociated and then deauthenticated.",
+                    "type": "integer",
+                    "default": 300
+                },
+                "skip_inactivity_poll": {
+                    "description": "The inactivity polling can be disabled to disconnect stations based on inactivity timeout so that idle stations are more likely to be disconnected even if they are still in range of the AP.",
+                    "type": "boolean",
+                    "default": false
+                },
+                "max_listen_interval": {
+                    "description": "Maximum allowed Listen Interval (how many Beacon periods STAs are allowed to remain asleep).",
+                    "type": "integer",
+                    "default": 65535
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
-- 
GitLab