From: Alexandre Derumier Date: Sat, 18 Nov 2023 14:13:12 +0000 (+0100) Subject: dnsmasq: enable dbus && purge old ip lease on reservation X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=e6211baee935fec69d4f234ffe2e7301e80a0969;p=matthieu%2Fpve-network.git dnsmasq: enable dbus && purge old ip lease on reservation Signed-off-by: Alexandre Derumier --- diff --git a/src/PVE/Network/SDN/Dhcp/Dnsmasq.pm b/src/PVE/Network/SDN/Dhcp/Dnsmasq.pm index 652b146..b469272 100644 --- a/src/PVE/Network/SDN/Dhcp/Dnsmasq.pm +++ b/src/PVE/Network/SDN/Dhcp/Dnsmasq.pm @@ -9,6 +9,7 @@ use Net::IP qw(:PROC); use PVE::Tools qw(file_set_contents run_command lock_file); use File::Copy; +use Net::DBus; my $DNSMASQ_CONFIG_ROOT = '/etc/dnsmasq.d'; my $DNSMASQ_DEFAULT_ROOT = '/etc/default'; @@ -77,6 +78,16 @@ sub add_ip_mapping { my $service_name = "dnsmasq\@$dhcpid"; PVE::Tools::run_command(['systemctl', 'reload', $service_name]) if $change; + + #update lease as ip could still be associated to an old removed mac + my $bus = Net::DBus->system(); + my $dnsmasq = $bus->get_service("uk.org.thekelleys.dnsmasq.$dhcpid"); + my $manager = $dnsmasq->get_object("/uk/org/thekelleys/dnsmasq","uk.org.thekelleys.dnsmasq.$dhcpid"); + + my @hostname = unpack("C*", "*"); + $manager->AddDhcpLease($ip4, $mac, \@hostname, undef, 0, 0, 0) if $ip4; + $manager->AddDhcpLease($ip6, $mac, \@hostname, undef, 0, 0, 0) if $ip6; + } sub configure_subnet { @@ -136,7 +147,7 @@ sub before_configure { my $default_config = <