package org.batfish.datamodel;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
public final class GeneratedRoute6 extends AbstractRoute6
implements Comparable<GeneratedRoute6> {
public static class Builder extends AbstractRoute6Builder<GeneratedRoute6> {
private AsPath _asPath;
private String _attributePolicy;
private boolean _discard;
private String _generationPolicy;
private String _nextHopInterface;
@Override
public GeneratedRoute6 build() {
GeneratedRoute6 gr = new GeneratedRoute6(_network, _nextHopIp);
gr.setAdministrativePreference(_admin);
gr.setMetric(_metric);
gr.setGenerationPolicy(_generationPolicy);
gr.setAttributePolicy(_attributePolicy);
gr.setDiscard(_discard);
gr.setAsPath(_asPath);
gr.setNextHopInterface(_nextHopInterface);
return gr;
}
public void setAsPath(AsPath asPath) {
_asPath = asPath;
}
public void setAttributePolicy(String attributePolicy) {
_attributePolicy = attributePolicy;
}
public void setDiscard(boolean discard) {
_discard = discard;
}
public void setGenerationPolicy(String generationPolicy) {
_generationPolicy = generationPolicy;
}
public void setNextHopInterface(String nextHopInterface) {
_nextHopInterface = nextHopInterface;
}
}
private static final String AS_PATH_VAR = "asPath";
private static final String DISCARD_VAR = "discard";
private static final String METRIC_VAR = "metric";
private static final long serialVersionUID = 1L;
private int _administrativeCost;
private AsPath _asPath;
private String _attributePolicy;
private boolean _discard;
private String _generationPolicy;
private Integer _metric;
private String _nextHopInterface;
@JsonCreator
public GeneratedRoute6(@JsonProperty(NETWORK_VAR) Prefix6 prefix6) {
super(prefix6, null);
}
public GeneratedRoute6(Prefix6 prefix6, int administrativeCost) {
super(prefix6, null);
_administrativeCost = administrativeCost;
}
public GeneratedRoute6(Prefix6 prefix6, Ip6 nextHopIp) {
super(prefix6, nextHopIp);
}
@Override
public int compareTo(GeneratedRoute6 o) {
return _network.compareTo(o._network);
}
@Override
public boolean equals(Object o) {
GeneratedRoute6 rhs = (GeneratedRoute6) o;
return _network.equals(rhs._network);
}
@Override
public int getAdministrativeCost() {
return _administrativeCost;
}
@JsonProperty(AS_PATH_VAR)
public AsPath getAsPath() {
return _asPath;
}
public String getAttributePolicy() {
return _attributePolicy;
}
@JsonProperty(DISCARD_VAR)
public boolean getDiscard() {
return _discard;
}
public String getGenerationPolicy() {
return _generationPolicy;
}
@JsonProperty(METRIC_VAR)
@Override
public Integer getMetric() {
return _metric;
}
@Override
public String getNextHopInterface() {
return _nextHopInterface;
}
@Override
@JsonIgnore
public Ip6 getNextHopIp() {
return super.getNextHopIp();
}
@Override
public RoutingProtocol getProtocol() {
return RoutingProtocol.AGGREGATE;
}
@Override
@JsonIgnore
public int getTag() {
return NO_TAG;
}
@Override
public int hashCode() {
return _network.hashCode();
}
@JsonProperty(ADMINISTRATIVE_COST_VAR)
public void setAdministrativePreference(int preference) {
_administrativeCost = preference;
}
@JsonProperty(AS_PATH_VAR)
public void setAsPath(AsPath asPath) {
_asPath = asPath;
}
public void setAttributePolicy(String attributePolicy) {
_attributePolicy = attributePolicy;
}
@JsonProperty(DISCARD_VAR)
public void setDiscard(boolean discard) {
_discard = discard;
}
public void setGenerationPolicy(String generationPolicy) {
_generationPolicy = generationPolicy;
}
@JsonProperty(METRIC_VAR)
public void setMetric(int metric) {
_metric = metric;
}
public void setNextHopInterface(String nextHopInterface) {
_nextHopInterface = nextHopInterface;
}
}