NAME

Net::ISC::DHCPd::OMAPI - Talk to a dhcp server

SYNOPSIS

my $omapi = Net::ISC::DHCPd::OMAPI->new(
                key => "dhcpd secret",
            );

# connect is lazy
$omapi->connect

my $lease = $omapi->new_object(lease => (
                ip_address => "10.19.83.200",
            ));

if($lease->read) {
    printf("Got hardware_address=%s from ip_address=%s\n",
        $lease->hardware_address,
        $lease->ip_address,
    );
}

DESCRIPTION

This module provides an API to query and possible change the ISC DHCPd server. The module use OMAPI (Object Management API) which does not require the server to be restarted for changes to apply. It does unfortunately support the protocol natively, but instead fork omshell(1) which this module read and write commands to.

OMAPI is simply a communications mechanism that allows you to manipulate objects, which is stored in the dhcpd.leases file.

See subclasses for more information about the different objects you can manipulate: Net::ISC::DHCPd::OMAPI::Failover, Net::ISC::DHCPd::OMAPI::Group, Net::ISC::DHCPd::OMAPI::Host, and Net::ISC::DHCPd::OMAPI::Lease.

ENVIRONMENT VARIABLES

  • DHCP_OMAPI_DEBUG=1

    This variable will enable debug output.

ATTRIBUTES

server

This attribute is read-only and holds a string describing the remote dhcpd server address. Default value is "127.0.0.1".

port

This attribute is read-only and holds an integer representing the remote dhcpd server port. Default value is "7911".

key

This attribute is read-only and holds a string representing the server secret key. It is in the format $name $secret and the default value is an empty string. An empty string is used for servers without a secret to log in.

errstr

Holds the last know error as a plain string.

METHODS

connect

$bool = $self->connect;

Will open a connection to the dhcp server. Check "errstr" on failure. A connection means starting the program omshell(1) and trying to log in, if the dhcpd "key" is set.

disconnect

$bool = $self->disconnect;

Will disconnect from the server. This means killing the omshell(1) program, which then actually will make sure the connection is shut down.

new_object

$object = $self->new_object($type => %constructor_args);

This method will create a new OMAPI object, which can be used to query and/or manipulate the running dhcpd server.

$type can be "group", "host", or "lease". Will return a new config object.

Example, with $type='host':

Net::ISC::DHCPd::Config::Host->new(%constructor_args);

COPYRIGHT & LICENSE

AUTHOR

See Net::ISC::DHCPd.