aboutsummaryrefslogtreecommitdiffstats
path: root/tools/dlink-ng2dns.pl
blob: 157d43b51cb573d6d6726c1ed3f8087c3d98a841 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/perl
use strict;

BEGIN {
        require "include/config.pm";
        eval {
                require "include/config.local.pm";
        };
}

use Net::IP;
use Getopt::Long;

my ($delete);

if (@ARGV > 0) {
        GetOptions(
        'del|delete'            => \$delete,
        )
}

print "server $nms::config::pri_v4\n";

while (<STDIN>)
{
	my ( $sysname, $distro, $ponum, $cidr, $ipaddr, $gwaddr, $v6addr, @ports ) = split;
	
	
	my $ip = new Net::IP($ipaddr);

	my $v4gw = new Net::IP($gwaddr);

	( my $gw6 = $v6addr ) =~ s/\/.*//;
	my $v6gw = new Net::IP($gw6);

	my $fqdn = $sysname . "." . $nms::config::tgname . ".gathering.org.";
	my $sw_fqdn = $sysname . "-sw." . $fqdn;
	my $text_info = $distro . " - " . join(' + ', @ports) . ", po" . $ponum . ", gwaddr " . $gwaddr;

	# A-record to the switch
	print "prereq nxdomain sw." . $fqdn . "\n" unless $delete;
	print "update add sw." . $fqdn . " \t 3600 IN A \t " . $ipaddr . "\n" unless $delete;
	print "update delete sw." . $fqdn . " \t IN A\n" if $delete;
	print "send\n";

	# PTR to the switch
	print "prereq nxdomain " . $ip->reverse_ip() . "\n" unless $delete;
	print "update add " . $ip->reverse_ip() . " \t 3600 IN PTR \t sw." . $fqdn . "\n" unless $delete;
	print "update delete " . $ip->reverse_ip() . " \t IN PTR\n" if $delete;
	print "send\n";

	# TXT-record with details
	print "update delete sw." . $fqdn . " IN TXT\n" unless $delete;
	print "update add sw." . $fqdn . " \t 3600 IN TXT \t \"" . $text_info . "\"\n" unless $delete;
	print "update delete sw." . $fqdn . " \t IN TXT\n" if $delete;
	print "send\n";

	# A and AAAA-record to the gateway/router
	print "prereq nxrrset gw." . $fqdn . " IN A\n" unless $delete;
        print "update add gw." . $fqdn . " \t 3600 IN A \t " . $gwaddr . "\n" unless $delete;
	print "update delete gw." . $fqdn . " \t IN A\n" if $delete;
        print "send\n";
	print "prereq nxrrset gw." . $fqdn . " IN AAAA\n" unless $delete;
        print "update add gw." . $fqdn . " \t 3600 IN AAAA \t " . $gw6 . "\n" unless $delete;
	print "update delete gw." . $fqdn . " \t IN AAAA\n" if $delete;
        print "send\n";

	# PTR to the gateway/router
	print "prereq nxdomain " . $v4gw->reverse_ip() . "\n" unless $delete;
        print "update add " . $v4gw->reverse_ip() . " \t 3600 IN PTR \t gw." . $fqdn . "\n" unless $delete;
	print "update delete " . $v4gw->reverse_ip() . " \t IN PTR\n" if $delete;
        print "send\n";
	print "prereq nxdomain " . $v6gw->reverse_ip() . "\n" unless $delete;
        print "update add " . $v6gw->reverse_ip() . " \t 3600 IN PTR \t gw." . $fqdn . "\n" unless $delete;
	print "update delete " . $v6gw->reverse_ip() . " \t IN PTR\n" if $delete;
        print "send\n";
}