[LEDE-DEV] [PATCH V2 procd] system: add reboot method to system ubus object

Rafał Miłecki zajec5 at gmail.com
Wed Jul 6 04:55:48 PDT 2016


Sometimes, for various reasons, user may want to reboot a device. This
is a common task and it makes sense to support it with something common
like a procd.

Right now both: LuCI and LuCI2 implement this feature on their own with
luci-rpc-luci2-system reboot and luci-rpc-sys reboot. This leads to code
duplication and situation may become even worse with more software
controlling system with ubus.

Othen than that procd already has support for rebooting so one may
consider this ubus method even cleaner.

Once we get this patch in place we may consider switching LuCI and LuCI2
to this new method.

Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
---
V2: Use procd_shutdown making code even simpler. Thanks John!
---
 system.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/system.c b/system.c
index 569a75d..1e31ce6 100644
--- a/system.c
+++ b/system.c
@@ -18,6 +18,7 @@
 #endif
 #include <sys/ioctl.h>
 #include <sys/types.h>
+#include <sys/reboot.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <signal.h>
@@ -242,6 +243,14 @@ static int system_upgrade(struct ubus_context *ctx, struct ubus_object *obj,
 	return 0;
 }
 
+static int system_reboot(struct ubus_context *ctx, struct ubus_object *obj,
+			 struct ubus_request_data *req, const char *method,
+			 struct blob_attr *msg)
+{
+	procd_shutdown(RB_AUTOBOOT);
+	return 0;
+}
+
 enum {
 	WDT_FREQUENCY,
 	WDT_TIMEOUT,
@@ -388,6 +397,7 @@ static const struct ubus_method system_methods[] = {
 	UBUS_METHOD_NOARG("board", system_board),
 	UBUS_METHOD_NOARG("info",  system_info),
 	UBUS_METHOD_NOARG("upgrade", system_upgrade),
+	UBUS_METHOD_NOARG("reboot", system_reboot),
 	UBUS_METHOD("watchdog", watchdog_set, watchdog_policy),
 	UBUS_METHOD("signal", proc_signal, signal_policy),
 
-- 
1.8.4.5




More information about the Lede-dev mailing list