#!/usr/bin/perl
use strict;		
use warnings;	
#file snCalc.cgi	little subnet calculator app
my %webvar = parse_post();
my $input;
print "Content-Type: text/html\n\n";
open(HTML, "../startsn.html")|| die "Could not open starsn.html :$!";
my $start = join('', );
close(HTML);
print $start;
if($webvar{input} =~ m/(\/\d\d)/)
{
	$input = $1;
}
else
{
	$input = '/29';
}
if(substr($input, 1, 2) > 32 || substr($input, 1, 2) < 24)
{
	printAndExit("'$input' is an invalid netmask.");
}
else
{		$input = substr($input, 1, 2);
		my $ltinput = $input -1;
		my $gtinput = $input +1;
		
		print qq(	
		
		| Results for /$ltinput | Results for /$input | Results for /$gtinput | 
		);	
		if( $input =~ m|.*24.*|){
			$input = 256;
			$ltinput =128;
			undef($gtinput);
		}
		elsif( $input =~ m|.*25.*|){
			$input = 128;
			$ltinput = 64;
			$gtinput = 256;
		}
		elsif( $input =~ m|.*26.*|){
			$input = 64;
			$ltinput = 32;
			$gtinput = 128;
		}
		elsif( $input =~ m|.*27.*|){
			$input = 32;
			$ltinput = 16;
			$gtinput = 64;
		}
		elsif( $input =~ m|.*28.*|){
			$input = 16;
			$ltinput = 8;
			$gtinput = 32;
		}
		elsif( $input =~ m|.*29.*|){
			$input = 8;
			$ltinput = 4;
			$gtinput = 16;
		}
		elsif( $input =~ m|.*30.*|){
			$input = 4;
			$ltinput = 2;
			$gtinput = 8;
		}
		elsif( $input =~ m|.*31.*|){
			$input = 2;
			$ltinput = 1;
			$gtinput = 4;
		}
		elsif( $input =~ m|.*32.*|){
			$input = 1;
			$gtinput = 2;
			undef($ltinput);
		}
		my ($center, $left, $right) = ('','','');
		my $subnet;
		
		#add the subnet masks
		
	        if($input) 
	        {		
		  $subnet = 256 - $input;
		  $center = qq(255.255.255.$subnet 
);
	        }
	        if($ltinput)
		{
		  $subnet = 256 - $ltinput;
		  $right = qq(255.255.255.$subnet
);
		}
	        if($gtinput)
		{
		  $subnet = 256 - $gtinput;
		  $left = qq(255.255.255.$subnet
);
		}
		for(my $i = 0; $i < 256; $i++)
		{
			#left display -- one less than requested
			if(defined($gtinput) && $i % $gtinput == 0)
			{
				my $upper = $i + $gtinput -1;
				$left .= "x.x.x.$i - x.x.x.$upper\n";
			}
			#center display -- the one requested
			if($i % $input == 0 )
			{
				my $upper = $i + $input - 1;
				$center .= "x.x.x.$i - x.x.x.$upper  \n";
			}
			#right display -- one more than requested
			if(defined($ltinput) && $i % $ltinput == 0)
			{
				my $upper = $i + $ltinput -1;
				$right .= "x.x.x.$i - x.x.x.$upper  \n";
			}
		}
		
		print qq(| $left | $center | $right | 
				);
		print "
\n";
		print '