op-packages/luci-app-arpbind/root/etc/init.d/arpbind
github-actions[bot] 32600acc60 🌴 Sync 2026-03-05 23:51:42
2026-03-05 23:51:42 +08:00

49 lines
965 B
Bash
Executable File

#!/bin/sh /etc/rc.common
# OpenWrt 静态ARP绑定 启动脚本
# Copyright (C) 2015 GuoGuo <gch981213@gmail.com>
START=80
STOP=20
USE_PROCD=1
setup_arp() {
local cfg="$1"
local enabled ipaddr macaddr ifname
config_get_bool enabled "$cfg" "enabled" "1"
[ "$enabled" -eq "1" ] || return 1
config_get ipaddr "$cfg" "ipaddr"
config_get macaddr "$cfg" "macaddr"
config_get ifname "$cfg" "ifname"
if [ -z "$ipaddr" ] || [ -z "$macaddr" ] || [ -z "$ifname" ]; then
return 1
fi
ip neigh add "$ipaddr" lladdr "$macaddr" nud permanent dev "$ifname" || \
ip neigh change "$ipaddr" lladdr "$macaddr" nud permanent dev "$ifname"
}
start_service() {
config_load "arpbind"
config_foreach setup_arp "arpbind"
}
stop_service() {
ls "/sys/class/net" | while IFS= read -r ifname; do
ip link set arp off dev "$ifname"
ip link set arp on dev "$ifname"
done
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_reload_trigger "arpbind"
}