@Override public Prefix getNeighborPrefix() { return Prefix.create(_ip, Prefix.MAX_PREFIX_LENGTH); }
public Prefix getPrefix() { return Prefix.create(_host, Prefix.MAX_PREFIX_LENGTH); }
@Override public Void visitIpIpSpace(IpIpSpace ipIpSpace) { _prefixes.add(Prefix.create(ipIpSpace.getIp(), Prefix.MAX_PREFIX_LENGTH)); return null; }
public static Prefix create(Ip address, Ip mask) { return create(address, mask.numSubnetBits()); }
@Override public Prefix evaluate(Environment env) { Ip ip = _ip.evaluate(env); int prefixLength = _prefixLength.evaluate(env); return Prefix.create(ip, prefixLength); }
public LocalRoute(InterfaceAddress interfaceAddress, String nextHopInterface) { this( Prefix.create(interfaceAddress.getIp(), Prefix.MAX_PREFIX_LENGTH), nextHopInterface, interfaceAddress.getNetworkBits(), 0); }
@Override public void exitRr_network(Rr_networkContext ctx) { Ip networkAddress = toIp(ctx.network); Ip mask = networkAddress.getClassMask(); Prefix network = Prefix.create(networkAddress, mask); _currentRipProcess.getNetworks().add(network); }
public Prefix toPrefix() { if (isPrefix()) { return Prefix.create(_first, _second.inverted()); } else { throw new BatfishException("Invalid wildcard format for conversion to prefix: " + _second); } }
private Prefix extendPrefixWith(Prefix p, boolean val) { int length = p.getPrefixLength(); assert (length < Prefix.MAX_PREFIX_LENGTH); Ip ip = p.getStartIp(); long l = ip.asLong(); long lnew = l; if (val) { long delta = (long) Math.pow(2, 32 - length - 1); lnew = l + delta; } return Prefix.create(Ip.create(lnew), length + 1); }
Prefix buildPrefix(SymbolicRoute symbolicRoute, Flow flow) { Integer pfxLen = intVal(symbolicRoute.getPrefixLength()); return Prefix.create(flow.getDstIp(), pfxLen); }
@Override public void exitIp_nat_pool_range(Ip_nat_pool_rangeContext ctx) { String name = ctx.name.getText(); Ip first = toIp(ctx.first); Ip last = toIp(ctx.last); if (ctx.prefix_length != null) { Prefix subnet = Prefix.create(first, Integer.parseInt(ctx.prefix_length.getText())); createNatPool(name, first, last, subnet, ctx); } else { _configuration.getNatPools().put(name, new NatPool(first, last)); } defineStructure(NAT_POOL, name, ctx); }
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; }
@Override public void exitOgn_ip_with_mask(Ogn_ip_with_maskContext ctx) { Ip ip = toIp(ctx.ip); Ip mask = toIp(ctx.mask); _currentNetworkObjectGroup.getLines().add(new IpWildcard(Prefix.create(ip, mask)).toIpSpace()); }
@Override public void exitOn_subnet(On_subnetContext ctx) { if (ctx.address != null) { _configuration .getNetworkObjects() .put( _currentNetworkObjectInfo.getName(), new SubnetNetworkObject( Prefix.create(Ip.parse(ctx.address.getText()), Ip.parse(ctx.mask.getText())))); } else { // IPv6 _w.redFlag("Unimplemented network object line: " + getFullText(ctx)); } }
@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); } }
@Test public void testPassiveNotLocallyBroken() { BgpPassivePeerConfig peer = _nf.bgpDynamicNeighborBuilder() .setLocalAs(1L) .setPeerPrefix(Prefix.create(Ip.parse("1.1.1.1"), 24)) .setRemoteAs(ImmutableList.of(1L)) .build(); assertThat(getLocallyBrokenStatus(peer), nullValue()); } }
@Test public void testPassiveNoRemoteAs() { BgpPassivePeerConfig peer = _nf.bgpDynamicNeighborBuilder() .setLocalAs(1L) .setPeerPrefix(Prefix.create(Ip.parse("1.1.1.1"), 24)) .setRemoteAs(ImmutableList.of()) .build(); assertThat(getLocallyBrokenStatus(peer), equalTo(ConfiguredSessionStatus.NO_REMOTE_AS)); }
@Override public void applyTo(RouteFilterList rfl) { int prefixLength = _prefix.getPrefixLength(); org.batfish.datamodel.RouteFilterLine line = new org.batfish.datamodel.RouteFilterLine( LineAction.PERMIT, new IpWildcard( Prefix.create(_prefix.getStartIp(), prefixLength).getStartIp(), _addressMask), new SubRange(prefixLength, prefixLength)); rfl.addLine(line); }
@Override public Boolean visitShiftIpAddressIntoSubnet(ShiftIpAddressIntoSubnet step) { IpField field = step.getIpField(); Ip oldValue = get(field); Prefix targetSubnet = step.getSubnet(); Prefix currentSubnetPrefix = Prefix.create(oldValue, targetSubnet.getPrefixLength()); long offset = oldValue.asLong() - currentSubnetPrefix.getStartIp().asLong(); Ip newValue = Ip.create(targetSubnet.getStartIp().asLong() + offset); return set(step.getType(), field, oldValue, newValue); } }
@Test public void getRemoteIpPassivePeer() { Prefix prefix = Prefix.create(Ip.parse("1.1.1.1"), 23); BgpPassivePeerConfig passivePeerConfig = BgpPassivePeerConfig.builder().setPeerPrefix(prefix).build(); assertThat( getRemoteIp(passivePeerConfig), equalTo(new SelfDescribingObject(Schema.PREFIX, prefix))); } }