private Prefix(Ip ip, int prefixLength) { if (ip.valid()) { // TODO: stop using Ip as a holder for invalid values. _ip = ip.getNetworkAddress(prefixLength); } else { _ip = ip; } _prefixLength = prefixLength; }
public PrefixRange(Prefix prefix, SubRange lengthRange) { // Canonicalize the prefix by dropping extra bits in the address that are longer than any // relevant length. int realPrefixLength = Math.min(prefix.getPrefixLength(), lengthRange.getEnd()); Ip realPrefixAddress = prefix.getStartIp().getNetworkAddress(realPrefixLength); this._prefix = Prefix.create(realPrefixAddress, prefix.getPrefixLength()); this._lengthRange = lengthRange; }
public boolean includesPrefixRange(PrefixRange argPrefixRange) { Prefix prefix = getPrefix(); SubRange lengthRange = getLengthRange(); int prefixLength = prefix.getPrefixLength(); long maskedPrefixAsLong = prefix.getStartIp().getNetworkAddress(prefixLength).asLong(); Prefix argPrefix = argPrefixRange.getPrefix(); SubRange argLengthRange = argPrefixRange.getLengthRange(); long argMaskedPrefixAsLong = argPrefix.getStartIp().getNetworkAddress(prefixLength).asLong(); return maskedPrefixAsLong == argMaskedPrefixAsLong && lengthRange.getStart() <= argLengthRange.getStart() && lengthRange.getEnd() >= argLengthRange.getEnd(); }
@Override public void applyTo(RouteFilterList rfl) { int low = _prefix.getPrefixLength(); int high = _throughPrefix.getPrefixLength(); for (int i = low; i <= high; i++) { Ip currentNetworkAddress = _throughPrefix.getStartIp().getNetworkAddress(i); Prefix currentPrefix = Prefix.create(currentNetworkAddress, i); org.batfish.datamodel.RouteFilterLine line = new org.batfish.datamodel.RouteFilterLine( LineAction.PERMIT, currentPrefix, new SubRange(i, i)); rfl.addLine(line); } }
Ip networkAddress = networkPrefix.getStartIp(); Ip maskedInterfaceAddress = interfaceAddress.getIp().getNetworkAddress(networkPrefix.getPrefixLength()); if (maskedInterfaceAddress.equals(networkAddress)) {