private BDD matchPrefixSet(
TransferParam<BDDRoute> p, Configuration conf, PrefixSetExpr e, BDDRoute other) {
if (e instanceof ExplicitPrefixSet) {
ExplicitPrefixSet x = (ExplicitPrefixSet) e;
Set<PrefixRange> ranges = x.getPrefixSpace().getPrefixRanges();
if (ranges.isEmpty()) {
p.debug("empty");
return factory.one();
}
BDD acc = factory.zero();
for (PrefixRange range : ranges) {
p.debug("Prefix Range: " + range);
if (!PrefixUtils.isContainedBy(range.getPrefix(), _ignoredNetworks)) {
acc = acc.or(isRelevantFor(other, range));
}
}
return acc;
} else if (e instanceof NamedPrefixSet) {
NamedPrefixSet x = (NamedPrefixSet) e;
p.debug("Named: " + x.getName());
String name = x.getName();
RouteFilterList fl = conf.getRouteFilterLists().get(name);
return matchFilterList(p, fl, other);
} else {
throw new BatfishException("TODO: match prefix set: " + e);
}
}