@Override public Void visitMatchSrcInterface(MatchSrcInterface matchSrcInterface) { _referencedSources.addAll(matchSrcInterface.getSrcInterfaces()); return null; }
@Override public Boolean visitMatchSrcInterface(MatchSrcInterface matchSrcInterface) { return matchSrcInterface.getSrcInterfaces().contains(_srcInterface); }
@VisibleForTesting void requireSourceInterfaces(MatchSrcInterface matchSrcInterface) { Set<String> sourceInterfaces = matchSrcInterface.getSrcInterfaces(); checkState(_sources != Sources.DEVICE, "AclExplanation is unsatisfiable"); _sources = Sources.INTERFACES; _sourceInterfaces = _sourceInterfaces == null ? sourceInterfaces : Sets.intersection(_sourceInterfaces, sourceInterfaces); checkState(!_sourceInterfaces.isEmpty(), "AclExplanation is unsatisfiable"); _sourceInterfacesProvenance.add(matchSrcInterface); }
@Override public BDD visitMatchSrcInterface(MatchSrcInterface matchSrcInterface) { return _bddOps.or( matchSrcInterface.getSrcInterfaces().stream() .map(_bddSrcManager::getSourceInterfaceBDD) .collect(Collectors.toList())); }
@Override public BooleanExpr visitMatchSrcInterface(MatchSrcInterface matchSrcInterface) { return new OrExpr( matchSrcInterface.getSrcInterfaces().stream() .map(this::matchSrcInterfaceExpr) .collect(ImmutableList.toImmutableList())); }
.filter( line -> !((MatchSrcInterface) line.getMatchCondition()).getSrcInterfaces().isEmpty()) .collect(Collectors.toList()));
@Override public final AclLineMatchExpr visitMatchSrcInterface(MatchSrcInterface matchSrcInterface) { // Remove interfaces that can't match List<String> relevantInterfaces = new ArrayList<>(); List<BDD> matchingInterfaceBDDs = new ArrayList<>(); for (String iface : matchSrcInterface.getSrcInterfaces()) { BDD interfaceBDD = _bddSrcManager.getSourceInterfaceBDD(iface); if (!interfaceBDD.and(_flowBDD).isZero()) { matchingInterfaceBDDs.add(interfaceBDD); relevantInterfaces.add(iface); } } if (relevantInterfaces.isEmpty()) { return FalseExpr.INSTANCE; } else if (_simplifyToTrue && _flowBDD.imp(BDDOps.orNull(matchingInterfaceBDDs)).isOne()) { return TrueExpr.INSTANCE; } return new MatchSrcInterface(relevantInterfaces); }
Set<String> referencedInterfaces = matchSrcInterfaceExprs.stream() .flatMap(expr -> expr.getSrcInterfaces().stream()) .collect(Collectors.toSet()); if (!nodeInterfaces.containsAll(referencedInterfaces)) {