#!/usr/bin/env perl -w # # (c) 2000-2003 Jos Backus # # usage: dnsnotify [-s srcaddr] zone slave [...] # example: dnsnotify example.org 1.2.3.4 1.2.3.5 use Net::DNS; use Data::Dumper; use strict; my $usage = "usage: dnsnotify [-s srcaddr] zone slave [...]\n"; my $srcaddr; { last unless defined $ARGV[0] and $ARGV[0] =~ /^-/; $_ = shift; last if /--/; $srcaddr = shift, redo if /-s/; die "bad flag: $_"; } my $zone = shift; my @slaves = @ARGV; die $usage unless $zone && @slaves; my $type = "SOA"; my $class = "IN"; my $packet = new Net::DNS::Packet($zone, $type, $class); die unless defined $packet; $packet->header->opcode("NS_NOTIFY_OP"); $packet->header->aa(1); $packet->header->rd(0); $packet->print; my $res = new Net::DNS::Resolver; $res->srcaddr($srcaddr) if $srcaddr; my $reply; for (@slaves) { $res->nameservers($_); print Dumper($packet); $reply = $res->send($packet); if (defined $reply) { $reply->print; } else { print "\n;; TIMED OUT\n"; } } exit 0;