package org.batfish.datamodel; import java.util.ArrayList; import java.util.List; public class PrefixSpaceList { public static PrefixSpaceList fromRouteFilter(RouteFilterList rf) { PrefixSpaceList list = new PrefixSpaceList(); List<PrefixSpaceLine> lines = list._lines; LineAction currentAction = null; PrefixSpaceLine currentLine = null; PrefixSpace currentPrefixSpace = new PrefixSpace(); for (RouteFilterLine rfLine : rf.getLines()) { LineAction rflAction = rfLine.getAction(); if (currentAction != rflAction) { currentAction = rflAction; currentPrefixSpace = new PrefixSpace(); currentLine = new PrefixSpaceLine(currentPrefixSpace, currentAction); lines.add(currentLine); } PrefixRange rflRange = new PrefixRange(rfLine.getPrefix(), rfLine.getLengthRange()); currentPrefixSpace.addPrefixRange(rflRange); } return list; } private final List<PrefixSpaceLine> _lines; public PrefixSpaceList() { _lines = new ArrayList<>(); } public LineAction getAction(Prefix prefix) { for (PrefixSpaceLine line : _lines) { PrefixSpace space = line.getPrefixSpace(); if (space.containsPrefix(prefix)) { return line.getAction(); } } return LineAction.REJECT; } public List<PrefixSpaceLine> getLines() { return _lines; } }