From: Francesco Benini Date: Sat, 1 Feb 2025 22:13:22 +0000 (+0100) Subject: keepalived: add support for directory sync X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=7c58cd667bb37fd6aec9b4fd625bd6962ec1ed0f;p=feed%2Fpackages.git keepalived: add support for directory sync This commit adds support for folder synchronization. An example is in the 810-files file where it is explained how to synchronize all hotplug files of keepalived. Signed-off-by: Francesco Benini --- diff --git a/net/keepalived/Makefile b/net/keepalived/Makefile index db660152ed..573908cc8f 100644 --- a/net/keepalived/Makefile +++ b/net/keepalived/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=keepalived PKG_VERSION:=2.3.1 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://www.keepalived.org/software diff --git a/net/keepalived/files/etc/hotplug.d/keepalived/810-files b/net/keepalived/files/etc/hotplug.d/keepalived/810-files index d6f9b90b7c..a306841552 100644 --- a/net/keepalived/files/etc/hotplug.d/keepalived/810-files +++ b/net/keepalived/files/etc/hotplug.d/keepalived/810-files @@ -15,4 +15,7 @@ add_sync_file /etc/shinit add_sync_file /etc/sysctl.conf add_sync_file /tmp/dhcp.leases +# uncomment the following line and add /etc/hotplug.d/keepalived to sysupgrade.conf or keepalived configuration in order to enable hotplug scripts sync +# add_sync_file /etc/hotplug.d/keepalived + keepalived_hotplug diff --git a/net/keepalived/files/lib/functions/keepalived/hotplug.sh b/net/keepalived/files/lib/functions/keepalived/hotplug.sh index 5bd96d5cf5..8db32f7ea1 100644 --- a/net/keepalived/files/lib/functions/keepalived/hotplug.sh +++ b/net/keepalived/files/lib/functions/keepalived/hotplug.sh @@ -82,6 +82,17 @@ is_sync_file() { list_contains SYNC_FILES_LIST "$1" } +is_sync_file_in_folder() { + local f="$1" + while [ "$f" != "" ]; do + f="${f%/*}" + if list_contains SYNC_FILES_LIST "$f"; then + return 0 + fi + done + return 1 +} + _set_update_target() { set_var UPDATE_TARGET "${1:-1}" } @@ -227,7 +238,7 @@ _notify_sync() { return fi - is_sync_file "$RSYNC_TARGET" || return + is_sync_file "$RSYNC_TARGET" || is_sync_file_in_folder "$RSYNC_TARGET" || return if ! cp -a "$RSYNC_SOURCE" "$RSYNC_TARGET"; then log_err "can not copy $RSYNC_SOURCE => $RSYNC_TARGET" diff --git a/net/keepalived/files/usr/share/keepalived/scripts/rsync.sh b/net/keepalived/files/usr/share/keepalived/scripts/rsync.sh index fa15df2119..78c533ff9a 100644 --- a/net/keepalived/files/usr/share/keepalived/scripts/rsync.sh +++ b/net/keepalived/files/usr/share/keepalived/scripts/rsync.sh @@ -44,11 +44,10 @@ ha_sync_send() { config_get sync_list "$cfg" sync_list for sync_file in $sync_list $(sysupgrade -l); do - [ -f "$sync_file" ] && { - dir="${sync_file%/*}" - list_contains files_list "${sync_file}" || append files_list "${sync_file}" - } + [ -f "$sync_file" ] && dir="${sync_file%/*}" [ -d "$sync_file" ] && dir="${sync_file}" + + list_contains files_list "${sync_file}" || append files_list "${sync_file}" list_contains dirs_list "${sync_dir}${dir}" || append dirs_list "${sync_dir}${dir}" done