package org.batfish.representation.cisco; import java.util.List; import java.util.Set; import org.batfish.datamodel.Configuration; import org.batfish.datamodel.routing_policy.expr.BooleanExpr; import org.batfish.datamodel.routing_policy.expr.DestinationNetwork; import org.batfish.datamodel.routing_policy.expr.Disjunction; import org.batfish.datamodel.routing_policy.expr.MatchPrefixSet; import org.batfish.datamodel.routing_policy.expr.NamedPrefixSet; import org.batfish.common.Warnings; public class RouteMapMatchIpPrefixListLine extends RouteMapMatchLine { private static final long serialVersionUID = 1L; private Set<String> _listNames; private final int _statementLine; public RouteMapMatchIpPrefixListLine(Set<String> names, int statementLine) { _listNames = names; _statementLine = statementLine; } public Set<String> getListNames() { return _listNames; } @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) { list.getReferers().put(this, "route-map match prefix-list"); disjuncts.add(new MatchPrefixSet(new DestinationNetwork(), new NamedPrefixSet(listName))); } else { cc.undefined(CiscoStructureType.PREFIX_LIST, listName, CiscoStructureUsage.ROUTE_MAP_MATCH_IP_PREFIX_LIST, _statementLine); } } return d.simplify(); } }