/** Apply a rib group to a given source rib */ private void applyRibGroup( @Nonnull RibGroup ribGroup, @Nonnull GenericRib<? extends AbstractRoute> sourceRib) { RoutingPolicy policy = _c.getRoutingPolicies().get(ribGroup.getImportPolicy()); checkState(policy != null, "RIB group %s is missing import policy", ribGroup.getName()); sourceRib.getRoutes().stream() .map( route -> { AbstractRouteBuilder<?, ?> builder = route.toBuilder(); boolean accept = policy.process(route, builder, null, _name, IN); return accept ? builder.build() : null; }) .filter(Objects::nonNull) .forEach( r -> ribGroup .getImportRibs() .forEach(ribId -> _node.getRib(ribId).ifPresent(rib -> rib.mergeRoute(r)))); }
new CrossVrfEdgeId(_name, rib.getRibName()), perNeighborDelta.build().getActions(), rg.getImportPolicy()));