mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-5986: Make dnsmasq handle dnsmasq.leases when dhcp_release is available
The original issue has been exposed due to CloudStack VR would modify the
dnsmasq.leases, thus make it unsync with dnsmasq's memory lease.
Make the modification to let dnsmasq handle the lease file if dhcp_release is
available.
(cherry picked from commit 441d02dd40)
Signed-off-by: Animesh Chaturvedi <animesh@apache.org>
This commit is contained in:
parent
45e45b930a
commit
6f7653d56a
|
|
@ -750,6 +750,16 @@ setup_dnsmasq() {
|
|||
sed -i -e "/^dhcp-client-update/d" /etc/dnsmasq.conf
|
||||
echo 'dhcp-client-update' >> /etc/dnsmasq.conf
|
||||
fi
|
||||
|
||||
command -v dhcp_release > /dev/null 2>&1
|
||||
no_dhcp_release=$?
|
||||
if [ $no_dhcp_release -eq 0 -a -z "$ETH0_IP6" ]
|
||||
then
|
||||
echo 1 > /var/cache/cloud/dnsmasq_managed_lease
|
||||
sed -i -e "/^leasefile-ro/d" /etc/dnsmasq.conf
|
||||
else
|
||||
echo 0 > /var/cache/cloud/dnsmasq_managed_lease
|
||||
fi
|
||||
}
|
||||
|
||||
setup_sshd(){
|
||||
|
|
|
|||
|
|
@ -80,8 +80,7 @@ fi
|
|||
grep "redundant_router=1" /var/cache/cloud/cmdline > /dev/null
|
||||
no_redundant=$?
|
||||
|
||||
command -v dhcp_release > /dev/null 2>&1
|
||||
no_dhcp_release=$?
|
||||
dnsmasq_managed_lease=`cat /var/cache/cloud/dnsmasq_managed_lease`
|
||||
|
||||
wait_for_dnsmasq () {
|
||||
local _pid=$(pidof dnsmasq)
|
||||
|
|
@ -96,12 +95,7 @@ wait_for_dnsmasq () {
|
|||
return 1
|
||||
}
|
||||
|
||||
if [ $ipv6 ]
|
||||
then
|
||||
no_dhcp_release=1
|
||||
fi
|
||||
|
||||
if [ $no_dhcp_release -eq 0 ]
|
||||
if [ $dnsmasq_managed_lease ]
|
||||
then
|
||||
#release previous dhcp lease if present
|
||||
logger -t cloud "edithosts: releasing $ipv4"
|
||||
|
|
@ -145,27 +139,30 @@ then
|
|||
fi
|
||||
fi
|
||||
|
||||
#delete leases to supplied mac and ip addresses
|
||||
if [ $ipv4 ]
|
||||
if [ $dnsmasq_managed_lease -eq 0 ]
|
||||
then
|
||||
sed -i /$mac/d $DHCP_LEASES
|
||||
sed -i /"$ipv4 "/d $DHCP_LEASES
|
||||
fi
|
||||
if [ $ipv6 ]
|
||||
then
|
||||
sed -i /$duid/d $DHCP_LEASES
|
||||
sed -i /"$ipv6 "/d $DHCP_LEASES
|
||||
fi
|
||||
sed -i /"$host "/d $DHCP_LEASES
|
||||
#delete leases to supplied mac and ip addresses
|
||||
if [ $ipv4 ]
|
||||
then
|
||||
sed -i /$mac/d $DHCP_LEASES
|
||||
sed -i /"$ipv4 "/d $DHCP_LEASES
|
||||
fi
|
||||
if [ $ipv6 ]
|
||||
then
|
||||
sed -i /$duid/d $DHCP_LEASES
|
||||
sed -i /"$ipv6 "/d $DHCP_LEASES
|
||||
fi
|
||||
sed -i /"$host "/d $DHCP_LEASES
|
||||
|
||||
#put in the new entry
|
||||
if [ $ipv4 ]
|
||||
then
|
||||
echo "0 $mac $ipv4 $host *" >> $DHCP_LEASES
|
||||
fi
|
||||
if [ $ipv6 ]
|
||||
then
|
||||
echo "0 $duid $ipv6 $host *" >> $DHCP_LEASES
|
||||
#put in the new entry
|
||||
if [ $ipv4 ]
|
||||
then
|
||||
echo "0 $mac $ipv4 $host *" >> $DHCP_LEASES
|
||||
fi
|
||||
if [ $ipv6 ]
|
||||
then
|
||||
echo "0 $duid $ipv6 $host *" >> $DHCP_LEASES
|
||||
fi
|
||||
fi
|
||||
|
||||
#edit hosts file as well
|
||||
|
|
@ -215,7 +212,7 @@ pid=$(pidof dnsmasq)
|
|||
if [ "$pid" != "" ]
|
||||
then
|
||||
# use SIGHUP to avoid service outage if dhcp_release is available.
|
||||
if [ $no_dhcp_release -eq 0 ]
|
||||
if [ $dnsmasq_managed_lease ]
|
||||
then
|
||||
kill -HUP $pid
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in New Issue