The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Net::RNDC - Speak the BIND Remote Name Daemon Control (RNDC) V1 protocol

VERSION

version 0.003

SYNOPSIS

Simple synchronous command/response:

use Net::RNDC;

my $rndc = Net::RNDC->new(
  host => '127.0.0.1',
  port => 953,         # Defaults to 953
  key  => 'abcd',
);

if (!$rndc->do('status')) {
  die "RNDC failed: " . $rndc->error;
}

print $rndc->response;

All arguments to new() are allowed in do:

my $rndc = Net::RNDC->new();

my $key = 'abcd';

for my $s (qw(127.0.0.1 127.0.0.2)) {
  if (!$rndc->do('status', key => $key, host => $s)) {
    my $err = $rndc->error;
  } else {
    my $resp = $rndc->response;
  }
}

DESCRIPTION

This package provides a synchronous, easy to use interface to the RNDC V1 protocol. For more mid-level control, see Net::RNDC::Session, and for absolute control, Net::RNDC::Packet.

Constructor

new

Net::RNDC->new(%args);

Optional Arguments:

  • key - The Base64 encoded HMAC-MD5 private key to use.

  • host - The hostname/IP of the remote server to connect to. If IO::Socket::INET6 is installed, IPv6 support will be enabled.

  • port - The port to connect to. Defaults to 953.

Methods

do

$rndc->do($command);

$rndc->do($commands, %args);

Connects to the remote nameserver configured in "new" or passed in to %args and sends the specified command.

Returns 1 on success, 0 on failure.

Arguments:

  • $command - The RNDC command to run. For example: status.

Optional Arguments - See "new" above.

error

$rndc->error;

Returns the last string error from a call to "do", if any. Only set if "do" returns 0.

response

$rndc->response;

Returns the last string response from a call to "do", if any. Only set if "do" returns 1.

SEE ALSO

Net::RNDC::Session - Manage the 4-packet RNDC session

Net::RNDC::Packet - Low level RNDC packet manipulation.

AUTHOR

Matthew Horsfall (alh) <WolfSage@gmail.com>

LICENSE

You may distribute this code under the same terms as Perl itself.