package org.batfish.datamodel; import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; import org.batfish.common.util.ComparableStructure; import org.batfish.datamodel.DiffieHellmanGroup; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; public class IpsecPolicy extends ComparableStructure<String> { private static final String PROPOSALS_VAR = "proposals"; /** * */ private static final long serialVersionUID = 1L; private DiffieHellmanGroup _pfsKeyGroup; private boolean _pfsKeyGroupDynamicIke; private transient SortedSet<String> _proposalNames; private SortedMap<String, IpsecProposal> _proposals; @JsonCreator public IpsecPolicy(@JsonProperty(NAME_VAR) String name) { super(name); _proposals = new TreeMap<>(); } public DiffieHellmanGroup getPfsKeyGroup() { return _pfsKeyGroup; } public boolean getPfsKeyGroupDynamicIke() { return _pfsKeyGroupDynamicIke; } @JsonProperty(PROPOSALS_VAR) @JsonPropertyDescription("IPSEC proposals to try with this policy") public SortedSet<String> getProposalNames() { if (_proposals != null && !_proposals.isEmpty()) { return new TreeSet<>(_proposals.keySet()); } else { return _proposalNames; } } @JsonIgnore public SortedMap<String, IpsecProposal> getProposals() { return _proposals; } public void resolveReferences(Configuration owner) { if (_proposalNames != null) { for (String name : _proposalNames) { _proposals.put(name, owner.getIpsecProposals().get(name)); } } } public void setPfsKeyGroup(DiffieHellmanGroup dhGroup) { _pfsKeyGroup = dhGroup; } public void setPfsKeyGroupDynamicIke(boolean pfsKeyGroupDynamicIke) { _pfsKeyGroupDynamicIke = pfsKeyGroupDynamicIke; } @JsonProperty(PROPOSALS_VAR) public void setProposalNames(SortedSet<String> proposalNames) { _proposalNames = proposalNames; } public void setProposals(SortedMap<String, IpsecProposal> proposals) { _proposals = proposals; } }