mirror of
https://github.com/kernelkit/infix.git
synced 2026-08-03 06:13:02 +02:00
confd: wifi: Fix several bugs in WiFi implemenation
* Did not work to reconfigure * Was not possible to run from startup * Othe minor things.
This commit is contained in:
@@ -12,7 +12,7 @@ static int wifi_gen_config(const char *ifname, const char *ssid, const char *cou
|
||||
char *encryption_str;
|
||||
int rc = SR_ERR_OK;
|
||||
|
||||
if (!secret || !ssid || !country || !encryption) {
|
||||
if (!secret && (ssid && country && encryption)) {
|
||||
/* Not an error, updated from two ways, interface cb and keystore cb. */
|
||||
return 0;
|
||||
}
|
||||
@@ -24,7 +24,12 @@ static int wifi_gen_config(const char *ifname, const char *ssid, const char *cou
|
||||
}
|
||||
|
||||
fprintf(wpa, "# Generated by Infix confd\n");
|
||||
|
||||
fprintf(wpa, "if [ -f '/etc/finit.d/enabled/wifi@%s.conf' ];then\n", ifname);
|
||||
fprintf(wpa, "initctl -bfqn touch wifi@%s\n", ifname);
|
||||
fprintf(wpa, "else\n");
|
||||
fprintf(wpa, "initctl -bfqn enable wifi@%s\n", ifname);
|
||||
fprintf(wpa, "fi\n");
|
||||
fclose(wpa);
|
||||
|
||||
wpa_supplicant = fopenf("w", WPA_SUPPLICANT_CONF, ifname);
|
||||
@@ -32,7 +37,13 @@ static int wifi_gen_config(const char *ifname, const char *ssid, const char *cou
|
||||
rc = SR_ERR_INTERNAL;
|
||||
goto out;
|
||||
}
|
||||
if (ssid) {
|
||||
|
||||
if (!secret || !ssid || !country || !encryption) {
|
||||
fprintf(wpa_supplicant,
|
||||
"ctrl_interface=/run/wpa_supplicant\n"
|
||||
"autoscan=periodic:10\n"
|
||||
"ap_scan=1\n");
|
||||
} else {
|
||||
if (!strcmp(encryption, "disabled")) {
|
||||
asprintf(&encryption_str, "key_mgmt=NONE");
|
||||
} else {
|
||||
@@ -48,14 +59,7 @@ static int wifi_gen_config(const char *ifname, const char *ssid, const char *cou
|
||||
"ssid=\"%s\"\n"
|
||||
"%s\n"
|
||||
"}\n", country, ssid, encryption_str);
|
||||
free(encryption_str);
|
||||
} else {
|
||||
fprintf(wpa_supplicant,
|
||||
"ctrl_interface=/run/wpa_supplicant\n"
|
||||
"autoscan=periodic:10\n"
|
||||
"ap_scan=1\n");
|
||||
|
||||
|
||||
free(encryption_str);
|
||||
}
|
||||
fclose(wpa_supplicant);
|
||||
|
||||
@@ -75,11 +79,6 @@ int wifi_gen(struct lyd_node *dif, struct lyd_node *cif, struct dagger *net)
|
||||
return wifi_gen_config(ifname, NULL, NULL, NULL, NULL, net);
|
||||
}
|
||||
|
||||
if (dif && !lydx_get_child(dif, "wifi")) {
|
||||
return SR_ERR_OK;
|
||||
}
|
||||
|
||||
|
||||
enabled = lydx_get_bool(cif, "enabled");
|
||||
wifi = lydx_get_child(cif, "wifi");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user