@Override public BooleanExpr toBooleanExpr(CiscoConfiguration cc, Configuration c, Warnings w) { Disjunction disj = new Disjunction(); BooleanExpr left = _left.toBooleanExpr(cc, c, w); BooleanExpr right = _right.toBooleanExpr(cc, c, w); List<BooleanExpr> disjuncts = disj.getDisjuncts(); disjuncts.add(left); disjuncts.add(right); return disj.simplify(); } }
@Override public BooleanExpr toBooleanExpr(Configuration c, CiscoConfiguration cc, Warnings w) { Disjunction d = new Disjunction(); List<BooleanExpr> disjuncts = d.getDisjuncts(); for (String protocol : _protocols) { disjuncts.add(new MatchProtocol(RoutingProtocol.fromProtocolName(protocol))); } return d.simplify(); } }
@Override public BooleanExpr toBooleanExpr(Configuration c, CiscoConfiguration cc, Warnings w) { Disjunction d = new Disjunction(); List<BooleanExpr> disjuncts = d.getDisjuncts(); for (int tag : _tags) { disjuncts.add(new MatchTag(IntComparator.EQ, new LiteralInt(tag))); } return d.simplify(); } }
@Override public BooleanExpr toBooleanExpr(Configuration c, CiscoConfiguration cc, Warnings w) { Disjunction d = new Disjunction(); List<BooleanExpr> disjuncts = d.getDisjuncts(); for (String listName : _listNames) { IpAsPathAccessList list = cc.getAsPathAccessLists().get(listName); if (list != null) { disjuncts.add(new MatchAsPath(new NamedAsPathSet(listName))); } } return d.simplify(); } }
@Override public BooleanExpr toBooleanExpr(Configuration c, CiscoConfiguration cc, Warnings w) { Disjunction d = new Disjunction(); List<BooleanExpr> disjuncts = d.getDisjuncts(); for (String listName : _listNames) { CommunityList list = c.getCommunityLists().get(listName); if (list != null) { disjuncts.add(new MatchCommunitySet(new NamedCommunitySet(listName))); } } return d.simplify(); } }
@Override public BooleanExpr toBooleanExpr(Configuration c, CiscoConfiguration cc, Warnings w) { Disjunction d = new Disjunction(); List<BooleanExpr> disjuncts = d.getDisjuncts(); for (String listName : _listNames) { PrefixList list = cc.getPrefixLists().get(listName); if (list != null) { disjuncts.add( new MatchPrefixSet(DestinationNetwork.instance(), new NamedPrefixSet(listName))); } } return d.simplify(); } }
@Test public void simplifySkipFalse() { Disjunction manyFalse = new Disjunction(ImmutableList.of(FALSE, FALSE, CALL_EXPR_CONTEXT, FALSE)); assertThat(manyFalse.simplify(), is(CALL_EXPR_CONTEXT)); }
@Override public BooleanExpr toBooleanExpr(Configuration c, CiscoConfiguration cc, Warnings w) { Disjunction d = new Disjunction(); List<BooleanExpr> disjuncts = d.getDisjuncts(); for (String listName : _listNames) { Prefix6List list = cc.getPrefix6Lists().get(listName); if (list != null) { disjuncts.add( new MatchPrefix6Set(new DestinationNetwork6(), new NamedPrefix6Set(listName))); } } return d.simplify(); } }
@Test public void simplifyTrue() { Disjunction trueS = new Disjunction(ImmutableList.of(TRUE)); assertThat(trueS.simplify(), is(TRUE)); }
@Test public void simplifySingleStatement() { Disjunction single = new Disjunction(ImmutableList.of(CALL_EXPR_CONTEXT)); assertThat(single.simplify(), is(CALL_EXPR_CONTEXT)); }
@Test public void simplifyTwoStatements() { Disjunction two = new Disjunction(ImmutableList.of(CALL_EXPR_CONTEXT, CALL_STATEMENT_CONTEXT)); BooleanExpr simplified = two.simplify(); assertThat(simplified, allOf(instanceOf(Disjunction.class), equalTo(two))); assertThat(simplified.simplify(), is(simplified)); }
@Test public void simplifyFalse() { Disjunction falseS = new Disjunction(ImmutableList.of(FALSE)); assertThat(falseS.simplify(), is(FALSE)); }
@Test public void simplifyEmpty() { Disjunction empty = new Disjunction(); assertThat(empty.simplify(), is(FALSE)); }
@Override public BooleanExpr toBooleanExpr(Configuration c, CiscoConfiguration cc, Warnings w) { Disjunction d = new Disjunction(); List<BooleanExpr> disjuncts = d.getDisjuncts(); for (String listName : _listNames) { Object list; IpAccessList ipAccessList = null; RouteFilterList routeFilterList = null; if (_routing) { routeFilterList = c.getRouteFilterLists().get(listName); list = routeFilterList; } else { ipAccessList = c.getIpAccessLists().get(listName); list = ipAccessList; } if (list != null) { if (_routing) { disjuncts.add( new MatchPrefixSet(DestinationNetwork.instance(), new NamedPrefixSet(listName))); } else { disjuncts.add(new MatchIpAccessList(listName)); } } } return d.simplify(); } }
@Override public BooleanExpr toBooleanExpr(Configuration c, CiscoConfiguration cc, Warnings w) { Disjunction d = new Disjunction(); List<BooleanExpr> disjuncts = d.getDisjuncts(); for (String listName : _listNames) { Object list; Ip6AccessList ipAccessList = null; Route6FilterList routeFilterList = null; if (_routing) { routeFilterList = c.getRoute6FilterLists().get(listName); list = routeFilterList; } else { ipAccessList = c.getIp6AccessLists().get(listName); list = ipAccessList; } if (list != null) { if (_routing) { disjuncts.add( new MatchPrefix6Set(new DestinationNetwork6(), new NamedPrefix6Set(listName))); } else { disjuncts.add(new MatchIp6AccessList(listName)); } } } return d.simplify(); } }
@Test public void simplifyShortCircuit() { Disjunction shortCircuit = new Disjunction(ImmutableList.of(CALL_EXPR_CONTEXT, TRUE, CALL_STATEMENT_CONTEXT)); BooleanExpr simplified = shortCircuit.simplify(); assertThat(simplified, instanceOf(Disjunction.class)); List<BooleanExpr> disjuncts = ((Disjunction) simplified).getDisjuncts(); assertThat(disjuncts, equalTo(ImmutableList.of(CALL_EXPR_CONTEXT, TRUE))); } }