luci-0.9: merge r5359
This commit is contained in:
parent
bd72aa8399
commit
3432a89362
3 changed files with 33 additions and 21 deletions
|
@ -8,7 +8,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=freifunk-watchdog
|
PKG_NAME:=freifunk-watchdog
|
||||||
PKG_RELEASE:=6
|
PKG_RELEASE:=7
|
||||||
|
|
||||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||||
PKG_BUILD_DEPENDS := uci
|
PKG_BUILD_DEPENDS := uci
|
||||||
|
|
|
@ -21,10 +21,18 @@
|
||||||
/* Global watchdog fd, required by signal handler */
|
/* Global watchdog fd, required by signal handler */
|
||||||
int wdfd = -1;
|
int wdfd = -1;
|
||||||
|
|
||||||
|
/* Handle finished childs */
|
||||||
|
static void sigchld_handler(int sig)
|
||||||
|
{
|
||||||
|
pid_t pid;
|
||||||
|
|
||||||
|
while( (pid = waitpid(-1, NULL, WNOHANG)) > 0 )
|
||||||
|
syslog(LOG_INFO, "Child returned (pid %d)", pid);
|
||||||
|
}
|
||||||
|
|
||||||
/* Watchdog shutdown helper */
|
/* Watchdog shutdown helper */
|
||||||
static void shutdown_watchdog(int sig)
|
static void shutdown_watchdog(int sig)
|
||||||
{
|
{
|
||||||
static int wdelay = 3600;
|
|
||||||
static const char wshutdown = WATCH_SHUTDOWN;
|
static const char wshutdown = WATCH_SHUTDOWN;
|
||||||
|
|
||||||
if( wdfd > -1 )
|
if( wdfd > -1 )
|
||||||
|
@ -298,7 +306,7 @@ static int do_daemon(void)
|
||||||
int loadavg_panic = 0;
|
int loadavg_panic = 0;
|
||||||
|
|
||||||
openlog(SYSLOG_IDENT, 0, LOG_DAEMON);
|
openlog(SYSLOG_IDENT, 0, LOG_DAEMON);
|
||||||
//daemon(1, 1);
|
memset(&sa, 0, sizeof(sa));
|
||||||
|
|
||||||
if( (iwfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1 )
|
if( (iwfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1 )
|
||||||
{
|
{
|
||||||
|
@ -327,6 +335,11 @@ static int do_daemon(void)
|
||||||
ioctl(wdfd, WDIOC_SETTIMEOUT, &wdtimeout);
|
ioctl(wdfd, WDIOC_SETTIMEOUT, &wdtimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Install signal handler to reap childs */
|
||||||
|
sa.sa_handler = sigchld_handler;
|
||||||
|
sa.sa_flags = 0;
|
||||||
|
sigaction(SIGCHLD, &sa, NULL);
|
||||||
|
|
||||||
while( 1 )
|
while( 1 )
|
||||||
{
|
{
|
||||||
/* Check/increment action interval */
|
/* Check/increment action interval */
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
@ -67,7 +68,7 @@
|
||||||
|
|
||||||
/* System load error action and treshold */
|
/* System load error action and treshold */
|
||||||
#define LOAD_TRESHOLD 15.00
|
#define LOAD_TRESHOLD 15.00
|
||||||
#define LOAD_ACTION "/sbin/reboot"
|
#define LOAD_ACTION "/sbin/reboot", "/sbin/reboot"
|
||||||
|
|
||||||
/* Fallback binary name (passed by makefile) */
|
/* Fallback binary name (passed by makefile) */
|
||||||
#ifndef BINARY
|
#ifndef BINARY
|
||||||
|
@ -107,22 +108,20 @@ iw_ioctl(int skfd, /* Socket to the kernel */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fork() & execl() helper */
|
/* fork() & execl() helper */
|
||||||
#define EXEC(x) \
|
#define EXEC(x) \
|
||||||
do { \
|
do { \
|
||||||
switch(fork()) \
|
switch(fork()) \
|
||||||
{ \
|
{ \
|
||||||
case -1: \
|
case -1: \
|
||||||
syslog(LOG_CRIT, "Unable to fork child: %s", \
|
syslog(LOG_CRIT, "Unable to fork child: %s", \
|
||||||
strerror(errno)); \
|
strerror(errno)); \
|
||||||
\
|
break; \
|
||||||
break; \
|
\
|
||||||
\
|
case 0: \
|
||||||
case 0: \
|
execl(x, NULL); \
|
||||||
execl(x, NULL); \
|
syslog(LOG_CRIT, "Unable to execute action: %s", \
|
||||||
syslog(LOG_CRIT, "Unable to execute action: %s", \
|
strerror(errno)); \
|
||||||
strerror(errno)); \
|
return 1; \
|
||||||
\
|
} \
|
||||||
return 1; \
|
|
||||||
} \
|
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue