@webwriter/network
Version:
Visualization of network topologies. Can represent different kinds of networks.
34 lines (28 loc) • 1.24 kB
text/typescript
import { AddressingHelper } from "./AdressingHelper";
export class RoutingData {
destination: string;
gateway: string | "on-link";
netmask: string;
bitmask: number;
interfaceName: string;
port: number;
constructor(destination: string, gateway: string, bitmask: number, interfaceName: string, port: number) {
this.bitmask = bitmask;
this.netmask = AddressingHelper.binaryToDecimalOctets("".padEnd(bitmask, "1").padEnd(32, "0")).join('.');
this.port = port;
this.interfaceName = interfaceName;
if (RoutingData.validateAddressSchema(destination)) this.destination = destination;
if (gateway=="on-link" || RoutingData.validateAddressSchema(gateway)) this.gateway = gateway;
}
static validateAddressSchema(address: string): boolean {
let stringArray = address.split('.');
if (stringArray.length != 4) return false;
let outOfRange: boolean = false;
stringArray.forEach(octet => {
let intOctet = parseInt(octet);
if (intOctet == undefined || intOctet < 0 || intOctet > 255) outOfRange = true;
});
if (outOfRange) return false;
return true;
}
}