如何评估路由策略子例程
图 1 显示了如何评估子例程。子例程包含在链中第一个路由策略的第一项中。根据子例程评估每个路由,如下所示:
-
系统会根据第一个路由策略中的第一个术语对路由进行评估。如果路由与子例程之前指定的所有匹配条件不匹配,则跳过子例程并评估路由策略中的下一个术语(请参阅步骤 2)。如果路由与子例程之前指定的所有匹配条件匹配,那么将根据子例程评估路由。如果路由与任何子例程术语中的匹配条件匹配,则按以下顺序进行两个级别的评估:
-
评估子程序项中的操作。如果其中一个操作被接受,那么子例程的评估将结束,并且将布尔值 TRUE 返回给调用策略。如果其中一个操作被拒绝,那么子例程的评估将结束,并将 FALSE 返回给调用策略。
如果子例程未指定
accept或 操作,那么它将使用accept缺省策略指定的 或rejectrejectnext-policy操作,并且 TRUE 或 FALSE 的值将返回给调用策略,如上一段中所述。 -
评估调用策略的子例程匹配条件。在评估的这一部分中,TRUE 等于匹配项,FALSE 等于不匹配项。如果子例程将 TRUE 返回给调用策略,那么调用策略的评估将继续。如果子例程将 FALSE 返回给调用策略,那么当前术语的评估将结束,并将评估下一个术语。
-
-
系统会根据第一个路由策略中的第二个术语对路由进行评估。
如果将策略链指定为子例程,那么整个链将充当单个子例程。与其他链一样,仅当整个链不接受或拒绝路由时,才会执行默认策略指定的操作。
如果术语定义了多个匹配条件(包括子例程),并且路由与子例程之前指定的条件不匹配,那么术语的评估将结束,并且不会调用和计算子例程。在这种情况下,不会实现子例程中指定的操作路由特征的操作。