/** The composite cost, after scaling for RIB */ @JsonIgnore public long getRibMetric() { // TODO make configurable using 'metric rib-scale' int namedRibScale = 128; return getCost() / ((_mode == EigrpProcessMode.NAMED) ? namedRibScale : 1); }
.max() .getAsLong(); namedBandwidth = classicToNamedBandwidth(classicBandwidth); classicDelay = _classicDelay + routeMetric._classicDelay; namedDelay = classicToNamedDelay(classicDelay); } else { namedBandwidth = .min() .getAsLong(); classicBandwidth = namedToClassicBandwidth(namedBandwidth); namedDelay = _namedDelay + routeMetric._namedDelay; classicDelay = namedToClassicDelay(namedDelay); return new EigrpMetric(classicBandwidth, namedBandwidth, classicDelay, namedDelay, _mode);
/** The composite cost */ @JsonIgnore public long getCost() { if (_cost == null) { _cost = computeCost(); } return _cost; }
@Test public void testEigrpInternalRouteClone() throws IOException { EigrpInternalRoute route = EigrpInternalRoute.builder() .setNetwork(Prefix.parse("1.1.1.1/32")) .setEigrpMetric( EigrpMetric.builder() .setBandwidth(1000.0) .setDelay(2.0) .setMode(EigrpProcessMode.NAMED) .build()) .setProcessAsn(1L) .build(); assertThat(BatfishObjectMapper.clone(route, EigrpInternalRoute.class), equalTo(route)); }
for (EigrpInternalRoute neighborRoute : neighborRoutes) { EigrpMetric newMetric = connectingInterfaceMetric.accumulate( neighborInterfaceMetric, neighborRoute.getEigrpMetric()); EigrpInternalRoute newRoute =
@Override public final Long getMetric() { return _metric.getRibMetric(); }
@Nullable public EigrpMetric build() { Double delay = _delay == null ? _defaultDelay : _delay; Double bandwidth = _bandwidth == null ? _defaultBandwidth : _bandwidth; if (bandwidth == null || bandwidth == 0D || delay == null || _mode == null) { return null; } return new EigrpMetric(bandwidth, delay, _mode); }
@Override @Nonnull protected Double featureValueOf(EigrpMetric actual) { return actual.getBandwidth(); } }
@Override @Nonnull protected Double featureValueOf(EigrpMetric actual) { return actual.getDelay(); } }
@Test public void testEigrpExternalRouteClone() throws IOException { EigrpExternalRoute route = EigrpExternalRoute.builder() .setNetwork(Prefix.parse("1.1.1.1/32")) .setEigrpMetric( EigrpMetric.builder() .setBandwidth(1000.0) .setDelay(2.0) .setMode(EigrpProcessMode.NAMED) .build()) .setProcessAsn(1L) .setDestinationAsn(2L) .build(); assertThat(BatfishObjectMapper.clone(route, EigrpExternalRoute.class), equalTo(route)); } }
EigrpExternalRoute neighborRoute = routeAdvert.getRoute(); EigrpMetric metric = connectingIntfMetric.accumulate(nextHopIntfMetric, neighborRoute.getEigrpMetric()); routeBuilder .setDestinationAsn(neighborRoute.getDestinationAsn())
private EigrpMetric toEigrpMetric( ParserRuleContext ctx, Token ctxBw, Token ctxDelay, Token ctxReliability, Token ctxEffBw, Token ctxMtu) { if (_currentEigrpProcess == null) { return null; } EigrpMetric.Builder builder = EigrpMetric.builder(); double bandwidth = toLong(ctxBw) * 1000.0D; builder.setBandwidth(bandwidth); double delay = toLong(ctxDelay) * 1E7; builder.setDelay(delay); int reliability = toInteger(ctxReliability); if (reliability != 0) { todo(ctx); } int effBw = toInteger(ctxEffBw); if (effBw != 0) { todo(ctx); } int mtu = toInteger(ctxMtu); if (mtu != 0) { todo(ctx); } builder.setMode(_currentEigrpProcess.getMode()); return builder.build(); }
@JsonIgnore public final long getCompositeCost() { return _metric.getCost(); }
EigrpMetric.builder() .setBandwidth(iface.getBandwidth()) .setMode(eigrpProcess.getMode())
@Override @Nonnull protected Long featureValueOf(EigrpMetric actual) { return actual.getCost(); } }