package org.batfish.representation.juniper;
import java.util.Collections;
import java.util.List;
import org.batfish.common.util.CommonUtil;
import org.batfish.datamodel.Configuration;
import org.batfish.datamodel.routing_policy.expr.InlineCommunitySet;
import org.batfish.datamodel.routing_policy.statement.SetCommunity;
import org.batfish.datamodel.routing_policy.statement.Statement;
import org.batfish.common.Warnings;
public final class PsThenCommunitySet extends PsThen {
/**
*
*/
private static final long serialVersionUID = 1L;
private JuniperConfiguration _configuration;
private final String _name;
public PsThenCommunitySet(String name, JuniperConfiguration configuration) {
_name = name;
_configuration = configuration;
}
@Override
public void applyTo(List<Statement> statements,
JuniperConfiguration juniperVendorConfiguration, Configuration c,
Warnings warnings) {
CommunityList namedList = _configuration.getCommunityLists().get(_name);
if (namedList == null) {
warnings
.redFlag("Reference to undefined community: \"" + _name + "\"");
}
else {
org.batfish.datamodel.CommunityList list = c.getCommunityLists()
.get(_name);
String regex = list.getLines().get(0).getRegex();
// assuming this is a valid community list for setting, the regex value
// just retrieved should just be an explicit community
long community = CommonUtil.communityStringToLong(regex);
statements.add(new SetCommunity(
new InlineCommunitySet(Collections.singleton(community))));
}
}
public String getName() {
return _name;
}
}