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