include $(TOPDIR)/rules.mk
PKG_NAME:=keepalived
-PKG_VERSION:=2.2.4
-PKG_RELEASE:=$(AUTORELEASE)
+PKG_VERSION:=2.2.8
+PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.keepalived.org/software
-PKG_HASH:=0138d69087d44beaaa589527f0cfa6885958b320a837147d02b6b7df73ebc1df
+PKG_HASH:=85882eb62974f395d4c631be990a41a839594a7e62fbfebcb5649a937a7a1bb6
PKG_CPE_ID:=cpe:/a:keepalived:keepalived
PKG_LICENSE:=GPL-2.0-or-later
PKG_MAINTAINER:=Ben Kelly <ben@benjii.net> \
Florian Eckert <fe@dev.tdt.de>
-PKG_CONFIG_DEPENDS += \
- KEEPALIVED_VRRP \
- KEEPALIVED_LVS \
- KEEPALIVED_IPTABLES \
- KEEPALIVED_BFD \
- KEEPALIVED_SNMP_VRRP \
- KEEPALIVED_SNMP_CHECKER \
- KEEPALIVED_SNMP_RFC2 \
- KEEPALIVED_SNMP_RFC3 \
- KEEPALIVED_SNMP_REPLY_V3_FOR_V2 \
- KEEPALIVED_DBUS \
- KEEPALIVED_JSON \
- KEEPALIVED_ROUTES \
- IPV6
+PKG_CONFIG_DEPENDS:= \
+ CONFIG_KEEPALIVED_NFTABLES \
+ CONFIG_KEEPALIVED_VRRP \
+ CONFIG_KEEPALIVED_LVS \
+ CONFIG_KEEPALIVED_IPTABLES \
+ CONFIG_KEEPALIVED_BFD \
+ CONFIG_KEEPALIVED_SNMP_VRRP \
+ CONFIG_KEEPALIVED_SNMP_CHECKER \
+ CONFIG_KEEPALIVED_SNMP_RFC2 \
+ CONFIG_KEEPALIVED_SNMP_RFC3 \
+ CONFIG_KEEPALIVED_SNMP_REPLY_V3_FOR_V2 \
+ CONFIG_KEEPALIVED_DBUS \
+ CONFIG_KEEPALIVED_ROUTES \
+ CONFIG_IPV6
PKG_INSTALL:=1
source "$(SOURCE)/Config.in"
endef
-# specifying +(IPV6&&KEEPALIVED_IPTABLES) in the DEPENDS definition doesn't work
-ifeq ($(CONFIG_KEEPALIVED_IPTABLES)$(CONFIG_IPV6),yy)
- KEEPALIVED_DEPENDS_LIBIP6TC=+libip6tc
-endif
-
# The +kmod-nf-ipvs line should be +KEEPALIVED_LVS:kmod-nf-ipvs,
# but make menuconfig then reports :error: recursive dependency detected!
# !!FIXME DEPENDS:= +KEEPALIVED_LVS:kmod-nf-ipvs
DEPENDS:= \
+libnl-genl \
+libmagic \
+ +libkmod \
+ +kmod-nf-ipvs \
+ +libjson-c \
+ +KEEPALIVED_NFTABLES:libnftnl \
+KEEPALIVED_VRRP:kmod-macvlan \
+KEEPALIVED_VRRP:libnl-route \
+KEEPALIVED_VRRP:libnfnetlink \
+KEEPALIVED_SHA1:libopenssl \
+KEEPALIVED_IPTABLES:libip4tc \
- $(KEEPALIVED_DEPENDS_LIBIP6TC) \
+ +KEEPALIVED_IP6TABLES:libip6tc \
+KEEPALIVED_IPTABLES:libxtables \
+KEEPALIVED_IPTABLES:libipset \
+(KEEPALIVED_SNMP_VRRP||KEEPALIVED_SNMP_CHECKER||KEEPALIVED_SNMP_RFC2||KEEPALIVED_SNMP_RFC3):libnetsnmp \
- +KEEPALIVED_JSON:libjson-c \
+KEEPALIVED_DBUS:glib2
endef
endef
CONFIGURE_ARGS+= \
+ --enable-json \
--with-init=SYSV \
- --disable-nftables \
--disable-track-process \
- --with-run-dir="/var/run"
+ --runstatedir="/var/run"
ifeq ($(CONFIG_KEEPALIVED_VRRP),)
CONFIGURE_ARGS += \
ifeq ($(CONFIG_KEEPALIVED_VRRP),y)
+
+ifeq ($(CONFIG_KEEPALIVED_NFTABLES),)
+CONFIGURE_ARGS += \
+ --disable-nftables
+endif
+
ifeq ($(CONFIG_KEEPALIVED_IPTABLES),)
CONFIGURE_ARGS += \
--disable-iptables
endif
endif # CONFIG_KEEPALIVED_SNMP_RFC3
-ifeq ($(CONFIG_KEEPALIVED_JSON),y)
-CONFIGURE_ARGS += \
- --enable-json
-endif
-
ifeq ($(CONFIG_KEEPALIVED_VRRP_AUTH),)
CONFIGURE_ARGS += \
--disable-vrrp-auth
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/keepalived \
$(1)/usr/sbin/
+ifeq ($(CONFIG_KEEPALIVED_LVS),y)
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/genhash \
$(1)/usr/bin/
+endif
$(INSTALL_DIR) $(1)/etc/keepalived
- $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/keepalived/keepalived.conf \
- $(1)/etc/keepalived/
+ $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/keepalived/keepalived.conf.sample \
+ $(1)/etc/keepalived/keepalived.conf
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/etc/uci-defaults/keepalived \
$(INSTALL_DATA) ./files/hotplug-user \
$(1)/etc/hotplug.d/keepalived/01-user
+ $(INSTALL_DIR) $(1)/usr/libexec/rpcd
+ $(INSTALL_BIN) ./files/usr/libexec/rpcd/keepalived \
+ $(1)/usr/libexec/rpcd/keepalived
+
ifneq ($(CONFIG_KEEPALIVED_SNMP_VRRP)$(CONFIG_KEEPALIVED_SNMP_CHECKER)$(CONFIG_KEEPALIVED_SNMP_RFC2)$(CONFIG_KEEPALIVED_SNMP_RFC3),)
$(INSTALL_DIR) $(1)/usr/share/snmp/mibs
endif
endef
+define Package/keepalived-sync
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=Keepalived Master and Backup Synchronization
+ DEPENDS:= +keepalived +rsync +inotifywait +sudo +coreutils-timeout
+endef
+
+define Package/keepalived-sync/description
+ Keepalived HA with Master to Backup files and data Synchronization
+endef
+
+define Package/keepalived-sync/conffiles
+/etc/keepalived/scripts
+/etc/keepalived/keys
+endef
+
+define Package/keepalived-sync/install
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/etc/init.d/keepalived-inotify \
+ $(1)/etc/init.d/keepalived-inotify
+
+ $(INSTALL_DIR) $(1)/usr/share/keepalived/scripts
+ $(INSTALL_BIN) ./files/usr/share/keepalived/scripts/rsync.sh \
+ $(1)/usr/share/keepalived/scripts/rsync.sh
+
+ $(INSTALL_DIR) $(1)/etc/keepalived/scripts
+ $(LN) /usr/share/keepalived/scripts/rsync.sh \
+ $(1)/etc/keepalived/scripts/rsync.sh
+
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) ./files/usr/bin/keepalived-rsync-inotify \
+ $(1)/usr/bin/keepalived-rsync-inotify
+
+ $(INSTALL_DIR) $(1)/lib/functions/keepalived
+ $(INSTALL_DATA) ./files/lib/functions/keepalived/hotplug.sh \
+ $(1)/lib/functions/keepalived/hotplug.sh
+ $(INSTALL_DATA) ./files/lib/functions/keepalived/common.sh \
+ $(1)/lib/functions/keepalived/common.sh
+
+ $(INSTALL_DIR) $(1)/usr/libexec/keepalived/rpc
+ $(INSTALL_DATA) ./files/usr/libexec/keepalived/rpc/sync.sh \
+ $(1)/usr/libexec/keepalived/rpc/sync.sh
+
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/keepalived
+ $(CP) ./files/etc/hotplug.d/keepalived/* \
+ $(1)/etc/hotplug.d/keepalived
+endef
+
+USER=keepalived
+USER_ID=60001
+USER_HOME=/usr/share/keepalived/rsync
+SUDO_DIR=/etc/sudoers.d
+SUDO_FILE=$(SUDO_DIR)/$(USER)
+KEYS_DIR=/etc/keepalived/keys
+
+define Package/keepalived-sync/postinst
+ #!/bin/sh
+
+ mkdir -p "$${IPKG_INSTROOT}/etc/uci-defaults"
+ DEFAULT_SCRIPT="$${IPKG_INSTROOT}/etc/uci-defaults/99-keepalived-sync"
+
+ cat << EOF > $${DEFAULT_SCRIPT}
+#!/bin/sh
+
+. /lib/functions.sh
+
+mkdir -p $(KEYS_DIR)
+
+group_add "$(USER)" "$(USER_ID)"
+user_add "$(USER)" "$(USER_ID)" "$(USER_ID)" "$(USER)" "$(USER_HOME)" "/bin/ash"
+
+mkdir -m 700 -p "$(USER_HOME)"
+mkdir -m 700 -p "$(USER_HOME)/.ssh"
+chown "$(USER)":"$(USER)" "$(USER_HOME)" -R
+
+[ ! -d "$(SUDO_DIR)" ] && mkdir "$(SUDO_DIR)"
+echo "$(USER) ALL= NOPASSWD:/usr/bin/rsync" > "$(SUDO_FILE)"
+EOF
+
+ [ -z "$${IPKG_INSTROOT}" ] && [ -f "$${DEFAULT_SCRIPT}" ] && sh "$${DEFAULT_SCRIPT}"
+
+ exit 0
+endef
+
+define Package/keepalived-sync/postrm
+ #!/bin/sh
+
+ [ -n "$${IPKG_INSTROOT}" ] && exit 0
+
+ [ -d "$(KEYS_DIR)" ] && rm -rf "$(KEYS_DIR)"
+ [ -d "$(USER_HOME)" ] && rm -rf "$(USER_HOME)"
+ [ -f "$(SUDO_FILE)" ] && rm -f "$(SUDO_FILE)"
+
+ sed -i -e "/^$(USER):/d" /etc/passwd /etc/shadow /etc/group
+
+ exit 0
+endef
+
$(eval $(call BuildPackage,keepalived))
+$(eval $(call BuildPackage,keepalived-sync))