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.OriginateVrfExpr; import org.batfish.z3.node.QueryExpr; import org.batfish.z3.node.QueryRelationExpr; import org.batfish.z3.node.RoleAcceptExpr; import org.batfish.z3.node.RuleExpr; import org.batfish.z3.node.SaneExpr; import com.microsoft.z3.Z3Exception; public class RoleReachabilityQuerySynthesizer extends BaseQuerySynthesizer { public RoleReachabilityQuerySynthesizer(String hostname, String vrf, String role) { OriginateVrfExpr originate = new OriginateVrfExpr(hostname, vrf); RoleAcceptExpr roleAccept = new RoleAcceptExpr(role); RuleExpr injectSymbolicPackets = new RuleExpr(originate); AndExpr queryConditions = new AndExpr(); queryConditions.addConjunct(roleAccept); 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 } }