mirror of
git://git.proxmox.com/git/pve-network.git
synced 2025-04-30 11:27:11 +02:00
dhcp: add abstract class for DHCP plugins
This abstract class provides several hooks that should be called during the config generation process, they expose the functionality for the different configuration tasks required from the DHCP plugins. add_ip_mapping Adds a mapping from MAC address to an IP for a given DHCP server. The DHCP server will then always assign the given IP address to the MAC. del_ip_mapping Deletes all mappings for a given MAC address for a given DHCP server. before_regenerate Should be called before the plugin does any configuration tasks. The main usage for this hook is tearing down old instances. after_regenerate Should be called after the plugin has finished generating any configuration. The main usage for this hook is to perform cleanup and restart / reload services. before_configure Should be called before creating the configuration for a specific DHCP instance, as defined in the dhcp.cfg. This can be used for performing instance-specific setup. after_configure Should be called after the configuration for a specific DHCP instance, as defined in the dhcp.cfg. This will mainly be used for enabling and restarting / reloading a specific instance of a DHCP server. configure_subnet This function configures the settings for a specific subnet (that can contain multiple DHCP ranges). This sets global settings for a specific subnet such as DNS server or gateway. configure_range This configures a DHCP range that is available for a given Subnet. Co-Authored-By: Alexandre Derumier <aderumier@odiso.com> Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
This commit is contained in:
parent
7ba1781725
commit
b240ff0b1f
8
src/PVE/Network/SDN/Dhcp/Makefile
Normal file
8
src/PVE/Network/SDN/Dhcp/Makefile
Normal file
|
@ -0,0 +1,8 @@
|
|||
SOURCES=Plugin.pm Dnsmasq.pm
|
||||
|
||||
|
||||
PERL5DIR=${DESTDIR}/usr/share/perl5
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
for i in ${SOURCES}; do install -D -m 0644 $$i ${PERL5DIR}/PVE/Network/SDN/Dhcp/$$i; done
|
65
src/PVE/Network/SDN/Dhcp/Plugin.pm
Normal file
65
src/PVE/Network/SDN/Dhcp/Plugin.pm
Normal file
|
@ -0,0 +1,65 @@
|
|||
package PVE::Network::SDN::Dhcp::Plugin;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use PVE::Cluster;
|
||||
use PVE::JSONSchema qw(get_standard_option);
|
||||
|
||||
use base qw(PVE::SectionConfig);
|
||||
|
||||
my $defaultData = {
|
||||
propertyList => {
|
||||
type => {
|
||||
description => "Plugin type.",
|
||||
format => 'pve-configid',
|
||||
type => 'string',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
sub private {
|
||||
return $defaultData;
|
||||
}
|
||||
|
||||
sub add_ip_mapping {
|
||||
my ($class, $dhcp_config, $mac, $ip) = @_;
|
||||
die 'implement in sub class';
|
||||
}
|
||||
|
||||
sub del_ip_mapping {
|
||||
my ($class, $dhcp_config, $mac) = @_;
|
||||
die 'implement in sub class';
|
||||
}
|
||||
|
||||
sub configure_range {
|
||||
my ($class, $dhcp_config, $subnet_config, $range_config) = @_;
|
||||
die 'implement in sub class';
|
||||
}
|
||||
|
||||
sub configure_subnet {
|
||||
my ($class, $dhcp_config, $subnet_config) = @_;
|
||||
die 'implement in sub class';
|
||||
}
|
||||
|
||||
sub before_configure {
|
||||
my ($class, $dhcp_config) = @_;
|
||||
die 'implement in sub class';
|
||||
}
|
||||
|
||||
sub after_configure {
|
||||
my ($class, $dhcp_config) = @_;
|
||||
die 'implement in sub class';
|
||||
}
|
||||
|
||||
sub before_regenerate {
|
||||
my ($class) = @_;
|
||||
die 'implement in sub class';
|
||||
}
|
||||
|
||||
sub after_regenerate {
|
||||
my ($class, $dhcp_config) = @_;
|
||||
die 'implement in sub class';
|
||||
}
|
||||
|
||||
1;
|
|
@ -10,4 +10,5 @@ install:
|
|||
make -C Zones install
|
||||
make -C Ipams install
|
||||
make -C Dns install
|
||||
make -C Dhcp install
|
||||
|
||||
|
|
Loading…
Reference in a new issue