diff --git a/pedro/ipv6-stuff/randomnet.py b/pedro/ipv6-stuff/randomnet.py new file mode 100644 index 0000000..1f1d395 --- /dev/null +++ b/pedro/ipv6-stuff/randomnet.py @@ -0,0 +1,54 @@ +import ipaddress +import argparse +# for exit codes +import sys + +# this is useful for debugging (put it in the line you want to inspect) +# import IPython; IPython.embed() + +def proc_args(): + # src https://docs.python.org/3/library/argparse.html#description + parser = argparse.ArgumentParser(description='Generate a random IPv6 network that is subnetwork from the the input network. Optional parameter allows you to specify the size of the subnetwork') + parser.add_argument('prefix', type=str, + help='IPv6 network') + parser.add_argument('--size', type=int, + help='prefix of the output IPv6 subnetwork') + args = parser.parse_args() + return args + +def proc_input(args): + prefix = args.prefix + try: + net6 = ipaddress.IPv6Network(prefix) + except: + print('input is not IPv6 network or is not in CIDR format') + sys.exit(1) + if(net6.prefixlen > 48): + print('The netmask of the prefix should be /48 or smaller (/48.../0)') + sys.exit(1) + if args.size: + if(args.size < 48): + print('Prefix subnet size should be greater or equal than 48') + sys.exit(1) + size = args.size + else: + size = 48 + if net6.prefixlen = size: + print('the input subnet cannot be equal to the output subnet') + sys.exit(1) + return net6, size + +def main(): + + args = proc_args() + + net6, size = proc_input(args) + import IPython; IPython.embed() + + # generate random subnet + net6.subnets(new_prefix=size) + + print(subprefix) + +if __name__ == "__main__": + main()