mirror of
https://github.com/nttgin/BGPalerter.git
synced 2024-05-19 06:50:08 +00:00
52 lines
8.7 KiB
JavaScript
52 lines
8.7 KiB
JavaScript
// const subnettingV6 = [{"mask":"128","hosts":"1"},{"mask":"127","hosts":"2"},{"mask":"126","hosts":"4"},{"mask":"125","hosts":"8"},{"mask":"124","hosts":"16"},{"mask":"123","hosts":"32"},{"mask":"122","hosts":"64"},{"mask":"121","hosts":"128"},{"mask":"120","hosts":"256"},{"mask":"119","hosts":"512"},{"mask":"118","hosts":"1024"},{"mask":"117","hosts":"2048"},{"mask":"116","hosts":"4096"},{"mask":"115","hosts":"8192"},{"mask":"114","hosts":"16384"},{"mask":"113","hosts":"32768"},{"mask":"112","hosts":"65536"},{"mask":"111","hosts":"131072"},{"mask":"110","hosts":"262144"},{"mask":"109","hosts":"524288"},{"mask":"108","hosts":"1048576"},{"mask":"107","hosts":"2097152"},{"mask":"106","hosts":"4194304"},{"mask":"105","hosts":"8388608"},{"mask":"104","hosts":"16777216"},{"mask":"103","hosts":"33554432"},{"mask":"102","hosts":"67108864"},{"mask":"101","hosts":"134217728"},{"mask":"100","hosts":"268435456"},{"mask":"99","hosts":"536870912"},{"mask":"98","hosts":"1073741824"},{"mask":"97","hosts":"2147483648"},{"mask":"96","hosts":"4294967296"},{"mask":"95","hosts":"8589934592"},{"mask":"94","hosts":"17179869184"},{"mask":"93","hosts":"34359738368"},{"mask":"92","hosts":"68719476736"},{"mask":"91","hosts":"137438953472"},{"mask":"90","hosts":"274877906944"},{"mask":"89","hosts":"549755813888"},{"mask":"88","hosts":"1099511627776"},{"mask":"87","hosts":"2199023255552"},{"mask":"86","hosts":"4398046511104"},{"mask":"85","hosts":"8796093022208"},{"mask":"84","hosts":"17592186044416"},{"mask":"83","hosts":"35184372088832"},{"mask":"82","hosts":"70368744177664"},{"mask":"81","hosts":"140737488355328"},{"mask":"80","hosts":"281474976710656"},{"mask":"79","hosts":"562949953421312"},{"mask":"78","hosts":"1125899906842624"},{"mask":"77","hosts":"2251799813685248"},{"mask":"76","hosts":"4503599627370496"},{"mask":"75","hosts":"9007199254740992"},{"mask":"74","hosts":"18014398509481985"},{"mask":"73","hosts":"36028797018963968"},{"mask":"72","hosts":"72057594037927936"},{"mask":"71","hosts":"144115188075855872"},{"mask":"70","hosts":"288230376151711744"},{"mask":"69","hosts":"576460752303423488"},{"mask":"68","hosts":"1152921504606846976"},{"mask":"67","hosts":"2305843009213693952"},{"mask":"66","hosts":"4611686018427387904"},{"mask":"65","hosts":"9223372036854775808"},{"mask":"64","hosts":"18446744073709551616"},{"mask":"63","hosts":"36893488147419103232"},{"mask":"62","hosts":"73786976294838206464"},{"mask":"61","hosts":"147573952589676412928"},{"mask":"60","hosts":"295147905179352825856"},{"mask":"59","hosts":"590295810358705651712"},{"mask":"58","hosts":"1180591620717411303424"},{"mask":"57","hosts":"2361183241434822606848"},{"mask":"56","hosts":"4722366482869645213696"},{"mask":"55","hosts":"9444732965739290427392"},{"mask":"54","hosts":"18889465931478580854784"},{"mask":"53","hosts":"37778931862957161709568"},{"mask":"52","hosts":"75557863725914323419136"},{"mask":"51","hosts":"151115727451828646838272"},{"mask":"50","hosts":"302231454903657293676544"},{"mask":"49","hosts":"604462909807314587353088"},{"mask":"48","hosts":"1208925819614629174706176"},{"mask":"47","hosts":"2417851639229258349412352"},{"mask":"46","hosts":"4835703278458516698824704"},{"mask":"45","hosts":"9671406556917033397649408"},{"mask":"44","hosts":"19342813113834066795298816"},{"mask":"43","hosts":"38685626227668133590597632"},{"mask":"42","hosts":"77371252455336267181195264"},{"mask":"41","hosts":"154742504910672534362390528"},{"mask":"40","hosts":"309485009821345068724781056"},{"mask":"39","hosts":"618970019642690137449562112"},{"mask":"38","hosts":"1237940039285380274899124224"},{"mask":"37","hosts":"2475880078570760549798248448"},{"mask":"36","hosts":"4951760157141521099596496896"},{"mask":"35","hosts":"9903520314283042199192993792"},{"mask":"34","hosts":"19807040628566084398385987584"},{"mask":"33","hosts":"39614081257132168796771975168"},{"mask":"32","hosts":"79228162514264337593543950336"},{"mask":"31","hosts":"158456325028528675187087900672"},{"mask":"30","hosts":"316912650057057350374175801344"},{"mask":"29","hosts":"633825300114114700748351602688"},{"mask":"28","hosts":"1267650600228229401496703205376"},{"mask":"27","hosts":"2535301200456458802993406410752"},{"mask":"26","hosts":"5070602400912917605986812821504"},{"mask":"25","hosts":"10141204801825835211973625643008"},{"mask":"24","hosts":"20282409603651670423947251286016"},{"mask":"23","hosts":"40564819207303340847894502572032"},{"mask":"22","hosts":"81129638414606681695789005144064"},{"mask":"21","hosts":"162259276829213363391578010288128"},{"mask":"20","hosts":"324518553658426726783156020576256"},{"mask":"19","hosts":"649037107316853453566312041152512"},{"mask":"18","hosts":"1298074214633706907132624082305024"},{"mask":"17","hosts":"2596148429267413814265248164610048"},{"mask":"16","hosts":"5192296858534827628530496329220096"},{"mask":"15","hosts":"10384593717069655257060992658440192"},{"mask":"14","hosts":"20769187434139310514121985316880384"},{"mask":"13","hosts":"41538374868278621028243970633760768"},{"mask":"12","hosts":"83076749736557242056487941267521536"},{"mask":"11","hosts":"166153499473114484112975882535043072"},{"mask":"10","hosts":"332306998946228968225951765070086144"},{"mask":"9","hosts":"664613997892457936451903530140172288"},{"mask":"8","hosts":"1329227995784915872903807060280344576"}];
|
|
|
|
const subnettingV6 = {"8":1.329227995784916e+36,"9":6.64613997892458e+35,"10":3.32306998946229e+35,"11":1.661534994731145e+35,"12":8.307674973655724e+34,"13":4.153837486827862e+34,"14":2.076918743413931e+34,"15":1.0384593717069655e+34,"16":5.192296858534828e+33,"17":2.596148429267414e+33,"18":1.298074214633707e+33,"19":6.490371073168535e+32,"20":3.2451855365842673e+32,"21":1.6225927682921336e+32,"22":8.112963841460668e+31,"23":4.056481920730334e+31,"24":2.028240960365167e+31,"25":1.0141204801825835e+31,"26":5.070602400912918e+30,"27":2.535301200456459e+30,"28":1.2676506002282294e+30,"29":6.338253001141147e+29,"30":3.1691265005705735e+29,"31":1.5845632502852868e+29,"32":7.922816251426434e+28,"33":3.961408125713217e+28,"34":1.9807040628566084e+28,"35":9.903520314283042e+27,"36":4.951760157141521e+27,"37":2.4758800785707605e+27,"38":1.2379400392853803e+27,"39":6.189700196426902e+26,"40":3.094850098213451e+26,"41":1.5474250491067253e+26,"42":7.737125245533627e+25,"43":3.8685626227668134e+25,"44":1.9342813113834067e+25,"45":9.671406556917033e+24,"46":4.835703278458517e+24,"47":2.4178516392292583e+24,"48":1.2089258196146292e+24,"49":6.044629098073146e+23,"50":3.022314549036573e+23,"51":1.5111572745182865e+23,"52":7.555786372591432e+22,"53":3.777893186295716e+22,"54":1.888946593147858e+22,"55":9.44473296573929e+21,"56":4.722366482869645e+21,"57":2.3611832414348226e+21,"58":1.1805916207174113e+21,"59":590295810358705700000,"60":295147905179352830000,"61":147573952589676410000,"62":73786976294838210000,"63":36893488147419103000,"64":18446744073709552000,"65":9223372036854776000,"66":4611686018427388000,"67":2305843009213694000,"68":1152921504606847000,"69":576460752303423500,"70":288230376151711740,"71":144115188075855870,"72":72057594037927940,"73":36028797018963970,"74":18014398509481984,"75":9007199254740992,"76":4503599627370496,"77":2251799813685248,"78":1125899906842624,"79":562949953421312,"80":281474976710656,"81":140737488355328,"82":70368744177664,"83":35184372088832,"84":17592186044416,"85":8796093022208,"86":4398046511104,"87":2199023255552,"88":1099511627776,"89":549755813888,"90":274877906944,"91":137438953472,"92":68719476736,"93":34359738368,"94":17179869184,"95":8589934592,"96":4294967296,"97":2147483648,"98":1073741824,"99":536870912,"100":268435456,"101":134217728,"102":67108864,"103":33554432,"104":16777216,"105":8388608,"106":4194304,"107":2097152,"108":1048576,"109":524288,"110":262144,"111":131072,"112":65536,"113":32768,"114":16384,"115":8192,"116":4096,"117":2048,"118":1024,"119":512,"120":256,"121":128,"122":64,"123":32,"124":16,"125":8,"126":4,"127":2,"128":1}
|
|
|
|
const subnettingV4 = {
|
|
"8": 1,
|
|
"9": 2,
|
|
"10": 4,
|
|
"11": 8,
|
|
"12": 16,
|
|
"13": 32,
|
|
"14": 64,
|
|
"15": 128,
|
|
"16": 256,
|
|
"17": 512,
|
|
"18": 1024,
|
|
"19": 2048,
|
|
"20": 4096,
|
|
"21": 8192,
|
|
"22": 16384,
|
|
"23": 32768,
|
|
"24": 65536,
|
|
"25": 131072,
|
|
"26": 262144,
|
|
"27": 524288,
|
|
"28": 1048576,
|
|
"29": 2097152,
|
|
"30": 4194304,
|
|
"31": 8388608,
|
|
"32": 16777216
|
|
};
|
|
|
|
module.exports = {
|
|
|
|
getNumberOfAddresses: function(prefix) {
|
|
const v4 = prefix.indexOf(":") === -1;
|
|
const netmask = prefix.split("/")[1];
|
|
|
|
if (v4) {
|
|
return subnettingV4[netmask] * Math.pow(2, 32 - parseInt(netmask)) - 1;
|
|
} else {
|
|
return subnettingV6[netmask];
|
|
}
|
|
},
|
|
sortByPrefixLength : function (a, b) {
|
|
const netA = a.split("/")[1];
|
|
const netB = b.split("/")[1];
|
|
|
|
return netA - netB;
|
|
}
|
|
|
|
}; |