From 5088bbe6003c85d77916f94a7cbb2cbfd340e02b Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Wed, 8 Dec 2021 00:13:30 -0500 Subject: [PATCH 1/3] Add IPv6 support Split IPv4 and IPv6 calculations into different JS files to make them easier to understand. IDE decided to format HTML code and I left it as-is. --- calculations.js | 44 ++ calculations_4.js | 60 +++ calculations_6.js | 79 +++ gennum.php | 4 +- subnets.html | 1200 +++++++++++++++++++++++---------------------- 5 files changed, 812 insertions(+), 575 deletions(-) create mode 100644 calculations.js create mode 100644 calculations_4.js create mode 100644 calculations_6.js diff --git a/calculations.js b/calculations.js new file mode 100644 index 0000000..29a0914 --- /dev/null +++ b/calculations.js @@ -0,0 +1,44 @@ +function inet_ntoa(mode, addrint) { + var fn = "inet_ntoa_" + mode; + return window[fn](addrint); +} + +function inet_aton(mode, addrint) { + var fn = "inet_aton_" + mode; + return window[fn](addrint); +} + +function network_address(mode, addrint) { + var fn = "network_address_" + mode; + return window[fn](addrint); +} + +function subnet_addresses(mode, addrint) { + var fn = "subnet_addresses_" + mode; + return window[fn](addrint); +} + +function subnet_first_address_useable(mode, addrint) { + var fn = "subnet_first_address_useable_" + mode; + return window[fn](addrint); +} + +function subnet_last_address_useable(mode, addrint) { + var fn = "subnet_last_address_useable_" + mode; + return window[fn](addrint); +} + +function subnet_last_address(mode, subnet, mask) { + var fn = "subnet_last_address_" + mode; + return window[fn](mode, subnet, mask); +} + +function subnet_netmask(mode, addrint) { + var fn = "subnet_netmask_" + mode; + return window[fn](addrint); +} + +function num_hosts(mode, useableFirst, useableLast) { + var fn = "num_hosts_" + mode; + return window[fn](useableFirst, useableLast); +} diff --git a/calculations_4.js b/calculations_4.js new file mode 100644 index 0000000..c6d7f75 --- /dev/null +++ b/calculations_4.js @@ -0,0 +1,60 @@ +function inet_ntoa_4(addrint) { + return ( + ((addrint >> 24) & 0xff) + + "." + + ((addrint >> 16) & 0xff) + + "." + + ((addrint >> 8) & 0xff) + + "." + + (addrint & 0xff) + ); +}; + +function inet_aton_4(addrstr) { + var re = /^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/; + var res = re.exec(addrstr); + + if (res === null) { + return null; + } + + for (var i = 1; i <= 4; i++) { + if (res[i] < 0 || res[i] > 255) { + return null; + } + } + + return (res[1] << 24) | (res[2] << 16) | (res[3] << 8) | res[4]; +} + +function network_address_4(ip, mask) { + var maskbits = 0; + for (var i = 31 - mask; i >= 0; i--) { + ip &= ~1 << i; + } + return ip; +} + +function subnet_addresses_4(mask) { + return 1 << (32 - mask); +} + +function subnet_first_address_useable_4(addrint) { + return addrint + 1; +} + +function subnet_last_address_useable_4(addrint) { + return addrint - 1; +} + +function subnet_last_address_4(mode, subnet, mask) { + return subnet + subnet_addresses(mode, mask) - 1; +} + +function subnet_netmask_4(mask) { + return network_address(4, 0xffffffff, mask); +} + +function num_hosts_4(useableFirst, useableLast) { + return 1 + useableLast - useableFirst; +} diff --git a/calculations_6.js b/calculations_6.js new file mode 100644 index 0000000..c8ee8bd --- /dev/null +++ b/calculations_6.js @@ -0,0 +1,79 @@ +function inet_ntoa_6(addrint) { + return "" + + ((addrint >> 112n) & BigInt(0xffff)).toString(16) + + ":" + + ((addrint >> 96n) & BigInt(0xffff)).toString(16) + + ":" + + ((addrint >> 80n) & BigInt(0xffff)).toString(16) + + ":" + + ((addrint >> 64n) & BigInt(0xffff)).toString(16) + + ":" + + ((addrint >> 48n) & BigInt(0xffff)).toString(16) + + ":" + + ((addrint >> 32n) & BigInt(0xffff)).toString(16) + + ":" + + ((addrint >> 16n) & BigInt(0xffff)).toString(16) + + ":" + + (addrint & BigInt(0xffff)).toString(16); +} + +function inet_aton_6(addrstr) { + var re = + /^([0-9a-f]{1,4})\:([0-9a-f]{1,4})\:([0-9a-f]{1,4})\:([0-9a-f]{1,4})\:([0-9a-f]{1,4})\:([0-9a-f]{1,4})\:([0-9a-f]{1,4})\:([0-9a-f]{1,4})$/; + var res = re.exec(addrstr); + + if (res === null) { + return null; + } + + for (var i = 1; i <= 8; i++) { + if (res[i] < 0 || res[i] > 0xffff) { + return null; + } + } + + var r1 = BigInt(parseInt(res[1], 16)) << 112n; + var r2 = BigInt(parseInt(res[2], 16)) << 96n; + var r3 = BigInt(parseInt(res[3], 16)) << 80n; + var r4 = BigInt(parseInt(res[4], 16)) << 64n; + var r5 = BigInt(parseInt(res[5], 16)) << 48n; + var r6 = BigInt(parseInt(res[6], 16)) << 32n; + var r7 = BigInt(parseInt(res[7], 16)) << 16n; + var r8 = BigInt(parseInt(res[8], 16)); + + var rt = r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8; + + return rt; +} + +function network_address_6(ip, mask) { + var maskbits = 0; + for (var i = 128 - mask; i >= 0; i--) { + ip &= ~1 << i; + } + return ip; +} + +function subnet_addresses_6(mask) { + return 1n << (128n - BigInt(mask)); +} + +function subnet_first_address_useable_6(addrint) { + return addrint + 1n; +} + +function subnet_last_address_useable_6(addrint) { + return addrint - 1n; +} + +function subnet_last_address_6(mode, subnet, mask) { + return subnet + subnet_addresses(mode, mask) - 1n; +} + +function subnet_netmask_6(mask) { + return undefined; +} + +function num_hosts_6(useableFirst, useableLast) { + return 1n + useableLast - useableFirst; +} diff --git a/gennum.php b/gennum.php index 249d3bb..8e40931 100644 --- a/gennum.php +++ b/gennum.php @@ -1,5 +1,5 @@ - - -Visual Subnet Calculator - - - - - - - - - - - -
- -

