package org.batfish.datamodel.routing_policy.statement;
import org.batfish.datamodel.BgpRoute;
import org.batfish.datamodel.OriginType;
import org.batfish.datamodel.routing_policy.Environment;
import org.batfish.datamodel.routing_policy.Result;
import org.batfish.datamodel.routing_policy.expr.OriginExpr;
import com.fasterxml.jackson.annotation.JsonCreator;
public class SetOrigin extends Statement {
/**
*
*/
private static final long serialVersionUID = 1L;
private OriginExpr _origin;
@JsonCreator
private SetOrigin() {
}
public SetOrigin(OriginExpr origin) {
_origin = origin;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
SetOrigin other = (SetOrigin) obj;
if (_origin == null) {
if (other._origin != null) {
return false;
}
}
else if (!_origin.equals(other._origin)) {
return false;
}
return true;
}
@Override
public Result execute(Environment environment) {
BgpRoute.Builder bgpRoute = (BgpRoute.Builder) environment
.getOutputRoute();
OriginType originType = _origin.evaluate(environment);
bgpRoute.setOriginType(originType);
if (environment.getWriteToIntermediateBgpAttributes()) {
environment.getIntermediateBgpAttributes().setOriginType(originType);
}
Result result = new Result();
return result;
}
public OriginExpr getOriginType() {
return _origin;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((_origin == null) ? 0 : _origin.hashCode());
return result;
}
public void setOriginType(OriginExpr origin) {
_origin = origin;
}
}