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