aboutsummaryrefslogtreecommitdiff
path: root/net/nlbwmon
diff options
context:
space:
mode:
Diffstat (limited to 'net/nlbwmon')
-rw-r--r--net/nlbwmon/Makefile42
-rw-r--r--net/nlbwmon/files/nlbwmon.config51
-rwxr-xr-xnet/nlbwmon/files/nlbwmon.init89
3 files changed, 182 insertions, 0 deletions
diff --git a/net/nlbwmon/Makefile b/net/nlbwmon/Makefile
new file mode 100644
index 000000000..f7c5c1389
--- /dev/null
+++ b/net/nlbwmon/Makefile
@@ -0,0 +1,42 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=nlbwmon
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/jow-/nlbwmon.git
+PKG_SOURCE_DATE:=2017-07-28
+PKG_SOURCE_VERSION:=76487b5ec06cdeed097bd91c0216ab61861bcf07
+PKG_MIRROR_HASH:=981c70a7cb1811bbf45261e64a18c5c0fca3fb3a93ac299ce614c08c153ac7e0
+
+CMAKE_INSTALL:=1
+
+PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
+PKG_LICENSE:=ISC
+PKG_LICENSE_FILES:=COPYING
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/libnl-tiny
+
+define Package/nlbwmon
+ SECTION:=net
+ CATEGORY:=Network
+ DEPENDS:=+libubox +libnl-tiny +zlib +kmod-nf-conntrack-netlink
+ TITLE:=LEDE Traffic Usage Monitor
+endef
+
+define Package/nlbwmon/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/nlbwmon $(1)/usr/sbin/nlbwmon
+ $(LN) nlbwmon $(1)/usr/sbin/nlbw
+ $(INSTALL_DIR) $(1)/usr/share/nlbwmon
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/protocols.txt $(1)/usr/share/nlbwmon/protocols
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/nlbwmon.init $(1)/etc/init.d/nlbwmon
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_CONF) ./files/nlbwmon.config $(1)/etc/config/nlbwmon
+endef
+
+$(eval $(call BuildPackage,nlbwmon))
diff --git a/net/nlbwmon/files/nlbwmon.config b/net/nlbwmon/files/nlbwmon.config
new file mode 100644
index 000000000..3b1539602
--- /dev/null
+++ b/net/nlbwmon/files/nlbwmon.config
@@ -0,0 +1,51 @@
+config nlbwmon
+ # Interval at which the temporary in-memory database is committed to
+ # the persistent database directory
+ option commit_interval 24h
+
+ # Interval at which traffic counters of still established connections
+ # are refreshed from netlink information
+ option refresh_interval 30s
+
+ # Storage directory for the database files
+ option database_directory /var/lib/nlbwmon
+
+ # Amount of database generations to retain. If the limit is reached,
+ # the oldest database files are deleted.
+ option database_generations 10
+
+ # Accounting period interval; may be either in the format YYYY-MM-DD/NN
+ # to start a new accounting period exactly every NN days, beginning at
+ # the given date, or a number specifiying the day of month at which to
+ # start the next accounting period.
+ #option database_interval '2017-01-17/14' # every 14 days, starting at Tue
+ #option database_interval '-2' # second last day of month, e.g. 30th in March
+ option database_interval '1' # first day of month (default)
+
+ # The maximum amount of entries that should be put into the database,
+ # setting the limit to 0 will allow databases to grow indefinitely.
+ option database_limit 10000
+
+ # Whether to preallocate the maximum possible database size in memory.
+ # This is mainly useful for memory constrained systems which might not
+ # be able to satisfy memory allocation after longer uptime periods.
+ # Only effective in conjunction with database_limit, ignored otherwise.
+ #option database_prealloc 0
+
+ # Whether to gzip compress archive databases. Compressing the database
+ # files makes accessing old data slightly slower but helps to reduce
+ # storage requirements.
+ #option database_compress 1
+
+ # Protocol description file, used to distinguish traffic streams by
+ # IP protocol number and port
+ option protocol_database /usr/share/nlbwmon/protocols
+
+ # List of local subnets. Only conntrack streams from or to any of these
+ # subnets are counted. Logical interface names may be specified to
+ # resolve the local subnets on the fly.
+ list local_network '192.168.0.0/16'
+ list local_network '172.16.0.0/12'
+ list local_network '10.0.0.0/8'
+ list local_network 'lan'
+
diff --git a/net/nlbwmon/files/nlbwmon.init b/net/nlbwmon/files/nlbwmon.init
new file mode 100755
index 000000000..3f01d0f58
--- /dev/null
+++ b/net/nlbwmon/files/nlbwmon.init
@@ -0,0 +1,89 @@
+#!/bin/sh /etc/rc.common
+
+START=60
+
+USE_PROCD=1
+NAME=nlbwmon
+PROG=/usr/sbin/nlbwmon
+
+add_subnet() {
+ local network="$1"
+ local range ranges
+
+ case "$network" in
+ *.*|*:*)
+ procd_append_param command '-s' "$network"
+ ;;
+ *)
+ if network_get_subnets ranges "$network"; then
+ for range in $ranges; do
+ procd_append_param command '-s' "$range"
+ done
+ fi
+
+ if network_get_subnets6 ranges "$network"; then
+ for range in $ranges; do
+ procd_append_param command '-s' "$range"
+ done
+ fi
+ ;;
+ esac
+}
+
+add_option() {
+ local cfg="$1"
+ local flag="$2"
+ local option="$3"
+ local default="$4"
+ local value
+
+ config_get value "$cfg" "$option" "$default"
+ [ -n "$value" ] && procd_append_param command "$flag" "$value"
+}
+
+add_bool() {
+ local cfg="$1"
+ local flag="$2"
+ local option="$3"
+ local default="$4"
+ local value
+
+ config_get_bool value "$cfg" "$option" "$default"
+ [ $value -eq 1 ] && procd_append_param command "$flag"
+}
+
+parse_config() {
+ . /lib/functions/network.sh
+
+ local cfg="$1"
+ local dir
+
+ config_get dir "$cfg" database_directory /var/lib/nlbwmon
+
+ mkdir -p "$dir"
+ procd_append_param command -o "$dir"
+
+ add_option "$cfg" -i commit_interval 24h
+ add_option "$cfg" -r refresh_interval 30s
+ add_option "$cfg" -p protocol_database /usr/share/nlbwmon/protocols
+ add_option "$cfg" -G database_generations 10
+ add_option "$cfg" -I database_interval 1
+ add_option "$cfg" -L database_limit 10000
+
+ add_bool "$cfg" -P database_prealloc 0
+ add_bool "$cfg" -Z database_compress 1
+
+ config_list_foreach "$cfg" local_network add_subnet
+}
+
+start_service() {
+ procd_open_instance
+ procd_set_param stderr 1
+ procd_set_param command "$PROG"
+
+ config_load nlbwmon
+ config_foreach parse_config nlbwmon
+
+ procd_close_instance
+}
+