syslog-ng: detect disabled IPv6 on loopback and fallback to IPv4
authorKarel Kočí <[email protected]>
Fri, 26 Jun 2020 09:37:32 +0000 (11:37 +0200)
committerKarel Kočí <[email protected]>
Fri, 26 Jun 2020 11:04:46 +0000 (13:04 +0200)
Binding in default to IPv6 is preferable but it can be disabled in
kernel and that prevents syslog-ng to start. This setup should not be
that common but syslog is very important service and should survive
that.

This introduces new plugin defining source generator
`network_localhost`. This is used instead of original network source.

Signed-off-by: Karel Kočí <[email protected]>
admin/syslog-ng/Makefile
admin/syslog-ng/files/scl/network_localhost/detect.sh [new file with mode: 0755]
admin/syslog-ng/files/scl/network_localhost/plugin.conf [new file with mode: 0644]
admin/syslog-ng/files/syslog-ng.conf

index 5be6f4365824a5b018fdab7549b17cfc589a03e0..c167d3be56b3a38551b5ffef74f83dbadf2d1ccf 100644 (file)
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=syslog-ng
 PKG_VERSION:=3.27.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_MAINTAINER:=Josef Schlehofer <[email protected]>
 PKG_LICENSE:=LGPL-2.1-or-later GPL-2.0-or-later
@@ -87,6 +87,9 @@ define Package/syslog-ng/install
 
        $(INSTALL_DIR) $(1)/sbin
        $(INSTALL_BIN) ./files/logread $(1)/sbin
+
+       $(INSTALL_DIR) $(1)/usr/share/syslog-ng/include/
+       $(CP) -r ./files/scl $(1)/usr/share/syslog-ng/include/
 endef
 
 define Package/syslog-ng/postinst
diff --git a/admin/syslog-ng/files/scl/network_localhost/detect.sh b/admin/syslog-ng/files/scl/network_localhost/detect.sh
new file mode 100755 (executable)
index 0000000..ef76272
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+if [ "$(sysctl net.ipv6.conf.lo.disable_ipv6 | cut -d' ' -f 3)" = "0" ]; then
+       echo 'network(ip("::1") port(514) transport(udp) ip-protocol(6) )'
+else
+       echo 'network(ip("127.0.0.1") port(514) transport(udp) ip-protocol(4) )'
+fi
diff --git a/admin/syslog-ng/files/scl/network_localhost/plugin.conf b/admin/syslog-ng/files/scl/network_localhost/plugin.conf
new file mode 100644 (file)
index 0000000..b278942
--- /dev/null
@@ -0,0 +1 @@
+@module confgen context(source) name(network_localhost) exec("`scl-root`/network_localhost/detect.sh")
index 2181464b495337e21b86256d350f7e4caa37f755..10cb98d8882aff5870d9fa9cd59177cfc8e94948 100644 (file)
@@ -26,7 +26,7 @@ source src {
 };
 
 source net {
-       network(ip("::1") port(514) transport(udp) ip-protocol(6));
+       network_localhost();
 };
 
 source s_network {