Search in sources :

Example 1 with Result

use of org.batfish.datamodel.routing_policy.Result in project batfish by batfish.

the class CallExpr method evaluate.

@Override
public Result evaluate(Environment environment) {
    RoutingPolicy policy = environment.getConfiguration().getRoutingPolicies().get(_calledPolicyName);
    Result result;
    if (policy == null) {
        result = new Result();
        environment.setError(true);
        result.setBooleanValue(false);
    } else {
        boolean oldCallExprContext = environment.getCallExprContext();
        boolean oldLocalDefaultAction = environment.getLocalDefaultAction();
        environment.setCallExprContext(true);
        result = policy.call(environment);
        result.setReturn(false);
        environment.setCallExprContext(oldCallExprContext);
        environment.setLocalDefaultAction(oldLocalDefaultAction);
    }
    return result;
}
Also used : RoutingPolicy(org.batfish.datamodel.routing_policy.RoutingPolicy) Result(org.batfish.datamodel.routing_policy.Result)

Example 2 with Result

use of org.batfish.datamodel.routing_policy.Result in project batfish by batfish.

the class Conjunction method evaluate.

@Override
public Result evaluate(Environment environment) {
    for (BooleanExpr conjunct : _conjuncts) {
        Result conjunctResult = conjunct.evaluate(environment);
        if (conjunctResult.getExit()) {
            return conjunctResult;
        } else if (!conjunctResult.getBooleanValue()) {
            conjunctResult.setReturn(false);
            return conjunctResult;
        }
    }
    Result result = new Result();
    result.setBooleanValue(true);
    return result;
}
Also used : Result(org.batfish.datamodel.routing_policy.Result)

Example 3 with Result

use of org.batfish.datamodel.routing_policy.Result in project batfish by batfish.

the class ConjunctionChain method evaluate.

@Override
public Result evaluate(Environment environment) {
    Result subroutineResult = new Result();
    subroutineResult.setFallThrough(true);
    for (BooleanExpr subroutine : _subroutines) {
        subroutineResult = subroutine.evaluate(environment);
        if (subroutineResult.getExit()) {
            return subroutineResult;
        } else if (!subroutineResult.getFallThrough() && !subroutineResult.getBooleanValue()) {
            subroutineResult.setReturn(false);
            return subroutineResult;
        }
    }
    if (!subroutineResult.getFallThrough()) {
        return subroutineResult;
    } else {
        String defaultPolicy = environment.getDefaultPolicy();
        if (defaultPolicy != null) {
            CallExpr callDefaultPolicy = new CallExpr(environment.getDefaultPolicy());
            Result defaultPolicyResult = callDefaultPolicy.evaluate(environment);
            return defaultPolicyResult;
        } else {
            throw new BatfishException("Default policy not set");
        }
    }
}
Also used : BatfishException(org.batfish.common.BatfishException) Result(org.batfish.datamodel.routing_policy.Result)

Example 4 with Result

use of org.batfish.datamodel.routing_policy.Result in project batfish by batfish.

the class SetIsisLevel method execute.

@Override
public Result execute(Environment environment) {
    Result result = new Result();
    IsisLevel level = _level.evaluate(environment);
    IsisRoute.Builder isisRouteBuilder = (IsisRoute.Builder) environment.getOutputRoute();
    isisRouteBuilder.setLevel(level);
    return result;
}
Also used : IsisLevel(org.batfish.datamodel.IsisLevel) IsisRoute(org.batfish.datamodel.IsisRoute) Result(org.batfish.datamodel.routing_policy.Result)

Example 5 with Result

use of org.batfish.datamodel.routing_policy.Result in project batfish by batfish.

the class SetMetric method execute.

@Override
public Result execute(Environment environment) {
    Result result = new Result();
    long metric = _metric.evaluate(environment);
    environment.getOutputRoute().setMetric(metric);
    if (environment.getWriteToIntermediateBgpAttributes()) {
        environment.getIntermediateBgpAttributes().setMetric(metric);
    }
    return result;
}
Also used : Result(org.batfish.datamodel.routing_policy.Result)

Aggregations

Result (org.batfish.datamodel.routing_policy.Result)30 BgpRoute (org.batfish.datamodel.BgpRoute)8 BatfishException (org.batfish.common.BatfishException)2 RoutingPolicy (org.batfish.datamodel.routing_policy.RoutingPolicy)2 ImmutableSortedSet (com.google.common.collect.ImmutableSortedSet)1 SortedSet (java.util.SortedSet)1 Ip6AccessList (org.batfish.datamodel.Ip6AccessList)1 IpAccessList (org.batfish.datamodel.IpAccessList)1 IsisLevel (org.batfish.datamodel.IsisLevel)1 IsisRoute (org.batfish.datamodel.IsisRoute)1 OriginType (org.batfish.datamodel.OriginType)1 OspfExternalRoute (org.batfish.datamodel.OspfExternalRoute)1 Prefix (org.batfish.datamodel.Prefix)1 Prefix6 (org.batfish.datamodel.Prefix6)1