This is an automated email from the ASF dual-hosted git repository.
xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git
The following commit(s) were added to refs/heads/master by this push:
new 0b7d22742 system/wifibridge: undo a failed start and show the saved
configuration.
0b7d22742 is described below
commit 0b7d22742440d8c8d6bf703b682463ed79c1d22f
Author: Daniel P. Carvalho <[email protected]>
AuthorDate: Sat Oct 24 14:41:56 2026 -0300
system/wifibridge: undo a failed start and show the saved configuration.
wifibridge_start() only tore down what it had done when it failed after
creating the bridge. A failure before that, such as an Ethernet port that
cannot be brought up, left the SoftAP running with no bridge. Every
failure now goes through the same teardown, which tolerates steps that
were never done.
status now also reports whether a configuration is saved (SSID, channel
and security, never the passphrase) when NETUTILS_WIFIBRIDGE_PERSIST is
enabled.
Assisted-by: Claude Code:claude-sonnet-5-5
Signed-off-by: Daniel P. Carvalho <[email protected]>
---
netutils/wifibridge/wifibridge.c | 16 +++++++---------
system/wifibridge/wifibridge_main.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/netutils/wifibridge/wifibridge.c b/netutils/wifibridge/wifibridge.c
index 165a8c41e..cfe922f04 100644
--- a/netutils/wifibridge/wifibridge.c
+++ b/netutils/wifibridge/wifibridge.c
@@ -296,33 +296,33 @@ int wifibridge_start(FAR const struct wifibridge_config_s
*config)
ret = netlib_bridge_addif(config->bridge, config->ethif);
if (ret < 0)
{
- goto errout_bridge;
+ goto errout;
}
ret = netlib_bridge_addif(config->bridge, config->wlanif);
if (ret < 0)
{
- goto errout_bridge;
+ goto errout;
}
addr.s_addr = config->ipaddr;
ret = netlib_set_ipv4addr(config->bridge, &addr);
if (ret < 0)
{
- goto errout_bridge;
+ goto errout;
}
addr.s_addr = config->netmask;
ret = netlib_set_ipv4netmask(config->bridge, &addr);
if (ret < 0)
{
- goto errout_bridge;
+ goto errout;
}
ret = netlib_ifup(config->bridge);
if (ret < 0)
{
- goto errout_bridge;
+ goto errout;
}
#ifdef CONFIG_NETUTILS_WIFIBRIDGE_DHCPD
@@ -331,7 +331,7 @@ int wifibridge_start(FAR const struct wifibridge_config_s
*config)
ret = dhcpd_start(config->bridge);
if (ret < 0)
{
- goto errout_bridge;
+ goto errout;
}
}
#endif
@@ -339,10 +339,8 @@ int wifibridge_start(FAR const struct wifibridge_config_s
*config)
close(sock);
return OK;
-errout_bridge:
- wifibridge_teardown(sock, config);
-
errout:
+ wifibridge_teardown(sock, config);
close(sock);
return ret;
}
diff --git a/system/wifibridge/wifibridge_main.c
b/system/wifibridge/wifibridge_main.c
index 5c361c248..ee8973cdd 100644
--- a/system/wifibridge/wifibridge_main.c
+++ b/system/wifibridge/wifibridge_main.c
@@ -197,6 +197,31 @@ static int wifibridge_clear_cmd(void)
}
#endif
+#ifdef CONFIG_NETUTILS_WIFIBRIDGE_PERSIST
+static void
+wifibridge_status_saved(FAR const struct wifibridge_config_s *config)
+{
+ struct wifibridge_config_s saved = *config;
+ int ret;
+
+ ret = wifibridge_load(&saved);
+ if (ret == OK)
+ {
+ printf("saved ssid \"%s\" channel %d %s\n", saved.ssid,
+ saved.channel,
+ saved.security == WIFIBRIDGE_SEC_WPA3 ? "WPA3" : "WPA2");
+ }
+ else if (ret == -ENOENT)
+ {
+ printf("saved none\n");
+ }
+ else
+ {
+ printf("saved unreadable (%d)\n", ret);
+ }
+}
+#endif
+
static int
wifibridge_status_cmd(FAR const struct wifibridge_config_s *config)
{
@@ -221,6 +246,11 @@ wifibridge_status_cmd(FAR const struct wifibridge_config_s
*config)
printf("\n%-5s %s\n", config->ethif, status.eth_up ? "up" : "down");
printf("%-5s %s ssid \"%s\"\n", config->wlanif,
status.wlan_up ? "up" : "down", status.ssid);
+
+#ifdef CONFIG_NETUTILS_WIFIBRIDGE_PERSIST
+ wifibridge_status_saved(config);
+#endif
+
return EXIT_SUCCESS;
}