294 lines
9.9 KiB
HTML
294 lines
9.9 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|||
|
<HTML>
|
|||
|
<HEAD>
|
|||
|
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|||
|
<!-- (C) Copyright IBM Corporation, 2005 -->
|
|||
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
|||
|
<!-- US Government Users Restricted Rights -->
|
|||
|
<!-- Use, duplication or disclosure restricted by -->
|
|||
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
|||
|
<TITLE>TCP/IP subnet calculator</TITLE>
|
|||
|
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
|
|||
|
<SCRIPT language="JavaScript" type="text/javascript">
|
|||
|
<!-- //////////
|
|||
|
|
|||
|
var calcWindowMessage = "<body bgcolor='#FFFFCC'><h4>Writing Output...<\/h4><\/body>";
|
|||
|
var calcWindowMessage1 = "<body bgcolor='#FFFFCC'><h4>Calculating...<\/h4><\/body>";
|
|||
|
var throughmess = "through";
|
|||
|
var tr1 = "<tr bgcolor='#CCCCCC'>";
|
|||
|
var tr2 = "<tr>";
|
|||
|
|
|||
|
var text1 = "<table>";
|
|||
|
var text2 = "<\/table>";
|
|||
|
var text3 = "<form><center>";
|
|||
|
var text5 = "<input type='button' value='<< Back ' onclick='goback()'> ";
|
|||
|
var text6 = "<input type='button' value='<< Show Previous 512 ' onclick='showbefore()'> ";
|
|||
|
var text7 = "<input type='button' value=' Show Next 512 >>' onclick='showmore()'> ";
|
|||
|
var text8 = "<input type='button' value='Start Over' onclick='startover()'>";
|
|||
|
var text9 = "<\/form>";
|
|||
|
var youroutput3 = "<h2>TCP/IP subnet calculator<\/h2>";
|
|||
|
var youroutput2 = "<strong>Results for your subnets<\/strong>";
|
|||
|
|
|||
|
|
|||
|
//START NON-TRANSLATABLE
|
|||
|
|
|||
|
//Obtain name of HTML file in parent frame.
|
|||
|
var parentDir = parent.window.location.href.substring(0,location.href.lastIndexOf('/')+1);
|
|||
|
var parentUrl = parent.window.location.href.substring(parentDir.length,parent.window.location.href.length+1);
|
|||
|
if (parentUrl.indexOf("#") >= 0) {
|
|||
|
parentUrl = parentUrl.substring(0,parentUrl.indexOf("#"));
|
|||
|
}
|
|||
|
//Is the hidden frame already loaded with the correct html?
|
|||
|
if (parentUrl != "rzak1advsubwelcome.htm") {
|
|||
|
window.location = "rzak1advsubwelcome.htm"; //load calculator frameset
|
|||
|
} else {
|
|||
|
//Obtain name of HTML file in hidden frame.
|
|||
|
var hiddenDir = parent.hidden.window.location.href.substring(0,location.href.lastIndexOf('/')+1);
|
|||
|
var hiddenUrl = parent.hidden.window.location.href.substring(hiddenDir.length,parent.hidden.window.location.href.length+1);
|
|||
|
if (hiddenUrl.indexOf("#") >= 0) { hiddenUrl = hiddenUrl.substring(0,hiddenUrl.indexOf("#"));}
|
|||
|
if (hiddenUrl != "rzak1advsubhidden.htm") {
|
|||
|
//Correct HTML not loaded, load it
|
|||
|
parent.window.location = "rzak1advsubwelcome.htm";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
var num_subnets = parseInt(parent.hidden.data[5]);
|
|||
|
var num_ips = parseInt(parent.hidden.data[4]);
|
|||
|
var seg1 = parseInt(parent.hidden.data[1]);
|
|||
|
var seg2 = parseInt(parent.hidden.data[2]);
|
|||
|
var seg3 = parseInt(parent.hidden.data[3]);
|
|||
|
var subnetmask = parent.hidden.data[6];
|
|||
|
var placeholder = parseInt(parent.hidden.data[7]);
|
|||
|
|
|||
|
var seg4 = 0;
|
|||
|
var newseg2 = seg2;
|
|||
|
var newseg3 = seg3;
|
|||
|
var newseg4 = 0;
|
|||
|
var counter = 0;
|
|||
|
var classb = 1;
|
|||
|
var network = seg1 + "." + seg2 + "." + seg3 + "." + seg4;
|
|||
|
var flipcounter = 0;
|
|||
|
var done = 0;
|
|||
|
var theTime = new Date();
|
|||
|
var startTime;
|
|||
|
|
|||
|
calculatesubnets(); /* Call master function */
|
|||
|
|
|||
|
function calculatesubnets() {
|
|||
|
// These direct to the counting routines. It only counts one time through.
|
|||
|
if (placeholder == 0) {
|
|||
|
if (num_ips <= 256) {
|
|||
|
countless();
|
|||
|
}
|
|||
|
if ( num_ips>256 ) {
|
|||
|
countmore();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Done Calculating and storing
|
|||
|
|
|||
|
writeit(); // function writeit() displays writes the output
|
|||
|
}
|
|||
|
|
|||
|
function countless() {
|
|||
|
newseg4 = (seg4 + num_ips) - 1;
|
|||
|
for (var j = 0; j < num_subnets; j++) {
|
|||
|
jj = j + 1;
|
|||
|
storeme(); // stores each line of output into an array on the hidden page.
|
|||
|
seg4 = newseg4 + 1;
|
|||
|
if (seg4 >= 255) {
|
|||
|
seg3 = seg3 + 1;
|
|||
|
seg4 = 0;
|
|||
|
if (seg3 >= 256) {
|
|||
|
seg2 = seg2+1;
|
|||
|
seg3 = 0;
|
|||
|
}
|
|||
|
}
|
|||
|
newseg4 = (seg4 + num_ips - 1);
|
|||
|
newseg3 = seg3;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// COUNT MORE COUNT MORE COUNT MORE COUNT MORE COUNT MORE
|
|||
|
|
|||
|
function countmore() {
|
|||
|
// Class B Subnetting Class B Subnetting Class B Subnetting
|
|||
|
if ((num_ips * num_subnets) == 65536) {
|
|||
|
counter = (num_ips / 256);
|
|||
|
newseg3 = seg3 + counter-1;
|
|||
|
newseg2 = seg2;
|
|||
|
newseg4 = 255;
|
|||
|
for (var j = 0; j < num_subnets; j++) {
|
|||
|
jj = j+1;
|
|||
|
storeme();
|
|||
|
seg3 = newseg3 + 1;
|
|||
|
newseg3 = newseg3 + counter;
|
|||
|
}
|
|||
|
} else {
|
|||
|
// Class A Subnetting Class A Subnetting Class A Subnetting
|
|||
|
counter = (num_ips / 65536);
|
|||
|
newseg2 = seg2 + counter - 1;
|
|||
|
newseg3 = 255;
|
|||
|
newseg4 = 255;
|
|||
|
for (var j = 0; j < num_subnets; j++) {
|
|||
|
if (num_ips < 65536) {
|
|||
|
counter = num_ips / 256;
|
|||
|
newseg3 = seg3+counter - 1;
|
|||
|
newseg2 = seg2;
|
|||
|
if ( newseg3>=256 ) {
|
|||
|
seg2 = seg2 + 1;
|
|||
|
newseg2 = seg2;
|
|||
|
seg3 = 0;
|
|||
|
newseg3 = seg3 + counter - 1;
|
|||
|
}
|
|||
|
}
|
|||
|
jj = j + 1;
|
|||
|
storeme();
|
|||
|
|
|||
|
if (num_ips < 65536) {
|
|||
|
seg3 = newseg3 + 1;
|
|||
|
seg2 = newseg2;
|
|||
|
} else {
|
|||
|
seg2 = newseg2 + 1;
|
|||
|
newseg2 = newseg2 + counter
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function storeme() {
|
|||
|
if ((jj % 2) != 0) {
|
|||
|
parent.hidden.myarray[jj] = tr1;
|
|||
|
} else {
|
|||
|
parent.hidden.myarray[jj] = tr2;
|
|||
|
}
|
|||
|
var network = "<font size='1'>" + seg1 + "." + seg2 + "." + seg3 + "." + seg4;
|
|||
|
var startaddress = "<font size='1'>" + seg1 + "." + seg2 + "." + seg3 + "." + (seg4 + 1);
|
|||
|
var endaddress = "<font size='1'>" + seg1 + "." + newseg2 + "." + newseg3 + "." + (newseg4 - 1);
|
|||
|
var broadcast = "<font size='1'>" + seg1 + "." + newseg2 + "." + newseg3 + "." + newseg4;
|
|||
|
parent.hidden.myarray[jj] += "<td><font size='-1'>" + jj + "<\/td>";
|
|||
|
parent.hidden.myarray[jj] += "<td>" + network + "<\/td>";
|
|||
|
parent.hidden.myarray[jj] += "<td>" + startaddress + "<\/td>";
|
|||
|
parent.hidden.myarray[jj] += "<td><font size='-1'>" + throughmess + "<\/td>";
|
|||
|
parent.hidden.myarray[jj] += "<td>" + endaddress + "<\/td>";
|
|||
|
parent.hidden.myarray[jj] += "<td>" + broadcast + "<\/td>";
|
|||
|
parent.hidden.myarray[jj] += "<\/tr>"
|
|||
|
}
|
|||
|
|
|||
|
function goback() {
|
|||
|
// called by the back button. resets the placeholder value
|
|||
|
parent.hidden.test();
|
|||
|
//parent.hidden.document.DataObjects.storeValue(0, 7);
|
|||
|
parent.hidden.data[7] = 0;
|
|||
|
history.back();
|
|||
|
}
|
|||
|
|
|||
|
function startover() {
|
|||
|
// called by the startover button. goes to welcome page
|
|||
|
window.location = "rzak1advsubwelcome.htm";
|
|||
|
parent.hidden.resetData();
|
|||
|
}
|
|||
|
|
|||
|
function writeit() {
|
|||
|
document.write(youroutput3);
|
|||
|
// Displays the line counter if num_subnets is greater than 512
|
|||
|
if (num_subnets > 512 ) {
|
|||
|
var begin = parseInt(parent.hidden.data[7]);
|
|||
|
if (begin == 0) {
|
|||
|
begin = 1;
|
|||
|
}
|
|||
|
var end = begin + 511;
|
|||
|
//END NON-TRANSLATABLE
|
|||
|
youroutput1 = "<br><strong> Results for <font color='#FF0000'>Subnets " + begin + " through " + end + "<\/font><\/strong>";
|
|||
|
//START NON-TRANSLATABLE
|
|||
|
document.write(youroutput1);
|
|||
|
} else {
|
|||
|
document.write(youroutput2);
|
|||
|
}
|
|||
|
|
|||
|
// Headings for all ouput
|
|||
|
//END NON-TRANSLATABLE
|
|||
|
yournetworkaddress = "<ul><li>Your network address is " + network + ".<\/li>";
|
|||
|
yourdata = "<li>You asked to subnet your network address into " + num_subnets + " subnets with " + num_ips + " IP addresses.<\/li>";
|
|||
|
yoursubnetmask = "<li>Your subnet mask for each subnetwork is " + subnetmask + ".<p><\/li><\/ul>";
|
|||
|
tableheader = "<tr><th id='COL1'><font size='1'><strong>Subnet no.<\/th><th id='COL2'><font size='1'><strong>Network address <\/th><th id='COL3'><font size='1'><strong>First host<\/th><th id='COL4'><\/th><th id='COL5'><font size='1'><strong>Last host<\/th><th id='COL6'><font size='1'><strong>Broadcast address<\/tH><\/tr>";
|
|||
|
//START NON-TRANSLATABLE
|
|||
|
|
|||
|
document.write(yournetworkaddress);
|
|||
|
document.write(yourdata);
|
|||
|
document.write(yoursubnetmask);
|
|||
|
document.write(text1);
|
|||
|
document.write(tableheader);
|
|||
|
|
|||
|
if (placeholder == 0) {
|
|||
|
writeplaceholder = 1;
|
|||
|
} else {
|
|||
|
writeplaceholder = placeholder;
|
|||
|
}
|
|||
|
|
|||
|
for (var i = writeplaceholder; i < num_subnets + 1; i++) {
|
|||
|
document.write(parent.hidden.myarray[i]);
|
|||
|
// stops output at every 512 -- stores the number it stopped at
|
|||
|
if ((i % 512 == 0) && (i != 0)) {
|
|||
|
parent.hidden.data[7] = i+1;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// this variable is where the segmented output stopped
|
|||
|
var newplaceholder = parseInt(parent.hidden.data[7]);
|
|||
|
|
|||
|
document.write(text2);
|
|||
|
document.write(text3);
|
|||
|
//document.write(text4);
|
|||
|
|
|||
|
// displays the back button that goes to select size panel
|
|||
|
if (newplaceholder <= 513) {
|
|||
|
document.write(text5);
|
|||
|
}
|
|||
|
|
|||
|
// displays the show previous page of subnets
|
|||
|
if (((newplaceholder > num_subnets) || ((newplaceholder - 512) > 512)) && (newplaceholder != 513)) {
|
|||
|
document.write(text6);
|
|||
|
}
|
|||
|
|
|||
|
// shows the next page of subnets if it exists
|
|||
|
if ((newplaceholder > 512) && (newplaceholder < num_subnets)) {
|
|||
|
document.write(text7);
|
|||
|
}
|
|||
|
|
|||
|
document.write(text8);
|
|||
|
document.write(text9);
|
|||
|
}
|
|||
|
|
|||
|
function showmore() {
|
|||
|
// called when more subnets are needed. reloads the page. initiated by the show more button
|
|||
|
window.location = "rzak1advsubfinal.htm";
|
|||
|
}
|
|||
|
|
|||
|
function showbefore() {
|
|||
|
// shows the previous page of subnets if exists. sets the counters backwards and recalls this page.
|
|||
|
// initiated by the show previous button
|
|||
|
var countback = parseInt(parent.hidden.data[7]);
|
|||
|
countback = (countback - 512) - 512;
|
|||
|
parent.hidden.document.data[7] = countback;
|
|||
|
window.location = "rzak1advsubfinal.htm";
|
|||
|
}
|
|||
|
|
|||
|
function printout() {
|
|||
|
// called by the print button. brings up the print dialog
|
|||
|
self.print();
|
|||
|
}
|
|||
|
|
|||
|
//END NON-TRANSLATABLE
|
|||
|
|
|||
|
//////////-->
|
|||
|
</script>
|
|||
|
</HEAD>
|
|||
|
<body>
|
|||
|
<noscript>
|
|||
|
<p>This calculator uses Javascript to function. Ensure you are using a browser which supports Javascript and that
|
|||
|
Javascript is enabled.</p></noscript>
|
|||
|
</body>
|
|||
|
</HTML>
|