mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-15 18:03:30 +00:00
56 lines
955 B
Bash
Executable File
56 lines
955 B
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
# OpenWrt 静态ARP绑定 启动脚本
|
|
# Copyright (C) 2015 GuoGuo <gch981213@gmail.com>
|
|
|
|
. /lib/functions.sh
|
|
. /lib/functions/network.sh
|
|
|
|
#清除单接口ARP
|
|
#参数:$1:接口名称
|
|
if_clean_arp()
|
|
{
|
|
[ -z "$1" ] && return
|
|
ip link set arp off dev $1
|
|
ip link set arp on dev $1
|
|
}
|
|
|
|
#清除系统所有ARP
|
|
#参数:无
|
|
clean_arp()
|
|
{
|
|
for i in $(ls /sys/class/net)
|
|
do
|
|
if_clean_arp $i
|
|
done
|
|
}
|
|
|
|
#添加静态ARP绑定
|
|
#参数:$1:IP地址 $2:MAC地址 $3:接口名称
|
|
add_arp()
|
|
{
|
|
[ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] && return
|
|
echo "Adding ARP:IP Addr:$1 MAC Addr:$2 Interface:$3"
|
|
ip neigh add $1 lladdr $2 nud permanent dev $3
|
|
}
|
|
|
|
arpconf_foreach()
|
|
{
|
|
config_get ipaddr "$1" 'ipaddr'
|
|
config_get macaddr "$1" 'macaddr'
|
|
config_get ifname "$1" 'ifname'
|
|
[ -z "$ifname" ] && return
|
|
add_arp $ipaddr $macaddr $ifname
|
|
}
|
|
|
|
start()
|
|
{
|
|
config_load 'arpbind'
|
|
config_foreach arpconf_foreach 'arpbind'
|
|
}
|
|
|
|
stop()
|
|
{
|
|
clean_arp
|
|
}
|
|
|