diff options
-rw-r--r-- | net/foolsm/Makefile | 55 | ||||
-rw-r--r-- | net/foolsm/files/connections.conf | 13 | ||||
-rw-r--r-- | net/foolsm/files/foolsm.conf | 43 | ||||
-rw-r--r-- | net/foolsm/files/foolsm.init | 19 | ||||
-rw-r--r-- | net/foolsm/files/foolsm_script | 57 | ||||
-rw-r--r-- | net/foolsm/patches/100-plugin-export-dir.patch | 11 | ||||
-rw-r--r-- | net/foolsm/patches/110-missing-WAIT_ANY.patch | 11 |
7 files changed, 209 insertions, 0 deletions
diff --git a/net/foolsm/Makefile b/net/foolsm/Makefile new file mode 100644 index 000000000..43c1d1d04 --- /dev/null +++ b/net/foolsm/Makefile @@ -0,0 +1,55 @@ +# +# Copyright (C) 2010-2011 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=foolsm +PKG_VERSION:=1.0.10 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://lsm.foobar.fi/download +PKG_HASH:=33210209ca38b3bfef1a9180f765266a134fc811dea8bc06450a3bd48d1d083e + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) + +include $(INCLUDE_DIR)/package.mk + +define Package/foolsm + SECTION:=net + CATEGORY:=Network + DEPENDS:=+ssmtp + TITLE:=A link state monitor + URL:=http://lsm.foobar.fi/ +endef + +define Package/foolsm/description + foolsm is a link state monitor for carrying out actions when a link + transistions from the up to down state or vice versa. +endef + +define Package/foolsm/conffiles +/etc/foolsm/foolsm.conf +endef + +define Package/foolsm/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/foolsm $(1)/usr/sbin/ + $(INSTALL_DIR) $(1)/etc/foolsm/script.d + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_DATA) ./files/connections.conf $(1)/etc/foolsm/connections.conf + $(INSTALL_DATA) ./files/foolsm.conf $(1)/etc/foolsm/foolsm.conf + $(INSTALL_BIN) ./files/foolsm_script $(1)/etc/foolsm/script + $(INSTALL_BIN) ./files/foolsm.init $(1)/etc/init.d/foolsm +endef + +define Package/foolsm/conffiles +/etc/foolsm/connections.conf +/etc/foolsm/foolsm.conf +endef + +$(eval $(call BuildPackage,foolsm)) diff --git a/net/foolsm/files/connections.conf b/net/foolsm/files/connections.conf new file mode 100644 index 000000000..087a895e7 --- /dev/null +++ b/net/foolsm/files/connections.conf @@ -0,0 +1,13 @@ +connection { + name=Provider1 + checkip=1.1.1.1 + device=pppoe-wan + ttl=2 +} + +connection { + name=Provider2 + checkip=2.2.2.2 + device=eth0.2 + ttl=1 +} diff --git a/net/foolsm/files/foolsm.conf b/net/foolsm/files/foolsm.conf new file mode 100644 index 000000000..db3db91fd --- /dev/null +++ b/net/foolsm/files/foolsm.conf @@ -0,0 +1,43 @@ +# +# (C) 2009 Mika Ilmaranta <ilmis at nullnet.fi> +# +# License: GPLv2 +# + +# +# Debug level: 0 .. 8 are normal, 9 gives lots of stuff and 100 doesn't +# bother to detach +# +#debug=10 +#debug=9 +debug=8 +# reopen_on_enodev=1 + +# +# Defaults for the connection entries +# +defaults { + name=defaults + checkip=127.0.0.1 + eventscript=/etc/foolsm/script + notifyscript= + max_packet_loss=20 + max_successive_pkts_lost=7 + min_packet_loss=5 + min_successive_pkts_rcvd=10 + interval_ms=2000 + timeout_ms=2000 + warn_email=root + check_arp=0 + sourceip= +# if using ping probes for monitoring only then defaults should +# not define a default device for packets to autodiscover their path +# to destination +# device=eth0 +# use system default ttl + ttl=0 +} + +include /etc/foolsm/connections.conf + +#EOF diff --git a/net/foolsm/files/foolsm.init b/net/foolsm/files/foolsm.init new file mode 100644 index 000000000..9c4b61f40 --- /dev/null +++ b/net/foolsm/files/foolsm.init @@ -0,0 +1,19 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2010-2011 OpenWrt.org + +START=45 + +SERVICE_USE_PID=1 +SERVICE_PID_FILE=/var/run/foolsm.pid + +start() { + service_start /usr/sbin/foolsm -c /etc/foolsm/foolsm.conf -p $SERVICE_PID_FILE +} + +stop() { + service_stop /usr/sbin/foolsm +} + +reload() { + service_reload /usr/sbin/foolsm +} diff --git a/net/foolsm/files/foolsm_script b/net/foolsm/files/foolsm_script new file mode 100644 index 000000000..07c4ada12 --- /dev/null +++ b/net/foolsm/files/foolsm_script @@ -0,0 +1,57 @@ +#!/bin/sh +# +# (C) 2009 Mika Ilmaranta <ilmis@nullnet.fi> +# (C) 2009 Tom Eastep <teastep@shorewall.net> +# +# License: GPLv2 +# + +DATE=$(/bin/date) + +STATE=${1} +NAME=${2} +CHECKIP=${3} +DEVICE=${4} +WARN_EMAIL=${5} +REPLIED=${6} +WAITING=${7} +TIMEOUT=${8} +REPLY_LATE=${9} +CONS_RCVD=${10} +CONS_WAIT=${11} +CONS_MISS=${12} +AVG_RTT=${13} + +cat <<EOM | ssmtp ${WARN_EMAIL} +Subject: "LSM: ${NAME} ${STATE}, DEV ${DEVICE}" + +Hi, + +Your connection ${NAME} has changed it's state to ${STATE} at ${DATE}. + +Following parameters were passed: + +newstate = ${STATE} +name = ${NAME} +checkip = ${CHECKIP} +device = ${DEVICE} +warn_email = ${WARN_EMAIL} + +Packet counters: + +replied = ${REPLIED} packets replied +waiting = ${WAITING} packets waiting for reply +timeout = ${TIMEOUT} packets that have timed out (= packet loss) +reply_late = ${REPLY_LATE} packets that received a reply after timeout +cons_rcvd = ${CONS_RCVD} consecutively received replies in sequence +cons_wait = ${CONS_WAIT} consecutive packets waiting for reply +cons_miss = ${CONS_MISS} consecutive packets that have timed out +avg_rtt = ${AVG_RTT} average rtt, notice that waiting and timed out packets have rtt = 0 when calculating this + +Your LSM Daemon + +EOM + +exit 0 + +#EOF diff --git a/net/foolsm/patches/100-plugin-export-dir.patch b/net/foolsm/patches/100-plugin-export-dir.patch new file mode 100644 index 000000000..028413f89 --- /dev/null +++ b/net/foolsm/patches/100-plugin-export-dir.patch @@ -0,0 +1,11 @@ +--- a/defs.h 2016-11-10 07:22:50.275506874 -0500 ++++ b/defs.h 2016-11-10 07:22:58.639469850 -0500 +@@ -22,7 +22,7 @@ + + #define min(x, y) ((x)<(y) ? (x) : (y)) + +-#define PLUGIN_EXPORT_DIR "/var/lib/foolsm" ++#define PLUGIN_EXPORT_DIR "/tmp" + + #endif + diff --git a/net/foolsm/patches/110-missing-WAIT_ANY.patch b/net/foolsm/patches/110-missing-WAIT_ANY.patch new file mode 100644 index 000000000..4409a8c42 --- /dev/null +++ b/net/foolsm/patches/110-missing-WAIT_ANY.patch @@ -0,0 +1,11 @@ +--- a/forkexec.c 2017-11-02 07:45:28.679821530 -0400 ++++ /bforkexec.c 2017-11-02 07:44:54.527653043 -0400 +@@ -108,7 +108,7 @@ + int script_status; + pid_t pid; + +- while ((pid = waitpid(WAIT_ANY, &script_status, WNOHANG)) != 0) { ++ while ((pid = waitpid(-1, &script_status, WNOHANG)) != 0) { + if(pid == -1) { + if(cfg.debug >= 9 && errno != ECHILD) + syslog(LOG_ERR, "%s: %s: %d: waitpid failed %s", __FILE__, __FUNCTION__, __LINE__, strerror(errno)); |