Visual Subnet Calculator

- -

Enter the network you wish to subnet:

- -
- - - - - - - - - - - -
Network AddressMask bits
/ - -
- -

Show columns: - - - - - - - -

-
- -

Click below to split and join subnets.
-If you wish to save this subnetting for later, bookmark this hyperlink.

- -
-Fork me on GitHub -
- -
-
-
- - --------- - - - - - - - - - - - - - - -
Subnet addressNetmaskRange of addressesUseable IPsHostsDivideJoin
- - + + + From 5a01d82b6fc6ff7379da67dcda23b2086345853c Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Wed, 8 Dec 2021 00:18:03 -0500 Subject: [PATCH 2/3] Add new images for IPv6 --- gennum.php | 2 +- img/0.gif | Bin 136 -> 64 bytes img/1.gif | Bin 136 -> 63 bytes img/10.gif | Bin 179 -> 72 bytes img/100.gif | Bin 0 -> 80 bytes img/101.gif | Bin 0 -> 80 bytes img/102.gif | Bin 0 -> 83 bytes img/103.gif | Bin 0 -> 81 bytes img/104.gif | Bin 0 -> 80 bytes img/105.gif | Bin 0 -> 83 bytes img/106.gif | Bin 0 -> 82 bytes img/107.gif | Bin 0 -> 81 bytes img/108.gif | Bin 0 -> 84 bytes img/109.gif | Bin 0 -> 81 bytes img/11.gif | Bin 179 -> 72 bytes img/110.gif | Bin 0 -> 80 bytes img/111.gif | Bin 0 -> 81 bytes img/112.gif | Bin 0 -> 83 bytes img/113.gif | Bin 0 -> 83 bytes img/114.gif | Bin 0 -> 80 bytes img/115.gif | Bin 0 -> 84 bytes img/116.gif | Bin 0 -> 83 bytes img/117.gif | Bin 0 -> 80 bytes img/118.gif | Bin 0 -> 83 bytes img/119.gif | Bin 0 -> 81 bytes img/12.gif | Bin 179 -> 74 bytes img/120.gif | Bin 0 -> 84 bytes img/121.gif | Bin 0 -> 84 bytes img/122.gif | Bin 0 -> 85 bytes img/123.gif | Bin 0 -> 84 bytes img/124.gif | Bin 0 -> 84 bytes img/125.gif | Bin 0 -> 84 bytes img/126.gif | Bin 0 -> 85 bytes img/127.gif | Bin 0 -> 83 bytes img/128.gif | Bin 0 -> 85 bytes img/13.gif | Bin 179 -> 74 bytes img/14.gif | Bin 179 -> 73 bytes img/15.gif | Bin 179 -> 74 bytes img/16.gif | Bin 179 -> 74 bytes img/17.gif | Bin 179 -> 73 bytes img/18.gif | Bin 179 -> 75 bytes img/19.gif | Bin 179 -> 75 bytes img/2.gif | Bin 136 -> 66 bytes img/20.gif | Bin 179 -> 75 bytes img/21.gif | Bin 179 -> 75 bytes img/22.gif | Bin 179 -> 76 bytes img/23.gif | Bin 179 -> 76 bytes img/24.gif | Bin 179 -> 75 bytes img/25.gif | Bin 179 -> 78 bytes img/26.gif | Bin 179 -> 76 bytes img/27.gif | Bin 179 -> 75 bytes img/28.gif | Bin 179 -> 77 bytes img/29.gif | Bin 179 -> 76 bytes img/3.gif | Bin 136 -> 65 bytes img/30.gif | Bin 179 -> 74 bytes img/31.gif | Bin 179 -> 75 bytes img/32.gif | Bin 179 -> 76 bytes img/33.gif | Bin 0 -> 76 bytes img/34.gif | Bin 0 -> 75 bytes img/35.gif | Bin 0 -> 78 bytes img/36.gif | Bin 0 -> 76 bytes img/37.gif | Bin 0 -> 73 bytes img/38.gif | Bin 0 -> 76 bytes img/39.gif | Bin 0 -> 76 bytes img/4.gif | Bin 136 -> 64 bytes img/40.gif | Bin 0 -> 73 bytes img/41.gif | Bin 0 -> 73 bytes img/42.gif | Bin 0 -> 75 bytes img/43.gif | Bin 0 -> 75 bytes img/44.gif | Bin 0 -> 73 bytes img/45.gif | Bin 0 -> 76 bytes img/46.gif | Bin 0 -> 75 bytes img/47.gif | Bin 0 -> 73 bytes img/48.gif | Bin 0 -> 75 bytes img/49.gif | Bin 0 -> 75 bytes img/5.gif | Bin 136 -> 65 bytes img/50.gif | Bin 0 -> 73 bytes img/51.gif | Bin 0 -> 73 bytes img/52.gif | Bin 0 -> 76 bytes img/53.gif | Bin 0 -> 76 bytes img/54.gif | Bin 0 -> 73 bytes img/55.gif | Bin 0 -> 76 bytes img/56.gif | Bin 0 -> 76 bytes img/57.gif | Bin 0 -> 75 bytes img/58.gif | Bin 0 -> 78 bytes img/59.gif | Bin 0 -> 76 bytes img/6.gif | Bin 136 -> 66 bytes img/60.gif | Bin 0 -> 75 bytes img/61.gif | Bin 0 -> 73 bytes img/62.gif | Bin 0 -> 76 bytes img/63.gif | Bin 0 -> 77 bytes img/64.gif | Bin 0 -> 74 bytes img/65.gif | Bin 0 -> 77 bytes img/66.gif | Bin 0 -> 77 bytes img/67.gif | Bin 0 -> 76 bytes img/68.gif | Bin 0 -> 77 bytes img/69.gif | Bin 0 -> 76 bytes img/7.gif | Bin 136 -> 63 bytes img/70.gif | Bin 0 -> 73 bytes img/71.gif | Bin 0 -> 73 bytes img/72.gif | Bin 0 -> 74 bytes img/73.gif | Bin 0 -> 73 bytes img/74.gif | Bin 0 -> 73 bytes img/75.gif | Bin 0 -> 74 bytes img/76.gif | Bin 0 -> 75 bytes img/77.gif | Bin 0 -> 71 bytes img/78.gif | Bin 0 -> 74 bytes img/79.gif | Bin 0 -> 74 bytes img/8.gif | Bin 136 -> 66 bytes img/80.gif | Bin 0 -> 76 bytes img/81.gif | Bin 0 -> 74 bytes img/82.gif | Bin 0 -> 77 bytes img/83.gif | Bin 0 -> 76 bytes img/84.gif | Bin 0 -> 76 bytes img/85.gif | Bin 0 -> 78 bytes img/86.gif | Bin 0 -> 76 bytes img/87.gif | Bin 0 -> 75 bytes img/88.gif | Bin 0 -> 78 bytes img/89.gif | Bin 0 -> 78 bytes img/9.gif | Bin 136 -> 66 bytes img/90.gif | Bin 0 -> 75 bytes img/91.gif | Bin 0 -> 75 bytes img/92.gif | Bin 0 -> 76 bytes img/93.gif | Bin 0 -> 76 bytes img/94.gif | Bin 0 -> 74 bytes img/95.gif | Bin 0 -> 76 bytes img/96.gif | Bin 0 -> 76 bytes img/97.gif | Bin 0 -> 75 bytes img/98.gif | Bin 0 -> 76 bytes img/99.gif | Bin 0 -> 77 bytes 130 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 img/100.gif create mode 100644 img/101.gif create mode 100644 img/102.gif create mode 100644 img/103.gif create mode 100644 img/104.gif create mode 100644 img/105.gif create mode 100644 img/106.gif create mode 100644 img/107.gif create mode 100644 img/108.gif create mode 100644 img/109.gif create mode 100644 img/110.gif create mode 100644 img/111.gif create mode 100644 img/112.gif create mode 100644 img/113.gif create mode 100644 img/114.gif create mode 100644 img/115.gif create mode 100644 img/116.gif create mode 100644 img/117.gif create mode 100644 img/118.gif create mode 100644 img/119.gif create mode 100644 img/120.gif create mode 100644 img/121.gif create mode 100644 img/122.gif create mode 100644 img/123.gif create mode 100644 img/124.gif create mode 100644 img/125.gif create mode 100644 img/126.gif create mode 100644 img/127.gif create mode 100644 img/128.gif create mode 100644 img/33.gif create mode 100644 img/34.gif create mode 100644 img/35.gif create mode 100644 img/36.gif create mode 100644 img/37.gif create mode 100644 img/38.gif create mode 100644 img/39.gif create mode 100644 img/40.gif create mode 100644 img/41.gif create mode 100644 img/42.gif create mode 100644 img/43.gif create mode 100644 img/44.gif create mode 100644 img/45.gif create mode 100644 img/46.gif create mode 100644 img/47.gif create mode 100644 img/48.gif create mode 100644 img/49.gif create mode 100644 img/50.gif create mode 100644 img/51.gif create mode 100644 img/52.gif create mode 100644 img/53.gif create mode 100644 img/54.gif create mode 100644 img/55.gif create mode 100644 img/56.gif create mode 100644 img/57.gif create mode 100644 img/58.gif create mode 100644 img/59.gif create mode 100644 img/60.gif create mode 100644 img/61.gif create mode 100644 img/62.gif create mode 100644 img/63.gif create mode 100644 img/64.gif create mode 100644 img/65.gif create mode 100644 img/66.gif create mode 100644 img/67.gif create mode 100644 img/68.gif create mode 100644 img/69.gif create mode 100644 img/70.gif create mode 100644 img/71.gif create mode 100644 img/72.gif create mode 100644 img/73.gif create mode 100644 img/74.gif create mode 100644 img/75.gif create mode 100644 img/76.gif create mode 100644 img/77.gif create mode 100644 img/78.gif create mode 100644 img/79.gif create mode 100644 img/80.gif create mode 100644 img/81.gif create mode 100644 img/82.gif create mode 100644 img/83.gif create mode 100644 img/84.gif create mode 100644 img/85.gif create mode 100644 img/86.gif create mode 100644 img/87.gif create mode 100644 img/88.gif create mode 100644 img/89.gif create mode 100644 img/90.gif create mode 100644 img/91.gif create mode 100644 img/92.gif create mode 100644 img/93.gif create mode 100644 img/94.gif create mode 100644 img/95.gif create mode 100644 img/96.gif create mode 100644 img/97.gif create mode 100644 img/98.gif create mode 100644 img/99.gif diff --git a/gennum.php b/gennum.php index 8e40931..b3996fc 100644 --- a/gennum.php +++ b/gennum.php @@ -20,4 +20,4 @@ //for i in tmp/*; do convert -rotate 90 $i img/`basename $i`; done -} \ No newline at end of file +} diff --git a/img/0.gif b/img/0.gif index 1f22eef27e8e0a203136245d0da5cb1da01af1d9..056604d4004658addc0d0e0125649a0e4306dccf 100644 GIT binary patch literal 64 zcmZ?wbhEHb1 PUY4HS(kL0sz+epk6_pbW literal 136 zcmZ?wbhEHb^h>0H5e31^@s6 diff --git a/img/1.gif b/img/1.gif index 2e0eed61100f83d35f08bcbd3ad247a60ca25614..efd2134f0c8192be8275bec6522341658a6fa50d 100644 GIT binary patch literal 63 zcmZ?wbhEHbnU%pB0GxmuzW@LL literal 0 HcmV?d00001 diff --git a/img/105.gif b/img/105.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0b1dbeadc0b1a2b799d82b4f0589234ff70d292 GIT binary patch literal 83 zcmZ?wbhEHbCFQ(l-efQ}q>CE|>3=Gx)`q3Sx literal 0 HcmV?d00001 diff --git a/img/106.gif b/img/106.gif new file mode 100644 index 0000000000000000000000000000000000000000..659e0cb0406b5dc65fba8d248dcdc6ad392ac479 GIT binary patch literal 82 zcmZ?wbhEHb)E2iE4buZN}-zt)U!5RS5n;cO9 literal 0 HcmV?d00001 diff --git a/img/107.gif b/img/107.gif new file mode 100644 index 0000000000000000000000000000000000000000..ab2f3e73b204a475621fc9a87ac9240f6d11f983 GIT binary patch literal 81 zcmZ?wbhEHbY#4bMFe)C0cVmc#(H2}NZ9J>Gj literal 0 HcmV?d00001 diff --git a/img/108.gif b/img/108.gif new file mode 100644 index 0000000000000000000000000000000000000000..5159e74ec89f3388ffa40ee0646bd421776cb086 GIT binary patch literal 84 zcmZ?wbhEHb+o7cYoHf`71$AWK-MHv{Z0UL@QH~;_u literal 0 HcmV?d00001 diff --git a/img/109.gif b/img/109.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f4564f936fd2934641723ec640c79f5c5abe397 GIT binary patch literal 81 zcmZ?wbhEHbo5=BZD;nuwoUC literal 179 zcmZ?wbhEHbsq{-+Rlf7U`%lvocr%0D=M;WdHyG literal 0 HcmV?d00001 diff --git a/img/111.gif b/img/111.gif new file mode 100644 index 0000000000000000000000000000000000000000..637ab700b0063d63ab32a85f0e1acfe16ec9670f GIT binary patch literal 81 zcmZ?wbhEHbo7u%<}hFlQP0idowav0|1*-8fE|h literal 0 HcmV?d00001 diff --git a/img/112.gif b/img/112.gif new file mode 100644 index 0000000000000000000000000000000000000000..62e3dd3b4d00febca9229728d93f639cf392f9e3 GIT binary patch literal 83 zcmZ?wbhEHbqTuSXE(6{*Jz7ym?v-4Aub0ZyE;x literal 0 HcmV?d00001 diff --git a/img/113.gif b/img/113.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e2f4f224601860827e1073a2e7a2f891d37677e GIT binary patch literal 83 zcmZ?wbhEHbo7)%;Nm6YqLY7`P8%-7_0%vEg7T$ literal 0 HcmV?d00001 diff --git a/img/114.gif b/img/114.gif new file mode 100644 index 0000000000000000000000000000000000000000..e394e2eab7a5c1add97ddc1f49efe76956da2fc5 GIT binary patch literal 80 zcmZ?wbhEHbqU?vSZ1fTT8U;SsAPWd%GDh literal 0 HcmV?d00001 diff --git a/img/115.gif b/img/115.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc6228475c308cb39a2eddef25ec93f1c19316b2 GIT binary patch literal 84 zcmZ?wbhEHbsqNk-nIiWfeUS+FqX)VPLQZ0PznTA^-pY literal 0 HcmV?d00001 diff --git a/img/116.gif b/img/116.gif new file mode 100644 index 0000000000000000000000000000000000000000..3923a2d4a17b2a8be20a77672b0583aea0c5a2cb GIT binary patch literal 83 zcmZ?wbhEHbo8l>S=~i&orx~Bj#%|FjxZs%sm=C literal 0 HcmV?d00001 diff --git a/img/117.gif b/img/117.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef0858dc16667816941ac308940395e7d9948cbd GIT binary patch literal 80 zcmZ?wbhEHbqV7ts|sr&j-?qf_mcah{c5!s7_0%(_!_+c literal 0 HcmV?d00001 diff --git a/img/119.gif b/img/119.gif new file mode 100644 index 0000000000000000000000000000000000000000..c0f764395d19f23bea4819787a0f7a8a336be4e8 GIT binary patch literal 81 zcmZ?wbhEHbsrhXZyZXR9lLk@?vDL1^}le8x{Zn literal 0 HcmV?d00001 diff --git a/img/12.gif b/img/12.gif index aa0fbf892c53367510073f54b16147b81fea55dd..21c6d7a3660a9bbb256c5372649239782f674afc 100644 GIT binary patch literal 74 zcmZ?wbhEHbG?7 literal 179 zcmZ?wbhEHb;M1& literal 0 HcmV?d00001 diff --git a/img/126.gif b/img/126.gif new file mode 100644 index 0000000000000000000000000000000000000000..7db8091d1eecb44c840e7a7520aca9ce0a654012 GIT binary patch literal 85 zcmZ?wbhEHbUf)%i5xs9d*JM@(YXINw7MlP7 literal 179 zcmZ?wbhEHbC;VuYLi(RtO4kr7j*yt literal 179 zcmZ?wbhEHbl?>JZlZG%8 diff --git a/img/21.gif b/img/21.gif index e1aba590a1901b2a56e3f57ac32dea7132041c46..14ddc0a3a146fd926dd28a950d3d0a960c498f93 100644 GIT binary patch literal 75 zcmZ?wbhEHbCfrkXYE^kM|Lfj2!k~M0pk}) literal 179 zcmZ?wbhEHb YnXKf}A*2XYBdFle0kjls@=6A40I9Vwp#T5? diff --git a/img/3.gif b/img/3.gif index ee2563fff186a2f71fea971ca39b6eb8093310d6..94ac1e73a1fd450384b0c1f0c49185a263b757c0 100644 GIT binary patch literal 65 zcmZ?wbhEHb00E{ aA*2d28K|8Jq()G|0c0sqWRc5C25SJMSTHpJ diff --git a/img/31.gif b/img/31.gif index 3797c8b9e80053d988e47fd29d2c0045920f28f0..5129d649b81e2b441f98e45bc6daf376c6a85a76 100644 GIT binary patch literal 75 zcmZ?wbhEHbAfNGe)x)!-K XFfcL!)hqzpH3eoVP-KzIN(O5H%_K3u diff --git a/img/32.gif b/img/32.gif index b64649d08e36452a31c6fca487937f116405fea8..1341a88d806292abfdeed844e6754c972d7527c9 100644 GIT binary patch literal 76 zcmZ?wbhEHbLOVz+epk^Su?P literal 0 HcmV?d00001 diff --git a/img/34.gif b/img/34.gif new file mode 100644 index 0000000000000000000000000000000000000000..7fa027e0038a70cc9bf020fa47b4146416ad6ff8 GIT binary patch literal 75 zcmZ?wbhEHb literal 0 HcmV?d00001 diff --git a/img/4.gif b/img/4.gif index 0545fa3f2f5da4fa9a8db41fe20cd658c455e252..84ba107ae5a29edf47abe80973f4bbc288c99c9e 100644 GIT binary patch literal 64 zcmZ?wbhEHb*%0Gzoc0ssI2 diff --git a/img/40.gif b/img/40.gif new file mode 100644 index 0000000000000000000000000000000000000000..5184d1554d29d4c47aed8064dbc18235f6793ce0 GIT binary patch literal 73 zcmZ?wbhEHbv^%?6nk?cH;5C#To0NO4VZ2$lO literal 0 HcmV?d00001 diff --git a/img/41.gif b/img/41.gif new file mode 100644 index 0000000000000000000000000000000000000000..c020c31923c40cef531dbc9ef188164236f080f5 GIT binary patch literal 73 zcmZ?wbhEHbx_jP>U1_o;YBySjH literal 0 HcmV?d00001 diff --git a/img/46.gif b/img/46.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d8bb929d5426a45059ce7f077ee2e525141db0 GIT binary patch literal 75 zcmZ?wbhEHbqg25SHW;TIDC literal 0 HcmV?d00001 diff --git a/img/49.gif b/img/49.gif new file mode 100644 index 0000000000000000000000000000000000000000..99d7b373c2c851bf41abaf3a72da3d6c869e92d1 GIT binary patch literal 75 zcmZ?wbhEHb$foO}Pm$VEPk4AuY$HWzCE literal 0 HcmV?d00001 diff --git a/img/5.gif b/img/5.gif index 1c772e6c3b997b25e8984dc26b44f5053fa42241..2609d85f7a98c80b2d568fb87cd2d77b16c9342d 100644 GIT binary patch literal 65 zcmZ?wbhEHb|J-=e*9PrJjro)&M8y7g+!R literal 0 HcmV?d00001 diff --git a/img/59.gif b/img/59.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc7f956b97b8250c9e7f56b26049bff239627bb4 GIT binary patch literal 76 zcmZ?wbhEHb9*#U=0BKDH1jS literal 136 zcmZ?wbhEHbT_NgBTdB0p9LCb4tY)iB&VzgBcjC0p7wF9RL6T literal 0 HcmV?d00001 diff --git a/img/72.gif b/img/72.gif new file mode 100644 index 0000000000000000000000000000000000000000..afdb76662c88dce0ee35fe569b9cad2a1ef542f3 GIT binary patch literal 74 zcmZ?wbhEHb4B8%frj{-ZQD(Tz24FK^r8FK&t literal 0 HcmV?d00001 diff --git a/img/75.gif b/img/75.gif new file mode 100644 index 0000000000000000000000000000000000000000..57bfbe99e2701891aae7b647aab1234d0f8011f8 GIT binary patch literal 74 zcmZ?wbhEHb5-@5S`KyxBF1quX&z~4AuY-mKcfv literal 0 HcmV?d00001 diff --git a/img/77.gif b/img/77.gif new file mode 100644 index 0000000000000000000000000000000000000000..42f9e6e14e8fb4dd9a01d3152b2c2042fe9990aa GIT binary patch literal 71 zcmZ?wbhEHb6X|Yp%;W!Kac*RYt4~)&TCH7Rmqs literal 0 HcmV?d00001 diff --git a/img/79.gif b/img/79.gif new file mode 100644 index 0000000000000000000000000000000000000000..0bde2b2206e1bfcf7da1d244202f841ac17745ad GIT binary patch literal 74 zcmZ?wbhEHb6{>Vcy1db36AuP0V6tum%7FJQ)-K literal 0 HcmV?d00001 diff --git a/img/8.gif b/img/8.gif index 19f55152cf53aa5f7dc4feda56e773dc2935106f..1bf618124727d68343730007559c104f80436a44 100644 GIT binary patch literal 66 zcmZ?wbhEHbcz-l4FE7R69oVO literal 136 zcmZ?wbhEHbXC|G8+>vNTo(YXIpu7qR0A8d?|z literal 0 HcmV?d00001 diff --git a/img/99.gif b/img/99.gif new file mode 100644 index 0000000000000000000000000000000000000000..69a6c454c8b51588f03b8f18caa35de3aba3421a GIT binary patch literal 77 zcmZ?wbhEHb Date: Sun, 24 Mar 2024 18:02:04 -0400 Subject: [PATCH 3/3] WIP: undo some formatting --- subnets.html | 1169 ++++++++++++++++++++++++-------------------------- 1 file changed, 559 insertions(+), 610 deletions(-) diff --git a/subnets.html b/subnets.html index e0fc19b..334d2a9 100644 --- a/subnets.html +++ b/subnets.html @@ -1,639 +1,588 @@ - - Visual Subnet Calculator - - - - - + + + + - - - - - - - - - -
-

Visual Subnet Calculator

- -

Enter the network you wish to subnet:

- -
- - - - - - - - - - - - -
IPv4 / IPv6Network AddressMask bits
- - - - - - / - - - -
- -

- Show columns: - - - - - - - -

-
- -

- Click below to split and join subnets.
- If you wish to save this subnetting for later, bookmark - this hyperlink. -

-
- Fork me on GitHub -
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - + + + + + + +
Subnet addressNetmaskRange of addressesUseable IPsHostsDivideJoin
+ + + + +
+ +

Visual Subnet Calculator

+ +

Enter the network you wish to subnet:

+ +
+ + + + + + + + + + + + + +
IPv4 / IPv6Network AddressMask bits
+ + +/ + +
+ +

Show columns: + + + + + + + +

+
+ +

Click below to split and join subnets.
+If you wish to save this subnetting for later, bookmark this hyperlink.

+ +
+Fork me on GitHub +
+ +
+
+
+ + +++++++++ + + + + + + + + + + + + + - -
Subnet addressNetmaskRange of addressesUseable IPsHostsDivideJoin
- + + + +