foolsm: Add package foolsm
authorBrian J. Murrell <brian@interlinx.bc.ca>
Wed, 13 Dec 2017 12:48:01 +0000 (07:48 -0500)
committerBrian J. Murrell <brian@interlinx.bc.ca>
Fri, 21 Sep 2018 11:52:47 +0000 (07:52 -0400)
Signed-off-by: Brian J. Murrell <brian@interlinx.bc.ca>
(cherry picked from commit 5cff94399d39016790921552a13719214cb46d73)

net/foolsm/Makefile [new file with mode: 0644]
net/foolsm/files/connections.conf [new file with mode: 0644]
net/foolsm/files/foolsm.conf [new file with mode: 0644]
net/foolsm/files/foolsm.init [new file with mode: 0644]
net/foolsm/files/foolsm_script [new file with mode: 0644]
net/foolsm/patches/100-plugin-export-dir.patch [new file with mode: 0644]
net/foolsm/patches/110-missing-WAIT_ANY.patch [new file with mode: 0644]

diff --git a/net/foolsm/Makefile b/net/foolsm/Makefile
new file mode 100644 (file)
index 0000000..43c1d1d
--- /dev/null
@@ -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 (file)
index 0000000..087a895
--- /dev/null
@@ -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 (file)
index 0000000..db3db91
--- /dev/null
@@ -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 (file)
index 0000000..9c4b61f
--- /dev/null
@@ -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 (file)
index 0000000..07c4ada
--- /dev/null
@@ -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 (file)
index 0000000..028413f
--- /dev/null
@@ -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 (file)
index 0000000..4409a8c
--- /dev/null
@@ -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));