Fix dhcp issue when replace dnsmasq

This commit is contained in:
Nick Peng
2019-01-22 23:55:15 +08:00
parent 050aedadd4
commit 0a236acc56

View File

@@ -75,23 +75,76 @@ restart_dnsmasq()
$DNSMASQ_CMD
}
get_server_ip()
{
IPS="`ifconfig | grep "inet addr" | grep -v ":127" | grep "Bcast" | awk '{print $2}' | awk -F: '{print $2}'`"
LOCAL_SERVER_IP=""
for IP in $IPS
do
N=3
while [ $N -gt 0 ]
do
ADDR=`echo $IP | awk -F. "{for(i=1;i<=$N;i++)printf \\$i\".\"}"`
grep "dhcp-range=" $DNSMASQ_CONF | grep lan | grep $ADDR >/dev/null 2>&1
if [ $? -eq 0 ]; then
LOCAL_SERVER_IP="$IP"
return 0
fi
N="`expr $N - 1`"
done
done
return 1
}
set_dnsmasq()
{
grep "^port *=$SMARTDNS_PORT" $DNSMASQ_CONF > /dev/null 2>&1
local RESTART_DNSMASQ=0
local LOCAL_SERVER_IP=""
get_server_ip
if [ "$LOCAL_SERVER_IP" ]; then
grep "dhcp-option *=" $DNSMASQ_CONF | grep "lan,6,$LOCAL_SERVER_IP" > /dev/null 2>&1
if [ $? -ne 0 ]; then
sed -i "/^dhcp-option *=lan,6,/d" $DNSMASQ_CONF
echo "dhcp-option=lan,6,$LOCAL_SERVER_IP" >> $DNSMASQ_CONF
RESTART_DNSMASQ=1
fi
fi
grep "^port *=0" $DNSMASQ_CONF > /dev/null 2>&1
if [ $? -ne 0 ]; then
sed -i "/^port *=/d" $DNSMASQ_CONF
echo "port=$SMARTDNS_PORT" >> $DNSMASQ_CONF
restart_dnsmasq
echo "port=0" >> $DNSMASQ_CONF
RESTART_DNSMASQ=1
fi
if [ $RESTART_DNSMASQ -ne 0 ]; then
restart_dnsmasq
fi
}
clear_dnsmasq()
{
local RESTART_DNSMASQ=0
local LOCAL_SERVER_IP=""
get_server_ip
if [ "$LOCAL_SERVER_IP" ]; then
grep "dhcp-option *=" $DNSMASQ_CONF | grep "lan,6,$LOCAL_SERVER_IP" > /dev/null 2>&1
if [ $? -eq 0 ]; then
sed -i "/^dhcp-option *=lan,6,/d" $DNSMASQ_CONF
RESTART_DNSMASQ=1
fi
fi
grep "^port *=" $DNSMASQ_CONF > /dev/null 2>&1
if [ $? -eq 0 ]; then
sed -i "/^port *=/d" $DNSMASQ_CONF
restart_dnsmasq
RESTART_DNSMASQ=1
fi
if [ $RESTART_DNSMASQ -ne 0 ]; then
restart_dnsmasq
fi
}