diff --git a/capsulflask/shell_scripts/ip-dhcp-host.sh b/capsulflask/shell_scripts/ip-dhcp-host.sh index a4ae0e0..65f496e 100755 --- a/capsulflask/shell_scripts/ip-dhcp-host.sh +++ b/capsulflask/shell_scripts/ip-dhcp-host.sh @@ -12,4 +12,13 @@ ipv4_address="$4" [ "$mac_address" = '' ] && printf 'you must set $mac_address (3rd arg)\n' && exit 1 [ "$ipv4_address" = '' ] && printf 'you must set $ipv4_address (4th arg)\n' && exit 1 +# for some reason libvirt appears to remember every dhcp lease even after it has expired. +# adding a new ip-dhcp-host will fail if there already is one with the same ip address. +# so we will try to delete any that already exist with that IP address just in case! +if [ "$action" == 'add' ]; then + printf "trying to delete any existing (probably expired) dhcp associations for $ipv4_address..." + virsh net-update "$network_name" delete ip-dhcp-host "" --live --config || true +fi + +printf "adding $mac_address --> $ipv4_address to $network_name" virsh net-update "$network_name" "$action" ip-dhcp-host "" --live --config