-
Notifications
You must be signed in to change notification settings - Fork 129
Expand file tree
/
Copy pathcalculations_6.js
More file actions
79 lines (66 loc) · 2.08 KB
/
calculations_6.js
File metadata and controls
79 lines (66 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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;
}