Add a function to reverse zones
This commit is contained in:
parent
80ae6c7760
commit
ddab4774cc
1 changed files with 44 additions and 0 deletions
44
reverse.py
Normal file
44
reverse.py
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
import ipaddress
|
||||||
|
|
||||||
|
def reverse_zone(network):
|
||||||
|
"""Reverse a network zone"""
|
||||||
|
|
||||||
|
if network.version == 4:
|
||||||
|
boundary = 8 # break to the byte
|
||||||
|
elif network.version == 6:
|
||||||
|
boundary = 4 # break to the nimble
|
||||||
|
|
||||||
|
assert network.prefixlen % boundary == 0
|
||||||
|
length = (network.prefixlen // boundary)
|
||||||
|
|
||||||
|
full_network_reverse = network.network_address.reverse_pointer
|
||||||
|
|
||||||
|
splitted = full_network_reverse.split(".")
|
||||||
|
splitting_len = int(network.max_prefixlen / boundary)
|
||||||
|
splitted = splitted[splitting_len - length:]
|
||||||
|
|
||||||
|
reversed_zone = ".".join(splitted)
|
||||||
|
|
||||||
|
return reversed_zone
|
||||||
|
|
||||||
|
|
||||||
|
net1 = ipaddress.IPv4Network("10.128.12.0/24")
|
||||||
|
net2 = ipaddress.IPv4Network("10.129.0.0/16")
|
||||||
|
net3 = ipaddress.IPv4Network("10.0.0.0/8")
|
||||||
|
|
||||||
|
net4 = ipaddress.IPv6Network("2001:470:142:3::/64")
|
||||||
|
net5 = ipaddress.IPv6Network("2001:470:142::/48")
|
||||||
|
net6 = ipaddress.IPv6Network("2a09:6840::/32")
|
||||||
|
|
||||||
|
#>>> reverse_zone(net1)
|
||||||
|
#'12.128.10.in-addr.arpa'
|
||||||
|
#>>> reverse_zone(net2)
|
||||||
|
#'129.10.in-addr.arpa'
|
||||||
|
#>>> reverse_zone(net3)
|
||||||
|
#'10.in-addr.arpa'
|
||||||
|
#>>> reverse_zone(net4)
|
||||||
|
#'3.0.0.0.2.4.1.0.0.7.4.0.1.0.0.2.ip6.arpa'
|
||||||
|
#>>> reverse_zone(net5)
|
||||||
|
#'2.4.1.0.0.7.4.0.1.0.0.2.ip6.arpa'
|
||||||
|
#>>> reverse_zone(net6)
|
||||||
|
#'0.4.8.6.9.0.a.2.ip6.arpa'
|
Loading…
Reference in a new issue