Lines Matching +full:static +full:- +full:config

3  * Copyright (c) 2003-2019, Jouni Malinen <j@w1.fi>
19 #include "config.h"
26 #include "utils/config.h"
29 static int wpa_config_validate_network(struct wpa_ssid *ssid, int line) in wpa_config_validate_network()
33 if (ssid->passphrase) { in wpa_config_validate_network()
34 if (ssid->psk_set) { in wpa_config_validate_network()
42 if (ssid->disabled == 2) in wpa_config_validate_network()
43 ssid->p2p_persistent_group = 1; in wpa_config_validate_network()
45 if ((ssid->group_cipher & WPA_CIPHER_CCMP) && in wpa_config_validate_network()
46 !(ssid->pairwise_cipher & (WPA_CIPHER_CCMP | WPA_CIPHER_CCMP_256 | in wpa_config_validate_network()
53 ssid->group_cipher &= ~WPA_CIPHER_CCMP; in wpa_config_validate_network()
56 if (is_6ghz_freq(ssid->frequency) && ssid->mode == WPAS_MODE_MESH && in wpa_config_validate_network()
57 ssid->key_mgmt == WPA_KEY_MGMT_NONE) { in wpa_config_validate_network()
63 if (ssid->mode == WPAS_MODE_MESH && in wpa_config_validate_network()
64 (ssid->key_mgmt != WPA_KEY_MGMT_NONE && in wpa_config_validate_network()
65 ssid->key_mgmt != WPA_KEY_MGMT_SAE)) { in wpa_config_validate_network()
73 if (ssid->ocv && ssid->ieee80211w == NO_MGMT_FRAME_PROTECTION) { in wpa_config_validate_network()
85 static struct wpa_ssid * wpa_config_read_network(FILE *f, int *line, int id) in wpa_config_read_network()
91 wpa_printf(MSG_MSGDUMP, "Line: %d - start of a new network block", in wpa_config_read_network()
96 dl_list_init(&ssid->psk_list); in wpa_config_read_network()
97 ssid->id = id; in wpa_config_read_network()
135 ssid->disabled = 1; in wpa_config_read_network()
160 static struct wpa_cred * wpa_config_read_cred(FILE *f, int *line, int id) in wpa_config_read_cred()
166 wpa_printf(MSG_MSGDUMP, "Line: %d - start of a new cred block", *line); in wpa_config_read_cred()
170 cred->id = id; in wpa_config_read_cred()
171 cred->sim_num = DEFAULT_USER_SELECTED_SIM; in wpa_config_read_cred()
217 static struct wpa_config_blob * wpa_config_read_blob(FILE *f, int *line, in wpa_config_read_blob()
226 wpa_printf(MSG_MSGDUMP, "Line: %d - start of a new named blob '%s'", in wpa_config_read_blob()
260 blob->name = os_strdup(name); in wpa_config_read_blob()
261 blob->data = base64_decode(encoded, encoded_len, &blob->len); in wpa_config_read_blob()
264 if (blob->name == NULL || blob->data == NULL) { in wpa_config_read_blob()
273 static int wpa_config_process_blob(struct wpa_config *config, FILE *f, in wpa_config_process_blob() argument
283 return -1; in wpa_config_process_blob()
291 return -1; in wpa_config_process_blob()
293 wpa_config_set_blob(config, blob); in wpa_config_process_blob()
307 struct wpa_config *config; in wpa_config_read() local
308 static int id = 0; in wpa_config_read()
309 static int cred_id = 0; in wpa_config_read()
314 config = cfgp; in wpa_config_read()
316 config = wpa_config_alloc_empty(NULL, NULL); in wpa_config_read()
317 if (config == NULL) { in wpa_config_read()
318 wpa_printf(MSG_ERROR, "Failed to allocate config file " in wpa_config_read()
322 tail = head = config->ssid; in wpa_config_read()
323 while (tail && tail->next) in wpa_config_read()
324 tail = tail->next; in wpa_config_read()
325 cred_tail = cred_head = config->cred; in wpa_config_read()
326 while (cred_tail && cred_tail->next) in wpa_config_read()
327 cred_tail = cred_tail->next; in wpa_config_read()
332 wpa_printf(MSG_ERROR, "Failed to open config file '%s', " in wpa_config_read()
334 if (config != cfgp) in wpa_config_read()
335 os_free(config); in wpa_config_read()
348 ssid->ro = ro; in wpa_config_read()
352 tail->next = ssid; in wpa_config_read()
355 if (wpa_config_add_prio_network(config, ssid)) { in wpa_config_read()
373 cred_tail->next = cred; in wpa_config_read()
377 } else if (os_strncmp(pos, "blob-base64-", 12) == 0) { in wpa_config_read()
378 if (wpa_config_process_blob(config, f, &line, pos + 12) in wpa_config_read()
386 } else if (wpa_config_process_global(config, pos, line) < 0) { in wpa_config_read()
396 config->ssid = head; in wpa_config_read()
397 wpa_config_debug_dump_networks(config); in wpa_config_read()
398 config->cred = cred_head; in wpa_config_read()
402 if (config != cfgp) in wpa_config_read()
403 wpa_config_free(config); in wpa_config_read()
404 config = NULL; in wpa_config_read()
409 return config; in wpa_config_read()
415 static void write_str(FILE *f, const char *field, struct wpa_ssid *ssid) in write_str()
425 static void write_int(FILE *f, const char *field, int value, int def) in write_int()
433 static void write_bssid(FILE *f, struct wpa_ssid *ssid) in write_bssid()
443 static void write_bssid_hint(FILE *f, struct wpa_ssid *ssid) in write_bssid_hint()
454 static void write_psk(FILE *f, struct wpa_ssid *ssid) in write_psk()
458 if (ssid->mem_only_psk) in write_psk()
469 static void write_proto(FILE *f, struct wpa_ssid *ssid) in write_proto()
473 if (ssid->proto == DEFAULT_PROTO) in write_proto()
485 static void write_key_mgmt(FILE *f, struct wpa_ssid *ssid) in write_key_mgmt()
489 if (ssid->key_mgmt == DEFAULT_KEY_MGMT) in write_key_mgmt()
501 static void write_pairwise(FILE *f, struct wpa_ssid *ssid) in write_pairwise()
505 if (ssid->pairwise_cipher == DEFAULT_PAIRWISE) in write_pairwise()
517 static void write_group(FILE *f, struct wpa_ssid *ssid) in write_group()
521 if (ssid->group_cipher == DEFAULT_GROUP) in write_group()
533 static void write_group_mgmt(FILE *f, struct wpa_ssid *ssid) in write_group_mgmt()
537 if (!ssid->group_mgmt_cipher) in write_group_mgmt()
549 static void write_auth_alg(FILE *f, struct wpa_ssid *ssid) in write_auth_alg()
553 if (ssid->auth_alg == 0) in write_auth_alg()
566 static void write_eap(FILE *f, struct wpa_ssid *ssid) in write_eap()
582 static void write_wep_key(FILE *f, int idx, struct wpa_ssid *ssid) in write_wep_key()
601 static void write_go_p2p_dev_addr(FILE *f, struct wpa_ssid *ssid) in write_go_p2p_dev_addr()
610 static void write_p2p_client_list(FILE *f, struct wpa_ssid *ssid) in write_p2p_client_list()
620 static void write_psk_list(FILE *f, struct wpa_ssid *ssid) in write_psk_list()
625 dl_list_for_each(psk, &ssid->psk_list, struct psk_list_entry, list) { in write_psk_list()
626 wpa_snprintf_hex(hex, sizeof(hex), psk->psk, sizeof(psk->psk)); in write_psk_list()
627 fprintf(f, "\tpsk_list=%s" MACSTR "-%s\n", in write_psk_list()
628 psk->p2p ? "P2P-" : "", MAC2STR(psk->addr), hex); in write_psk_list()
637 static void write_mka_cak(FILE *f, struct wpa_ssid *ssid) in write_mka_cak()
641 if (!(ssid->mka_psk_set & MKA_PSK_SET_CAK)) in write_mka_cak()
652 static void write_mka_ckn(FILE *f, struct wpa_ssid *ssid) in write_mka_ckn()
656 if (!(ssid->mka_psk_set & MKA_PSK_SET_CKN)) in write_mka_ckn()
669 static void wpa_config_write_network(FILE *f, struct wpa_ssid *ssid) in wpa_config_write_network()
672 #define INT(t) write_int(f, #t, ssid->t, 0) in wpa_config_write_network()
673 #define INTe(t, m) write_int(f, #t, ssid->eap.m, 0) in wpa_config_write_network()
674 #define INT_DEF(t, def) write_int(f, #t, ssid->t, def) in wpa_config_write_network()
675 #define INT_DEFe(t, m, def) write_int(f, #t, ssid->eap.m, def) in wpa_config_write_network()
687 write_int(f, "sae_pwe", ssid->sae_pwe, DEFAULT_SAE_PWE); in wpa_config_write_network()
786 write_int(f, "proactive_key_caching", ssid->proactive_key_caching, -1); in wpa_config_write_network()
799 write_int(f, "ieee80211w", ssid->ieee80211w, in wpa_config_write_network()
826 write_int(f, "mac_addr", ssid->mac_addr, -1); in wpa_config_write_network()
874 INT_DEF(vht_rx_mcs_nss_1, -1); in wpa_config_write_network()
875 INT_DEF(vht_rx_mcs_nss_2, -1); in wpa_config_write_network()
876 INT_DEF(vht_rx_mcs_nss_3, -1); in wpa_config_write_network()
877 INT_DEF(vht_rx_mcs_nss_4, -1); in wpa_config_write_network()
878 INT_DEF(vht_rx_mcs_nss_5, -1); in wpa_config_write_network()
879 INT_DEF(vht_rx_mcs_nss_6, -1); in wpa_config_write_network()
880 INT_DEF(vht_rx_mcs_nss_7, -1); in wpa_config_write_network()
881 INT_DEF(vht_rx_mcs_nss_8, -1); in wpa_config_write_network()
882 INT_DEF(vht_tx_mcs_nss_1, -1); in wpa_config_write_network()
883 INT_DEF(vht_tx_mcs_nss_2, -1); in wpa_config_write_network()
884 INT_DEF(vht_tx_mcs_nss_3, -1); in wpa_config_write_network()
885 INT_DEF(vht_tx_mcs_nss_4, -1); in wpa_config_write_network()
886 INT_DEF(vht_tx_mcs_nss_5, -1); in wpa_config_write_network()
887 INT_DEF(vht_tx_mcs_nss_6, -1); in wpa_config_write_network()
888 INT_DEF(vht_tx_mcs_nss_7, -1); in wpa_config_write_network()
889 INT_DEF(vht_tx_mcs_nss_8, -1); in wpa_config_write_network()
905 static void wpa_config_write_cred(FILE *f, struct wpa_cred *cred) in wpa_config_write_cred()
909 if (cred->priority) in wpa_config_write_cred()
910 fprintf(f, "\tpriority=%d\n", cred->priority); in wpa_config_write_cred()
911 if (cred->pcsc) in wpa_config_write_cred()
912 fprintf(f, "\tpcsc=%d\n", cred->pcsc); in wpa_config_write_cred()
913 if (cred->realm) in wpa_config_write_cred()
914 fprintf(f, "\trealm=\"%s\"\n", cred->realm); in wpa_config_write_cred()
915 if (cred->username) in wpa_config_write_cred()
916 fprintf(f, "\tusername=\"%s\"\n", cred->username); in wpa_config_write_cred()
917 if (cred->password && cred->ext_password) in wpa_config_write_cred()
918 fprintf(f, "\tpassword=ext:%s\n", cred->password); in wpa_config_write_cred()
919 else if (cred->password) in wpa_config_write_cred()
920 fprintf(f, "\tpassword=\"%s\"\n", cred->password); in wpa_config_write_cred()
921 if (cred->ca_cert) in wpa_config_write_cred()
922 fprintf(f, "\tca_cert=\"%s\"\n", cred->ca_cert); in wpa_config_write_cred()
923 if (cred->client_cert) in wpa_config_write_cred()
924 fprintf(f, "\tclient_cert=\"%s\"\n", cred->client_cert); in wpa_config_write_cred()
925 if (cred->private_key) in wpa_config_write_cred()
926 fprintf(f, "\tprivate_key=\"%s\"\n", cred->private_key); in wpa_config_write_cred()
927 if (cred->private_key_passwd) in wpa_config_write_cred()
929 cred->private_key_passwd); in wpa_config_write_cred()
930 if (cred->imsi) in wpa_config_write_cred()
931 fprintf(f, "\timsi=\"%s\"\n", cred->imsi); in wpa_config_write_cred()
932 if (cred->milenage) in wpa_config_write_cred()
933 fprintf(f, "\tmilenage=\"%s\"\n", cred->milenage); in wpa_config_write_cred()
934 for (i = 0; i < cred->num_domain; i++) in wpa_config_write_cred()
935 fprintf(f, "\tdomain=\"%s\"\n", cred->domain[i]); in wpa_config_write_cred()
936 if (cred->domain_suffix_match) in wpa_config_write_cred()
938 cred->domain_suffix_match); in wpa_config_write_cred()
939 if (cred->eap_method) { in wpa_config_write_cred()
941 name = eap_get_name(cred->eap_method[0].vendor, in wpa_config_write_cred()
942 cred->eap_method[0].method); in wpa_config_write_cred()
946 if (cred->phase1) in wpa_config_write_cred()
947 fprintf(f, "\tphase1=\"%s\"\n", cred->phase1); in wpa_config_write_cred()
948 if (cred->phase2) in wpa_config_write_cred()
949 fprintf(f, "\tphase2=\"%s\"\n", cred->phase2); in wpa_config_write_cred()
950 if (cred->excluded_ssid) { in wpa_config_write_cred()
952 for (i = 0; i < cred->num_excluded_ssid; i++) { in wpa_config_write_cred()
953 struct excluded_ssid *e = &cred->excluded_ssid[i]; in wpa_config_write_cred()
955 for (j = 0; j < e->ssid_len; j++) in wpa_config_write_cred()
956 fprintf(f, "%02x", e->ssid[j]); in wpa_config_write_cred()
960 if (cred->roaming_partner) { in wpa_config_write_cred()
961 for (i = 0; i < cred->num_roaming_partner; i++) { in wpa_config_write_cred()
962 struct roaming_partner *p = &cred->roaming_partner[i]; in wpa_config_write_cred()
964 p->fqdn, p->exact_match, p->priority, in wpa_config_write_cred()
965 p->country); in wpa_config_write_cred()
968 if (cred->update_identifier) in wpa_config_write_cred()
969 fprintf(f, "\tupdate_identifier=%d\n", cred->update_identifier); in wpa_config_write_cred()
971 if (cred->provisioning_sp) in wpa_config_write_cred()
972 fprintf(f, "\tprovisioning_sp=\"%s\"\n", cred->provisioning_sp); in wpa_config_write_cred()
973 if (cred->sp_priority) in wpa_config_write_cred()
974 fprintf(f, "\tsp_priority=%d\n", cred->sp_priority); in wpa_config_write_cred()
976 if (cred->min_dl_bandwidth_home) in wpa_config_write_cred()
978 cred->min_dl_bandwidth_home); in wpa_config_write_cred()
979 if (cred->min_ul_bandwidth_home) in wpa_config_write_cred()
981 cred->min_ul_bandwidth_home); in wpa_config_write_cred()
982 if (cred->min_dl_bandwidth_roaming) in wpa_config_write_cred()
984 cred->min_dl_bandwidth_roaming); in wpa_config_write_cred()
985 if (cred->min_ul_bandwidth_roaming) in wpa_config_write_cred()
987 cred->min_ul_bandwidth_roaming); in wpa_config_write_cred()
989 if (cred->max_bss_load) in wpa_config_write_cred()
991 cred->max_bss_load); in wpa_config_write_cred()
993 if (cred->ocsp) in wpa_config_write_cred()
994 fprintf(f, "\tocsp=%d\n", cred->ocsp); in wpa_config_write_cred()
996 if (cred->num_req_conn_capab) { in wpa_config_write_cred()
997 for (i = 0; i < cred->num_req_conn_capab; i++) { in wpa_config_write_cred()
1001 cred->req_conn_capab_proto[i]); in wpa_config_write_cred()
1002 ports = cred->req_conn_capab_port[i]; in wpa_config_write_cred()
1005 for (j = 0; ports[j] != -1; j++) { in wpa_config_write_cred()
1014 if (cred->num_home_ois) { in wpa_config_write_cred()
1018 for (i = 0; i < cred->num_home_ois; i++) { in wpa_config_write_cred()
1021 for (j = 0; j < cred->home_ois_len[i]; j++) in wpa_config_write_cred()
1023 cred->home_ois[i][j]); in wpa_config_write_cred()
1028 if (cred->num_required_home_ois) { in wpa_config_write_cred()
1032 for (i = 0; i < cred->num_required_home_ois; i++) { in wpa_config_write_cred()
1035 for (j = 0; j < cred->required_home_ois_len[i]; j++) in wpa_config_write_cred()
1037 cred->required_home_ois[i][j]); in wpa_config_write_cred()
1042 if (cred->num_roaming_consortiums) { in wpa_config_write_cred()
1046 for (i = 0; i < cred->num_roaming_consortiums; i++) { in wpa_config_write_cred()
1049 for (j = 0; j < cred->roaming_consortiums_len[i]; j++) in wpa_config_write_cred()
1051 cred->roaming_consortiums[i][j]); in wpa_config_write_cred()
1056 if (cred->sim_num != DEFAULT_USER_SELECTED_SIM) in wpa_config_write_cred()
1057 fprintf(f, "\tsim_num=%d\n", cred->sim_num); in wpa_config_write_cred()
1059 if (cred->engine) in wpa_config_write_cred()
1060 fprintf(f, "\tengine=%d\n", cred->engine); in wpa_config_write_cred()
1061 if (cred->engine_id) in wpa_config_write_cred()
1062 fprintf(f, "\tengine_id=\"%s\"\n", cred->engine_id); in wpa_config_write_cred()
1063 if (cred->key_id) in wpa_config_write_cred()
1064 fprintf(f, "\tkey_id=\"%s\"\n", cred->key_id); in wpa_config_write_cred()
1065 if (cred->cert_id) in wpa_config_write_cred()
1066 fprintf(f, "\tcert_id=\"%s\"\n", cred->cert_id); in wpa_config_write_cred()
1067 if (cred->ca_cert_id) in wpa_config_write_cred()
1068 fprintf(f, "\tca_cert_id=\"%s\"\n", cred->ca_cert_id); in wpa_config_write_cred()
1070 if (cred->imsi_privacy_cert) in wpa_config_write_cred()
1072 cred->imsi_privacy_cert); in wpa_config_write_cred()
1073 if (cred->imsi_privacy_attr) in wpa_config_write_cred()
1075 cred->imsi_privacy_attr); in wpa_config_write_cred()
1080 static int wpa_config_write_blob(FILE *f, struct wpa_config_blob *blob) in wpa_config_write_blob()
1084 encoded = base64_encode(blob->data, blob->len, NULL); in wpa_config_write_blob()
1086 return -1; in wpa_config_write_blob()
1088 fprintf(f, "\nblob-base64-%s={\n%s}\n", blob->name, encoded); in wpa_config_write_blob()
1095 static void write_global_bin(FILE *f, const char *field, in write_global_bin()
1112 static void wpa_config_write_global(FILE *f, struct wpa_config *config) in wpa_config_write_global() argument
1115 if (config->ctrl_interface) in wpa_config_write_global()
1116 fprintf(f, "ctrl_interface=%s\n", config->ctrl_interface); in wpa_config_write_global()
1117 if (config->ctrl_interface_group) in wpa_config_write_global()
1119 config->ctrl_interface_group); in wpa_config_write_global()
1121 if (config->eapol_version != DEFAULT_EAPOL_VERSION) in wpa_config_write_global()
1122 fprintf(f, "eapol_version=%d\n", config->eapol_version); in wpa_config_write_global()
1123 if (config->ap_scan != DEFAULT_AP_SCAN) in wpa_config_write_global()
1124 fprintf(f, "ap_scan=%d\n", config->ap_scan); in wpa_config_write_global()
1125 if (config->disable_scan_offload) in wpa_config_write_global()
1127 config->disable_scan_offload); in wpa_config_write_global()
1128 if (config->fast_reauth != DEFAULT_FAST_REAUTH) in wpa_config_write_global()
1129 fprintf(f, "fast_reauth=%d\n", config->fast_reauth); in wpa_config_write_global()
1131 if (config->opensc_engine_path) in wpa_config_write_global()
1133 config->opensc_engine_path); in wpa_config_write_global()
1136 if (config->pkcs11_engine_path) in wpa_config_write_global()
1138 config->pkcs11_engine_path); in wpa_config_write_global()
1141 if (config->pkcs11_module_path) in wpa_config_write_global()
1143 config->pkcs11_module_path); in wpa_config_write_global()
1145 if (config->openssl_ciphers) in wpa_config_write_global()
1146 fprintf(f, "openssl_ciphers=%s\n", config->openssl_ciphers); in wpa_config_write_global()
1147 if (config->pcsc_reader) in wpa_config_write_global()
1148 fprintf(f, "pcsc_reader=%s\n", config->pcsc_reader); in wpa_config_write_global()
1149 if (config->pcsc_pin) in wpa_config_write_global()
1150 fprintf(f, "pcsc_pin=%s\n", config->pcsc_pin); in wpa_config_write_global()
1151 if (config->driver_param) in wpa_config_write_global()
1152 fprintf(f, "driver_param=%s\n", config->driver_param); in wpa_config_write_global()
1153 if (config->dot11RSNAConfigPMKLifetime) in wpa_config_write_global()
1155 config->dot11RSNAConfigPMKLifetime); in wpa_config_write_global()
1156 if (config->dot11RSNAConfigPMKReauthThreshold) in wpa_config_write_global()
1158 config->dot11RSNAConfigPMKReauthThreshold); in wpa_config_write_global()
1159 if (config->dot11RSNAConfigSATimeout) in wpa_config_write_global()
1161 config->dot11RSNAConfigSATimeout); in wpa_config_write_global()
1162 if (config->update_config) in wpa_config_write_global()
1163 fprintf(f, "update_config=%d\n", config->update_config); in wpa_config_write_global()
1165 if (!is_nil_uuid(config->uuid)) { in wpa_config_write_global()
1167 uuid_bin2str(config->uuid, buf, sizeof(buf)); in wpa_config_write_global()
1170 if (config->auto_uuid) in wpa_config_write_global()
1171 fprintf(f, "auto_uuid=%d\n", config->auto_uuid); in wpa_config_write_global()
1172 if (config->device_name) in wpa_config_write_global()
1173 fprintf(f, "device_name=%s\n", config->device_name); in wpa_config_write_global()
1174 if (config->manufacturer) in wpa_config_write_global()
1175 fprintf(f, "manufacturer=%s\n", config->manufacturer); in wpa_config_write_global()
1176 if (config->model_name) in wpa_config_write_global()
1177 fprintf(f, "model_name=%s\n", config->model_name); in wpa_config_write_global()
1178 if (config->model_number) in wpa_config_write_global()
1179 fprintf(f, "model_number=%s\n", config->model_number); in wpa_config_write_global()
1180 if (config->serial_number) in wpa_config_write_global()
1181 fprintf(f, "serial_number=%s\n", config->serial_number); in wpa_config_write_global()
1184 buf = wps_dev_type_bin2str(config->device_type, in wpa_config_write_global()
1186 if (os_strcmp(buf, "0-00000000-0") != 0) in wpa_config_write_global()
1189 if (WPA_GET_BE32(config->os_version)) in wpa_config_write_global()
1191 WPA_GET_BE32(config->os_version)); in wpa_config_write_global()
1192 if (config->config_methods) in wpa_config_write_global()
1193 fprintf(f, "config_methods=%s\n", config->config_methods); in wpa_config_write_global()
1194 if (config->wps_cred_processing) in wpa_config_write_global()
1196 config->wps_cred_processing); in wpa_config_write_global()
1197 if (config->wps_cred_add_sae) in wpa_config_write_global()
1199 config->wps_cred_add_sae); in wpa_config_write_global()
1200 if (config->wps_vendor_ext_m1) { in wpa_config_write_global()
1201 int i, len = wpabuf_len(config->wps_vendor_ext_m1); in wpa_config_write_global()
1202 const u8 *p = wpabuf_head_u8(config->wps_vendor_ext_m1); in wpa_config_write_global()
1216 for (i = 0; i < config->num_sec_device_types; i++) { in wpa_config_write_global()
1217 buf = wps_dev_type_bin2str(config->sec_device_type[i], in wpa_config_write_global()
1223 if (config->p2p_listen_reg_class) in wpa_config_write_global()
1225 config->p2p_listen_reg_class); in wpa_config_write_global()
1226 if (config->p2p_listen_channel) in wpa_config_write_global()
1228 config->p2p_listen_channel); in wpa_config_write_global()
1229 if (config->p2p_oper_reg_class) in wpa_config_write_global()
1231 config->p2p_oper_reg_class); in wpa_config_write_global()
1232 if (config->p2p_oper_channel) in wpa_config_write_global()
1233 fprintf(f, "p2p_oper_channel=%d\n", config->p2p_oper_channel); in wpa_config_write_global()
1234 if (config->p2p_go_intent != DEFAULT_P2P_GO_INTENT) in wpa_config_write_global()
1235 fprintf(f, "p2p_go_intent=%d\n", config->p2p_go_intent); in wpa_config_write_global()
1236 if (config->p2p_ssid_postfix) in wpa_config_write_global()
1237 fprintf(f, "p2p_ssid_postfix=%s\n", config->p2p_ssid_postfix); in wpa_config_write_global()
1238 if (config->persistent_reconnect) in wpa_config_write_global()
1240 config->persistent_reconnect); in wpa_config_write_global()
1241 if (config->p2p_intra_bss != DEFAULT_P2P_INTRA_BSS) in wpa_config_write_global()
1242 fprintf(f, "p2p_intra_bss=%d\n", config->p2p_intra_bss); in wpa_config_write_global()
1243 if (config->p2p_group_idle) in wpa_config_write_global()
1244 fprintf(f, "p2p_group_idle=%d\n", config->p2p_group_idle); in wpa_config_write_global()
1245 if (config->p2p_passphrase_len) in wpa_config_write_global()
1247 config->p2p_passphrase_len); in wpa_config_write_global()
1248 if (config->p2p_pref_chan) { in wpa_config_write_global()
1251 for (i = 0; i < config->num_p2p_pref_chan; i++) { in wpa_config_write_global()
1253 config->p2p_pref_chan[i].op_class, in wpa_config_write_global()
1254 config->p2p_pref_chan[i].chan); in wpa_config_write_global()
1258 if (config->p2p_no_go_freq.num) { in wpa_config_write_global()
1259 char *val = freq_range_list_str(&config->p2p_no_go_freq); in wpa_config_write_global()
1265 if (config->p2p_add_cli_chan) in wpa_config_write_global()
1266 fprintf(f, "p2p_add_cli_chan=%d\n", config->p2p_add_cli_chan); in wpa_config_write_global()
1267 if (config->p2p_optimize_listen_chan != in wpa_config_write_global()
1270 config->p2p_optimize_listen_chan); in wpa_config_write_global()
1271 if (config->p2p_go_ht40) in wpa_config_write_global()
1272 fprintf(f, "p2p_go_ht40=%d\n", config->p2p_go_ht40); in wpa_config_write_global()
1273 if (config->p2p_go_vht) in wpa_config_write_global()
1274 fprintf(f, "p2p_go_vht=%d\n", config->p2p_go_vht); in wpa_config_write_global()
1275 if (config->p2p_go_he) in wpa_config_write_global()
1276 fprintf(f, "p2p_go_he=%d\n", config->p2p_go_he); in wpa_config_write_global()
1277 if (config->p2p_go_edmg) in wpa_config_write_global()
1278 fprintf(f, "p2p_go_edmg=%d\n", config->p2p_go_edmg); in wpa_config_write_global()
1279 if (config->p2p_go_ctwindow != DEFAULT_P2P_GO_CTWINDOW) in wpa_config_write_global()
1280 fprintf(f, "p2p_go_ctwindow=%d\n", config->p2p_go_ctwindow); in wpa_config_write_global()
1281 if (config->p2p_disabled) in wpa_config_write_global()
1282 fprintf(f, "p2p_disabled=%d\n", config->p2p_disabled); in wpa_config_write_global()
1283 if (config->p2p_no_group_iface) in wpa_config_write_global()
1285 config->p2p_no_group_iface); in wpa_config_write_global()
1286 if (config->p2p_ignore_shared_freq) in wpa_config_write_global()
1288 config->p2p_ignore_shared_freq); in wpa_config_write_global()
1289 if (config->p2p_cli_probe) in wpa_config_write_global()
1290 fprintf(f, "p2p_cli_probe=%d\n", config->p2p_cli_probe); in wpa_config_write_global()
1291 if (config->p2p_go_freq_change_policy != DEFAULT_P2P_GO_FREQ_MOVE) in wpa_config_write_global()
1293 config->p2p_go_freq_change_policy); in wpa_config_write_global()
1295 if (config->p2p_6ghz_disable) in wpa_config_write_global()
1296 fprintf(f, "p2p_6ghz_disable=%d\n", config->p2p_6ghz_disable); in wpa_config_write_global()
1298 if (WPA_GET_BE32(config->ip_addr_go)) in wpa_config_write_global()
1300 config->ip_addr_go[0], config->ip_addr_go[1], in wpa_config_write_global()
1301 config->ip_addr_go[2], config->ip_addr_go[3]); in wpa_config_write_global()
1302 if (WPA_GET_BE32(config->ip_addr_mask)) in wpa_config_write_global()
1304 config->ip_addr_mask[0], config->ip_addr_mask[1], in wpa_config_write_global()
1305 config->ip_addr_mask[2], config->ip_addr_mask[3]); in wpa_config_write_global()
1306 if (WPA_GET_BE32(config->ip_addr_start)) in wpa_config_write_global()
1308 config->ip_addr_start[0], config->ip_addr_start[1], in wpa_config_write_global()
1309 config->ip_addr_start[2], config->ip_addr_start[3]); in wpa_config_write_global()
1310 if (WPA_GET_BE32(config->ip_addr_end)) in wpa_config_write_global()
1312 config->ip_addr_end[0], config->ip_addr_end[1], in wpa_config_write_global()
1313 config->ip_addr_end[2], config->ip_addr_end[3]); in wpa_config_write_global()
1315 if (config->country[0] && config->country[1]) { in wpa_config_write_global()
1317 config->country[0], config->country[1]); in wpa_config_write_global()
1319 if (config->bss_max_count != DEFAULT_BSS_MAX_COUNT) in wpa_config_write_global()
1320 fprintf(f, "bss_max_count=%u\n", config->bss_max_count); in wpa_config_write_global()
1321 if (config->bss_expiration_age != DEFAULT_BSS_EXPIRATION_AGE) in wpa_config_write_global()
1323 config->bss_expiration_age); in wpa_config_write_global()
1324 if (config->bss_expiration_scan_count != in wpa_config_write_global()
1327 config->bss_expiration_scan_count); in wpa_config_write_global()
1328 if (config->filter_ssids) in wpa_config_write_global()
1329 fprintf(f, "filter_ssids=%d\n", config->filter_ssids); in wpa_config_write_global()
1330 if (config->filter_rssi) in wpa_config_write_global()
1331 fprintf(f, "filter_rssi=%d\n", config->filter_rssi); in wpa_config_write_global()
1332 if (config->max_num_sta != DEFAULT_MAX_NUM_STA) in wpa_config_write_global()
1333 fprintf(f, "max_num_sta=%u\n", config->max_num_sta); in wpa_config_write_global()
1334 if (config->ap_isolate != DEFAULT_AP_ISOLATE) in wpa_config_write_global()
1335 fprintf(f, "ap_isolate=%u\n", config->ap_isolate); in wpa_config_write_global()
1336 if (config->disassoc_low_ack) in wpa_config_write_global()
1337 fprintf(f, "disassoc_low_ack=%d\n", config->disassoc_low_ack); in wpa_config_write_global()
1339 if (config->hs20) in wpa_config_write_global()
1343 if (config->interworking) in wpa_config_write_global()
1344 fprintf(f, "interworking=%d\n", config->interworking); in wpa_config_write_global()
1345 if (!is_zero_ether_addr(config->hessid)) in wpa_config_write_global()
1346 fprintf(f, "hessid=" MACSTR "\n", MAC2STR(config->hessid)); in wpa_config_write_global()
1347 if (config->access_network_type != DEFAULT_ACCESS_NETWORK_TYPE) in wpa_config_write_global()
1349 config->access_network_type); in wpa_config_write_global()
1350 if (config->go_interworking) in wpa_config_write_global()
1351 fprintf(f, "go_interworking=%d\n", config->go_interworking); in wpa_config_write_global()
1352 if (config->go_access_network_type) in wpa_config_write_global()
1354 config->go_access_network_type); in wpa_config_write_global()
1355 if (config->go_internet) in wpa_config_write_global()
1356 fprintf(f, "go_internet=%d\n", config->go_internet); in wpa_config_write_global()
1357 if (config->go_venue_group) in wpa_config_write_global()
1358 fprintf(f, "go_venue_group=%d\n", config->go_venue_group); in wpa_config_write_global()
1359 if (config->go_venue_type) in wpa_config_write_global()
1360 fprintf(f, "go_venue_type=%d\n", config->go_venue_type); in wpa_config_write_global()
1362 if (config->pbc_in_m1) in wpa_config_write_global()
1363 fprintf(f, "pbc_in_m1=%d\n", config->pbc_in_m1); in wpa_config_write_global()
1364 if (config->wps_nfc_pw_from_config) { in wpa_config_write_global()
1365 if (config->wps_nfc_dev_pw_id) in wpa_config_write_global()
1367 config->wps_nfc_dev_pw_id); in wpa_config_write_global()
1369 config->wps_nfc_dh_pubkey); in wpa_config_write_global()
1371 config->wps_nfc_dh_privkey); in wpa_config_write_global()
1372 write_global_bin(f, "wps_nfc_dev_pw", config->wps_nfc_dev_pw); in wpa_config_write_global()
1375 if (config->ext_password_backend) in wpa_config_write_global()
1377 config->ext_password_backend); in wpa_config_write_global()
1378 if (config->p2p_go_max_inactivity != DEFAULT_P2P_GO_MAX_INACTIVITY) in wpa_config_write_global()
1380 config->p2p_go_max_inactivity); in wpa_config_write_global()
1381 if (config->auto_interworking) in wpa_config_write_global()
1383 config->auto_interworking); in wpa_config_write_global()
1384 if (config->okc) in wpa_config_write_global()
1385 fprintf(f, "okc=%d\n", config->okc); in wpa_config_write_global()
1386 if (config->pmf) in wpa_config_write_global()
1387 fprintf(f, "pmf=%d\n", config->pmf); in wpa_config_write_global()
1388 if (config->dtim_period) in wpa_config_write_global()
1389 fprintf(f, "dtim_period=%d\n", config->dtim_period); in wpa_config_write_global()
1390 if (config->beacon_int) in wpa_config_write_global()
1391 fprintf(f, "beacon_int=%d\n", config->beacon_int); in wpa_config_write_global()
1393 if (config->sae_check_mfp) in wpa_config_write_global()
1394 fprintf(f, "sae_check_mfp=%d\n", config->sae_check_mfp); in wpa_config_write_global()
1396 if (config->sae_groups) { in wpa_config_write_global()
1399 for (i = 0; config->sae_groups[i] > 0; i++) { in wpa_config_write_global()
1401 config->sae_groups[i]); in wpa_config_write_global()
1406 if (config->sae_pwe) in wpa_config_write_global()
1407 fprintf(f, "sae_pwe=%d\n", config->sae_pwe); in wpa_config_write_global()
1409 if (config->sae_pmkid_in_assoc) in wpa_config_write_global()
1411 config->sae_pmkid_in_assoc); in wpa_config_write_global()
1413 if (config->ap_vendor_elements) { in wpa_config_write_global()
1414 int i, len = wpabuf_len(config->ap_vendor_elements); in wpa_config_write_global()
1415 const u8 *p = wpabuf_head_u8(config->ap_vendor_elements); in wpa_config_write_global()
1424 if (config->ap_assocresp_elements) { in wpa_config_write_global()
1425 int i, len = wpabuf_len(config->ap_assocresp_elements); in wpa_config_write_global()
1426 const u8 *p = wpabuf_head_u8(config->ap_assocresp_elements); in wpa_config_write_global()
1436 if (config->ignore_old_scan_res) in wpa_config_write_global()
1438 config->ignore_old_scan_res); in wpa_config_write_global()
1440 if (config->freq_list && config->freq_list[0]) { in wpa_config_write_global()
1443 for (i = 0; config->freq_list[i]; i++) { in wpa_config_write_global()
1445 config->freq_list[i]); in wpa_config_write_global()
1449 if (config->initial_freq_list && config->initial_freq_list[0]) { in wpa_config_write_global()
1452 for (i = 0; config->initial_freq_list[i]; i++) { in wpa_config_write_global()
1454 config->initial_freq_list[i]); in wpa_config_write_global()
1458 if (config->scan_cur_freq != DEFAULT_SCAN_CUR_FREQ) in wpa_config_write_global()
1459 fprintf(f, "scan_cur_freq=%d\n", config->scan_cur_freq); in wpa_config_write_global()
1461 if (config->scan_res_valid_for_connect != in wpa_config_write_global()
1464 config->scan_res_valid_for_connect); in wpa_config_write_global()
1466 if (config->sched_scan_interval) in wpa_config_write_global()
1468 config->sched_scan_interval); in wpa_config_write_global()
1470 if (config->sched_scan_start_delay) in wpa_config_write_global()
1472 config->sched_scan_start_delay); in wpa_config_write_global()
1474 if (config->external_sim) in wpa_config_write_global()
1475 fprintf(f, "external_sim=%d\n", config->external_sim); in wpa_config_write_global()
1477 if (config->tdls_external_control) in wpa_config_write_global()
1479 config->tdls_external_control); in wpa_config_write_global()
1481 if (config->wowlan_triggers) in wpa_config_write_global()
1483 config->wowlan_triggers); in wpa_config_write_global()
1485 if (config->bgscan) in wpa_config_write_global()
1486 fprintf(f, "bgscan=\"%s\"\n", config->bgscan); in wpa_config_write_global()
1488 if (config->autoscan) in wpa_config_write_global()
1489 fprintf(f, "autoscan=%s\n", config->autoscan); in wpa_config_write_global()
1491 if (config->p2p_search_delay != DEFAULT_P2P_SEARCH_DELAY) in wpa_config_write_global()
1493 config->p2p_search_delay); in wpa_config_write_global()
1495 if (config->mac_addr) in wpa_config_write_global()
1496 fprintf(f, "mac_addr=%d\n", config->mac_addr); in wpa_config_write_global()
1498 if (config->rand_addr_lifetime != DEFAULT_RAND_ADDR_LIFETIME) in wpa_config_write_global()
1500 config->rand_addr_lifetime); in wpa_config_write_global()
1502 if (config->preassoc_mac_addr) in wpa_config_write_global()
1503 fprintf(f, "preassoc_mac_addr=%d\n", config->preassoc_mac_addr); in wpa_config_write_global()
1505 if (config->key_mgmt_offload != DEFAULT_KEY_MGMT_OFFLOAD) in wpa_config_write_global()
1506 fprintf(f, "key_mgmt_offload=%d\n", config->key_mgmt_offload); in wpa_config_write_global()
1508 if (config->user_mpm != DEFAULT_USER_MPM) in wpa_config_write_global()
1509 fprintf(f, "user_mpm=%d\n", config->user_mpm); in wpa_config_write_global()
1511 if (config->max_peer_links != DEFAULT_MAX_PEER_LINKS) in wpa_config_write_global()
1512 fprintf(f, "max_peer_links=%d\n", config->max_peer_links); in wpa_config_write_global()
1514 if (config->cert_in_cb != DEFAULT_CERT_IN_CB) in wpa_config_write_global()
1515 fprintf(f, "cert_in_cb=%d\n", config->cert_in_cb); in wpa_config_write_global()
1517 if (config->mesh_max_inactivity != DEFAULT_MESH_MAX_INACTIVITY) in wpa_config_write_global()
1519 config->mesh_max_inactivity); in wpa_config_write_global()
1521 if (config->mesh_fwding != DEFAULT_MESH_FWDING) in wpa_config_write_global()
1522 fprintf(f, "mesh_fwding=%d\n", config->mesh_fwding); in wpa_config_write_global()
1524 if (config->dot11RSNASAERetransPeriod != in wpa_config_write_global()
1527 config->dot11RSNASAERetransPeriod); in wpa_config_write_global()
1529 if (config->passive_scan) in wpa_config_write_global()
1530 fprintf(f, "passive_scan=%d\n", config->passive_scan); in wpa_config_write_global()
1532 if (config->reassoc_same_bss_optim) in wpa_config_write_global()
1534 config->reassoc_same_bss_optim); in wpa_config_write_global()
1536 if (config->wps_priority) in wpa_config_write_global()
1537 fprintf(f, "wps_priority=%d\n", config->wps_priority); in wpa_config_write_global()
1539 if (config->wpa_rsc_relaxation != DEFAULT_WPA_RSC_RELAXATION) in wpa_config_write_global()
1541 config->wpa_rsc_relaxation); in wpa_config_write_global()
1543 if (config->sched_scan_plans) in wpa_config_write_global()
1544 fprintf(f, "sched_scan_plans=%s\n", config->sched_scan_plans); in wpa_config_write_global()
1547 if (config->non_pref_chan) in wpa_config_write_global()
1548 fprintf(f, "non_pref_chan=%s\n", config->non_pref_chan); in wpa_config_write_global()
1549 if (config->mbo_cell_capa != DEFAULT_MBO_CELL_CAPA) in wpa_config_write_global()
1550 fprintf(f, "mbo_cell_capa=%u\n", config->mbo_cell_capa); in wpa_config_write_global()
1551 if (config->disassoc_imminent_rssi_threshold != in wpa_config_write_global()
1554 config->disassoc_imminent_rssi_threshold); in wpa_config_write_global()
1555 if (config->oce != DEFAULT_OCE_SUPPORT) in wpa_config_write_global()
1556 fprintf(f, "oce=%u\n", config->oce); in wpa_config_write_global()
1559 if (config->gas_address3) in wpa_config_write_global()
1560 fprintf(f, "gas_address3=%d\n", config->gas_address3); in wpa_config_write_global()
1562 if (config->ftm_responder) in wpa_config_write_global()
1563 fprintf(f, "ftm_responder=%d\n", config->ftm_responder); in wpa_config_write_global()
1564 if (config->ftm_initiator) in wpa_config_write_global()
1565 fprintf(f, "ftm_initiator=%d\n", config->ftm_initiator); in wpa_config_write_global()
1567 if (config->osu_dir) in wpa_config_write_global()
1568 fprintf(f, "osu_dir=%s\n", config->osu_dir); in wpa_config_write_global()
1570 if (config->fst_group_id) in wpa_config_write_global()
1571 fprintf(f, "fst_group_id=%s\n", config->fst_group_id); in wpa_config_write_global()
1572 if (config->fst_priority) in wpa_config_write_global()
1573 fprintf(f, "fst_priority=%d\n", config->fst_priority); in wpa_config_write_global()
1574 if (config->fst_llt) in wpa_config_write_global()
1575 fprintf(f, "fst_llt=%d\n", config->fst_llt); in wpa_config_write_global()
1577 if (config->gas_rand_addr_lifetime != DEFAULT_RAND_ADDR_LIFETIME) in wpa_config_write_global()
1579 config->gas_rand_addr_lifetime); in wpa_config_write_global()
1580 if (config->gas_rand_mac_addr) in wpa_config_write_global()
1581 fprintf(f, "gas_rand_mac_addr=%d\n", config->gas_rand_mac_addr); in wpa_config_write_global()
1582 if (config->dpp_config_processing) in wpa_config_write_global()
1584 config->dpp_config_processing); in wpa_config_write_global()
1585 if (config->dpp_name) in wpa_config_write_global()
1586 fprintf(f, "dpp_name=%s\n", config->dpp_name); in wpa_config_write_global()
1587 if (config->dpp_mud_url) in wpa_config_write_global()
1588 fprintf(f, "dpp_mud_url=%s\n", config->dpp_mud_url); in wpa_config_write_global()
1589 if (config->dpp_extra_conf_req_name) in wpa_config_write_global()
1591 config->dpp_extra_conf_req_name); in wpa_config_write_global()
1592 if (config->dpp_extra_conf_req_value) in wpa_config_write_global()
1594 config->dpp_extra_conf_req_value); in wpa_config_write_global()
1595 if (config->dpp_connector_privacy_default) in wpa_config_write_global()
1597 config->dpp_connector_privacy_default); in wpa_config_write_global()
1598 if (config->coloc_intf_reporting) in wpa_config_write_global()
1600 config->coloc_intf_reporting); in wpa_config_write_global()
1601 if (config->p2p_device_random_mac_addr) in wpa_config_write_global()
1603 config->p2p_device_random_mac_addr); in wpa_config_write_global()
1604 if (!is_zero_ether_addr(config->p2p_device_persistent_mac_addr)) in wpa_config_write_global()
1606 MAC2STR(config->p2p_device_persistent_mac_addr)); in wpa_config_write_global()
1607 if (config->p2p_interface_random_mac_addr) in wpa_config_write_global()
1609 config->p2p_interface_random_mac_addr); in wpa_config_write_global()
1610 if (config->disable_btm) in wpa_config_write_global()
1612 if (config->extended_key_id != DEFAULT_EXTENDED_KEY_ID) in wpa_config_write_global()
1614 config->extended_key_id); in wpa_config_write_global()
1615 if (config->wowlan_disconnect_on_deinit) in wpa_config_write_global()
1617 config->wowlan_disconnect_on_deinit); in wpa_config_write_global()
1619 if (config->mld_force_single_link) in wpa_config_write_global()
1621 if (config->mld_connect_band_pref != MLD_CONNECT_BAND_PREF_AUTO) in wpa_config_write_global()
1623 config->mld_connect_band_pref); in wpa_config_write_global()
1624 if (!is_zero_ether_addr(config->mld_connect_bssid_pref)) in wpa_config_write_global()
1626 MAC2STR(config->mld_connect_bssid_pref)); in wpa_config_write_global()
1628 if (config->ft_prepend_pmkid) in wpa_config_write_global()
1629 fprintf(f, "ft_prepend_pmkid=%d", config->ft_prepend_pmkid); in wpa_config_write_global()
1635 int wpa_config_write(const char *name, struct wpa_config *config) in wpa_config_write() argument
1651 return -1; in wpa_config_write()
1667 return -1; in wpa_config_write()
1670 wpa_config_write_global(f, config); in wpa_config_write()
1672 for (cred = config->cred; cred; cred = cred->next) { in wpa_config_write()
1673 if (cred->temporary) in wpa_config_write()
1680 for (ssid = config->ssid; ssid; ssid = ssid->next) { in wpa_config_write()
1681 if (ssid->key_mgmt == WPA_KEY_MGMT_WPS || ssid->temporary || in wpa_config_write()
1682 ssid->ro) in wpa_config_write()
1684 if (wpa_key_mgmt_wpa_psk_no_sae(ssid->key_mgmt) && in wpa_config_write()
1685 !ssid->psk_set && !ssid->passphrase) in wpa_config_write()
1687 if (wpa_key_mgmt_sae(ssid->key_mgmt) && in wpa_config_write()
1688 !ssid->passphrase && !ssid->sae_password) in wpa_config_write()
1696 for (blob = config->blobs; blob; blob = blob->next) { in wpa_config_write()
1715 ret = -1; in wpa_config_write()
1724 return -1; in wpa_config_write()