@Override public HeaderSpace visitMatchHeaderSpace(MatchHeaderSpace matchHeaderSpace) { return matchHeaderSpace.getHeaderspace(); }
@VisibleForTesting void forbidHeaderSpace(MatchHeaderSpace matchHeaderSpace) { HeaderSpace headerSpace = matchHeaderSpace.getHeaderspace(); _notHeaderSpaces.add(headerSpace); _notHeaderSpacesProvenance.put(headerSpace, matchHeaderSpace); }
@Override protected HeaderSpace featureValueOf(MatchHeaderSpace actual) { return actual.getHeaderspace(); } }
@VisibleForTesting void requireHeaderSpace(MatchHeaderSpace matchHeaderSpace) { HeaderSpace headerSpace = matchHeaderSpace.getHeaderspace(); if (_headerSpace == null) { _headerSpace = headerSpace; } else { Optional<HeaderSpace> intersection = IntersectHeaderSpaces.intersect(_headerSpace, headerSpace); checkState(intersection.isPresent(), "AclExplanation is unsatisfiable"); _headerSpace = intersection.get(); } _headerSpaceProvenance.add(matchHeaderSpace); }
@Override public BDD visitMatchHeaderSpace(MatchHeaderSpace matchHeaderSpace) { return _headerSpaceToBDD.toBDD(matchHeaderSpace.getHeaderspace()); }
@Override public Boolean visitMatchHeaderSpace(MatchHeaderSpace matchHeaderSpace) { return trace(matchHeaderSpace.getHeaderspace()); }
@Override public Boolean visitMatchHeaderSpace(MatchHeaderSpace matchHeaderSpace) { return matchHeaderSpace.getHeaderspace().matches(_flow, _namedIpSpaces); }
@Override public BooleanExpr visitMatchHeaderSpace(MatchHeaderSpace matchHeaderSpace) { return new HeaderSpaceMatchExpr( matchHeaderSpace.getHeaderspace(), _namedIpSpaces, _matchOriginalHeaderSpaceFields) .getExpr(); }
@Override public AclLineMatchExpr visitMatchHeaderSpace(MatchHeaderSpace matchHeaderSpace) throws CircularReferenceException, UndefinedReferenceException { return new MatchHeaderSpace( IpSpaceDereferencer.dereferenceHeaderSpace( matchHeaderSpace.getHeaderspace(), _namedIpSpaces)); }
|| matchCondition instanceof FalseExpr || (matchCondition instanceof MatchHeaderSpace && ((MatchHeaderSpace) matchCondition).getHeaderspace().unrestricted()))) {
line -> { HeaderSpace origHeader = ((MatchHeaderSpace) line.getMatchCondition()).getHeaderspace(); HeaderSpace headerSpace = origHeader
@Override public AclLineMatchExpr visitMatchHeaderSpace(MatchHeaderSpace matchHeaderSpace) { HeaderSpace headerSpace = matchHeaderSpace.getHeaderspace(); IpSpace dstIps = rename(headerSpace.getDstIps()); IpSpace notDstIps = rename(headerSpace.getNotDstIps()); IpSpace srcIps = rename(headerSpace.getSrcIps()); IpSpace notSrcIps = rename(headerSpace.getNotSrcIps()); IpSpace srcOrDstIps = rename(headerSpace.getSrcOrDstIps()); MatchHeaderSpace newMatchHeaderSpace = new MatchHeaderSpace( headerSpace .toBuilder() .setDstIps(dstIps) .setNotDstIps(notDstIps) .setSrcIps(srcIps) .setNotSrcIps(notSrcIps) .setSrcOrDstIps(srcOrDstIps) .build()); _literalsMap.put(matchHeaderSpace, newMatchHeaderSpace); return newMatchHeaderSpace; }
private static IpAccessListLine toIpAccessListLine( ExtendedAccessListLine line, Map<String, ObjectGroup> objectGroups) { IpSpace srcIpSpace = line.getSourceAddressSpecifier().toIpSpace(); IpSpace dstIpSpace = line.getDestinationAddressSpecifier().toIpSpace(); AclLineMatchExpr matchService = line.getServiceSpecifier().toAclLineMatchExpr(objectGroups); AclLineMatchExpr match; if (matchService instanceof MatchHeaderSpace) { match = new MatchHeaderSpace( ((MatchHeaderSpace) matchService) .getHeaderspace() .toBuilder() .setSrcIps(srcIpSpace) .setDstIps(dstIpSpace) .build()); } else { match = new AndMatchExpr( ImmutableList.of( matchService, new MatchHeaderSpace( HeaderSpace.builder().setSrcIps(srcIpSpace).setDstIps(dstIpSpace).build()))); } return IpAccessListLine.builder() .setAction(line.getAction()) .setMatchCondition(match) .setName(line.getName()) .build(); }
@Override public BoolExpr visitMatchHeaderSpace(MatchHeaderSpace matchHeaderSpace) { HeaderSpace headerSpace = matchHeaderSpace.getHeaderspace(); forbidHeaderSpaceField("dscps", headerSpace.getDscps()); forbidHeaderSpaceField("ecns", headerSpace.getEcns());
@Override public final AclLineMatchExpr visitMatchHeaderSpace(MatchHeaderSpace matchHeaderSpace) { HeaderSpace originalHeaderSpace = matchHeaderSpace.getHeaderspace(); HeaderSpace headerSpace = specialize(originalHeaderSpace); IpSpace dstIps = headerSpace.getDstIps();