There is a relevant option for DHCPD (from the dhcpd.conf man page):
The one-lease-per-client statement
one-lease-per-client flag;
If this flag is enabled, whenever a client sends a DHCPREQUEST for a
particular lease, the server will automatically free any other leases
the client holds. This presumes that when the client sends a DHCPRE-
QUEST, it has forgotten any lease not mentioned in the DHCPREQUEST -
i.e., the client has only a single network interface and it does not
remember leases it's holding on networks to which it is not currently
attached. Neither of these assumptions are guaranteed or provable,
so we urge caution in the use of this statement.
There is a relevant option for DHCPD (from the dhcpd.conf man page): per-client statement
The one-lease-
If this flag is enabled, whenever a client sends a DHCPREQUEST for a
particular lease, the server will automatically free any other leases
the client holds. This presumes that when the client sends a DHCPRE-
QUEST, it has forgotten any lease not mentioned in the DHCPREQUEST -
i.e., the client has only a single network interface and it does not
remember leases it's holding on networks to which it is not currently
attached. Neither of these assumptions are guaranteed or provable,
so we urge caution in the use of this statement.