The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
--- Begin Message ---
Investigating why a device has rebooted can be difficult, especially if
there's no output (for example during a kernel crash) on the serial
console. Some watchdog drivers can tell us if the watchdog has caused
the system to reboot. The corresponding WDIOF_CARDRESET flag is
documented as: "Card previously reset the CPU".

Add an info message if the watchdog supports the WDIOF_CARDRESET flag
and if the boot status indicates that the watchdog has previously reset
the system.

Signed-off-by: Martin Blumenstingl <martin.blumensti...@googlemail.com>
---
 watchdog.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/watchdog.c b/watchdog.c
index 9d770b4..39ae9ff 100644
--- a/watchdog.c
+++ b/watchdog.c
@@ -93,6 +93,35 @@ static int watchdog_set_drv_timeout(void)
        return ioctl(wdt_fd, WDIOC_SETTIMEOUT, &wdt_drv_timeout);
 }
 
+static void watchdog_print_status(void)
+{
+       struct watchdog_info wdt_info;
+       int bootstatus;
+
+       if (wdt_fd < 0)
+               return;
+
+       if (ioctl(wdt_fd, WDIOC_GETSUPPORT, &wdt_info)) {
+               DEBUG(2, "Watchdog GETSUPPORT failed\n");
+               return;
+       }
+
+       if (!(wdt_info.options & WDIOF_CARDRESET)) {
+               DEBUG(2, "Watchdog does not have CARDRESET support\n");
+               return;
+       }
+
+       if (ioctl(wdt_fd, WDIOC_GETBOOTSTATUS, &bootstatus)) {
+               DEBUG(2, "Watchdog GETBOOTSTATUS failed\n");
+               return;
+       }
+
+       if (bootstatus & WDIOF_CARDRESET)
+               LOG("Watchdog has previously reset the system\n");
+       else
+               DEBUG(2, "Watchdog did not previously reset the system\n");
+}
+
 void watchdog_set_magicclose(bool val)
 {
        wdt_magicclose = val;
@@ -170,6 +199,8 @@ void watchdog_init(int preinit)
        watchdog_timeout_cb(&wdt_timeout);
 
        DEBUG(4, "Opened watchdog with timeout %ds\n", watchdog_timeout(0));
+
+       watchdog_print_status();
 }
 
 
-- 
2.32.0



--- End Message ---
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to