summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-06-08 14:22:25 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-06-08 14:22:25 +0200
commit503dbcfc489a6c471f7071ac73435f27547c0a3d (patch)
tree4d1ad876a016b4cd76e0315c4122054a49978d0f
parentCreate zones and records. (diff)
downloaddns-503dbcfc489a6c471f7071ac73435f27547c0a3d.tar.gz
dns-503dbcfc489a6c471f7071ac73435f27547c0a3d.tar.xz
Add rev_record function.
-rw-r--r--lib/puppet/functions/dns/rev_record.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/puppet/functions/dns/rev_record.rb b/lib/puppet/functions/dns/rev_record.rb
new file mode 100644
index 0000000..efbedc6
--- /dev/null
+++ b/lib/puppet/functions/dns/rev_record.rb
@@ -0,0 +1,18 @@
+require 'ipaddr'
+
+Puppet::Functions.create_function(:'dns::rev_record') do
+ dispatch :rev_record do
+ param 'Stdlib::IP::Address::V6::Nosubnet', :ip
+ param 'Stdlib::IP::Address::V6::Nosubnet', :netmask
+ return_type 'Tuple[String,2]'
+ end
+
+ def rev_record(ip, netmask)
+ cidr = IPAddr.new("::/#{netmask}").prefix
+ addr = IPAddr.new ip
+ parts = addr.ip6_arpa.split('.')
+
+ [ parts.take(cidr/4).join('.'),
+ parts.drop(cidr/4).join('.') ]
+ end
+end