aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtools/generate-rowdns.pl87
1 files changed, 45 insertions, 42 deletions
diff --git a/tools/generate-rowdns.pl b/tools/generate-rowdns.pl
index d58991f..c0a5e84 100755
--- a/tools/generate-rowdns.pl
+++ b/tools/generate-rowdns.pl
@@ -3,9 +3,6 @@ use strict;
BEGIN {
require "include/config.pm";
- eval {
- require "include/config.local.pm";
- };
}
use Net::IP;
@@ -20,63 +17,69 @@ if (@ARGV > 0) {
}
# Use this to generate nsupdate for all edge switches
-# Expects input from switches.txt (run multiple times if several switches.txt)
-
-# TODO: Needs to be rewritten to use new switches.txt
+# Expects joined input from switches.txt and patchlist.txt
+## paste -d' ' switches.txt <(cut -d' ' -f3- patchlist.txt) > working-area/switches-patchlist.txt
print "server $nms::config::pri_v4\n";
-while (<STDIN>)
-{
- my ( $sysname, $distro, $ponum, $cidr, $ipaddr, $gwaddr, $v6addr, @ports ) = split;
+while (<STDIN>){
+ # e73-4 151.216.160.64/26 2a02:ed02:160b::/64 151.216.181.141/26 2a02:ed02:181c::141/64 1734 distro6 @ports
+ my ( $swname, $client_v4, $client_v6, $sw_v4, $sw_v6, $vlan, $distro, @ports ) = split;
+ (my $v4gw = NetAddr::IP->new($client_v4)->first()) =~ s/\/[0-9]{1,2}//;
+ (my $v6gw = NetAddr::IP->new($client_v6)->first()) =~ s/\/[0-9]{1,2}//;
- 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;
+ (my $v4mgmt = $sw_v4) = s/\/[0-9]{1,2}//;
+ (my $v6mgmt = $sw_v6) = s/\/[0-9]{1,2}//;
+
+ my $fqdn = $swname . "." . $nms::config::tgname . ".gathering.org.";
+ my $sw_fqdn = "sw." . $fqdn;
+ my $gw_fqdn = "gw." . $fqdn;
+ my $text_info = $distro . "(VLAN $vlan): " . join(' + ', @ports);
+
+ # A and AAAA-record to the switch
+ print "prereq nxdomain $sw_fqdn\n" unless $delete;
+ print "update add $sw_fqdn \t 3600 IN A \t $v4mgmt\n" unless $delete;
+ print "update delete $sw_fqdn \t IN A\n" if $delete;
+ print "send\n";
+ print "prereq nxdomain $sw_fqdn\n" unless $delete;
+ print "update add $sw_fqdn \t 3600 IN AAAA \t $v6mgmt\n" unless $delete;
+ print "update delete $sw_fqdn \t IN AAAA\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 "prereq nxdomain " . Net::IP->new($v4mgmt)->reverse_ip() . "\n" unless $delete;
+ print "update add " . Net::IP->new($v4mgmt)->reverse_ip() . " \t 3600 IN PTR \t $sw_fqdn\n" unless $delete;
+ print "update delete " . Net::IP->new($v4mgmt)->reverse_ip() . " \t IN PTR\n" if $delete;
+ print "send\n";
+ print "prereq nxdomain " . Net::IP->new($v6mgmt)->reverse_ip() . "\n" unless $delete;
+ print "update add " . Net::IP->new($v6mgmt)->reverse_ip() . " \t 3600 IN PTR \t $sw_fqdn\n" unless $delete;
+ print "update delete " . Net::IP->new($v6mgmt)->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 "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 "prereq nxrrset $gw_fqdn IN A\n" unless $delete;
+ print "update add $gw_fqdn \t 3600 IN A \t $v4mgmt\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 "prereq nxrrset $gw_fqdn IN AAAA\n" unless $delete;
+ print "update add $gw_fqdn \t 3600 IN AAAA \t $v6mgmt\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 "prereq nxdomain " . Net::IP->new($v4mgmt)->reverse_ip() . "\n" unless $delete;
+ print "update add " . Net::IP->new($v4mgmt)->reverse_ip() . " \t 3600 IN PTR \t $gw_fqdn\n" unless $delete;
+ print "update delete " . Net::IP->new($v4mgmt)->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 "prereq nxdomain " . Net::IP->new($v6mgmt)->reverse_ip() . "\n" unless $delete;
+ print "update add " . Net::IP->new($v6mgmt)->reverse_ip() . " \t 3600 IN PTR \t $gw_fqdn\n" unless $delete;
+ print "update delete " . Net::IP->new($v6mgmt)->reverse_ip() . " \t IN PTR\n" if $delete;
print "send\n";
}