package org.batfish.z3;
import org.batfish.z3.node.AndExpr;
import org.batfish.z3.node.ExternalDestinationIpExpr;
import org.batfish.z3.node.ExternalSourceIpExpr;
import org.batfish.z3.node.NodeTransitExpr;
import org.batfish.z3.node.QueryExpr;
import org.batfish.z3.node.QueryRelationExpr;
import org.batfish.z3.node.RoleOriginateExpr;
import org.batfish.z3.node.RuleExpr;
import org.batfish.z3.node.SaneExpr;
import com.microsoft.z3.Z3Exception;
public class RoleTransitQuerySynthesizer extends BaseQuerySynthesizer {
public RoleTransitQuerySynthesizer(String sourceRole, String transitNode) {
RoleOriginateExpr roleOriginate = new RoleOriginateExpr(sourceRole);
NodeTransitExpr nodeTransit = new NodeTransitExpr(transitNode);
RuleExpr injectSymbolicPackets = new RuleExpr(roleOriginate);
AndExpr queryConditions = new AndExpr();
queryConditions.addConjunct(nodeTransit);
queryConditions.addConjunct(SaneExpr.INSTANCE);
queryConditions.addConjunct(ExternalSourceIpExpr.INSTANCE);
queryConditions.addConjunct(ExternalDestinationIpExpr.INSTANCE);
RuleExpr queryRule = new RuleExpr(queryConditions,
QueryRelationExpr.INSTANCE);
QueryExpr query = new QueryExpr(QueryRelationExpr.INSTANCE);
StringBuilder sb = new StringBuilder();
injectSymbolicPackets.print(sb, 0);
sb.append("\n");
queryRule.print(sb, 0);
sb.append("\n");
query.print(sb, 0);
sb.append("\n");
}
@Override
public NodProgram getNodProgram(NodProgram baseProgram) throws Z3Exception {
throw new UnsupportedOperationException(
"no implementation for generated method"); // TODO Auto-generated
// method stub
}
}