mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-27 10:31:38 +08:00
🤞 Sync 2026-03-06 20:21:12
This commit is contained in:
parent
383bda44e8
commit
54e9196bd1
@ -7,8 +7,8 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=floatip
|
||||
PKG_VERSION:=1.0.10
|
||||
PKG_RELEASE:=1
|
||||
PKG_VERSION:=1.1.0
|
||||
PKG_RELEASE:=2
|
||||
PKG_MAINTAINER:=jjm2473 <jjm2473@gmail.com>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@ -13,7 +13,7 @@ enable_lan_ping() {
|
||||
start_service() {
|
||||
config_load floatip
|
||||
config_get_bool enabled "main" enabled 0
|
||||
ifdown floatip
|
||||
/usr/libexec/floatip.sh down
|
||||
[[ "$enabled" = 1 ]] || {
|
||||
enable_lan_ping
|
||||
return 0
|
||||
@ -62,15 +62,15 @@ start_service() {
|
||||
return 0
|
||||
}
|
||||
procd_open_instance
|
||||
procd_set_param command /usr/libexec/floatip.sh "$lan_iface" "$set_prefix"
|
||||
procd_set_param command /usr/libexec/floatip.sh up "$lan_iface" "$set_prefix"
|
||||
procd_set_param stderr 1
|
||||
procd_set_param file /etc/config/floatip
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
service_stopped() {
|
||||
/usr/libexec/floatip.sh down
|
||||
enable_lan_ping
|
||||
ifdown floatip
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
LOCK_FILE="/var/lock/floatip_loop.lock"
|
||||
LOCK_FILE_UPDOWN="/var/lock/floatip_updown.lock"
|
||||
|
||||
DEFAULT_PREFIX=24
|
||||
|
||||
@ -19,28 +20,34 @@ host_alive() {
|
||||
# arping -f -q -b -c 2 -w 2 -i 1 -I $LAN_IFACE "$1"
|
||||
}
|
||||
|
||||
try_lock_updown() {
|
||||
exec 201>"$LOCK_FILE_UPDOWN"
|
||||
flock -x 201 && return 0
|
||||
return 1
|
||||
}
|
||||
|
||||
unlock_updown() {
|
||||
flock -u 201
|
||||
}
|
||||
|
||||
set_up() {
|
||||
local ipaddr="$1"
|
||||
try_lock_updown || return 1
|
||||
echo "set my floatip to $ipaddr" >&2
|
||||
if ! uci -q get network.floatip.ipaddr | grep -Fwq $ipaddr; then
|
||||
if [[ "x$(uci -q get network.floatip)" = xinterface ]]; then
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
set network.floatip.device=$LAN_IFACE
|
||||
delete network.floatip.ipaddr
|
||||
add_list network.floatip.ipaddr=$ipaddr
|
||||
EOF
|
||||
else
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
set network.floatip=interface
|
||||
set network.floatip.proto=static
|
||||
set network.floatip.device=$LAN_IFACE
|
||||
add_list network.floatip.ipaddr=$ipaddr
|
||||
set network.floatip.auto=0
|
||||
EOF
|
||||
fi
|
||||
uci commit network
|
||||
ip addr add "$ipaddr" dev "$LAN_IFACE"
|
||||
echo "ip addr del \"$ipaddr\" dev \"$LAN_IFACE\"" > /tmp/run/floatip_cleanup.sh
|
||||
unlock_updown
|
||||
return 0
|
||||
}
|
||||
|
||||
set_down() {
|
||||
try_lock_updown || return 1
|
||||
if [ -f /tmp/run/floatip_cleanup.sh ]; then
|
||||
sh -c '. /tmp/run/floatip_cleanup.sh'
|
||||
rm -f /tmp/run/floatip_cleanup.sh
|
||||
fi
|
||||
ifup floatip
|
||||
unlock_updown
|
||||
return 0
|
||||
}
|
||||
|
||||
set_lan_ping() {
|
||||
@ -112,7 +119,7 @@ fallback_loop() {
|
||||
if [[ $found_alive = 1 ]]; then
|
||||
if [[ $floatip_up = 1 ]]; then
|
||||
echo "set down floatip" >&2
|
||||
ifdown floatip
|
||||
set_down || exit 1
|
||||
floatip_up=0
|
||||
else
|
||||
dead_counter=0
|
||||
@ -130,7 +137,7 @@ fallback_loop() {
|
||||
continue
|
||||
fi
|
||||
echo "no host alive, set up floatip $ipaddr" >&2
|
||||
set_up "$ipaddr"
|
||||
set_up "$ipaddr" || exit 1
|
||||
floatip_up=1
|
||||
sleep 5
|
||||
done
|
||||
@ -182,7 +189,7 @@ main_loop() {
|
||||
set_lan_ping
|
||||
if [[ $found_alive = 0 ]]; then
|
||||
echo "no host alive, and url passed, set up floatip $ipaddr" >&2
|
||||
set_up "$ipaddr"
|
||||
set_up "$ipaddr" || exit 1
|
||||
floatip_up=1
|
||||
fi
|
||||
else
|
||||
@ -198,7 +205,7 @@ main_loop() {
|
||||
continue
|
||||
fi
|
||||
echo "set down floatip, and disable ping" >&2
|
||||
ifdown floatip
|
||||
set_down || exit 1
|
||||
set_lan_ping 0
|
||||
floatip_up=0
|
||||
fi
|
||||
@ -219,6 +226,12 @@ main() {
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "$1" = "down" ]]; then
|
||||
set_down
|
||||
exit 0
|
||||
fi
|
||||
shift
|
||||
|
||||
try_lock() {
|
||||
exec 200>"$LOCK_FILE"
|
||||
flock -x 200 && return 0
|
||||
|
||||
@ -13,6 +13,11 @@ uci -q batch <<-EOF >/dev/null
|
||||
commit ucitrack
|
||||
EOF
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete network.floatip
|
||||
commit network
|
||||
EOF
|
||||
|
||||
# don't change role if enabled
|
||||
[[ "`uci -q get floatip.main.enabled`" = "1" ]] && exit 0
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user