政策的扩展

策略扩展特性使您能够为内置策略类型编写扩展函数。可以在策略表达式中使用扩展,就像内置函数一样。在计算相应的策略表达式时执行它们。此功能适用于:

  • 向现有策略添加定制功能。
  • 为复杂的客户需求实现逻辑构造。

策略扩展特性允许用户为内置的策略类型编写扩展函数,从而解决了这些限制。然后可以在策略表达式中使用扩展,就像内置函数一样。在计算相应的策略表达式时执行它们。

下表列出了在编写扩展时可以使用的策略类型及其关联映射。

策略类型 映射策略类型 输出
TEXT_T NSTEXT 字符串
BOOL_AT NSBOOL 布尔
NUM_AT NSNUM 数(双精度浮点数)
DOUBLE_AT NSDOUBLE 数(双精度浮点数)

使用策略扩展的前提条件

导入的函数必须符合已有的策略标准。因此:

  • 函数名必须以字母开头,可以包含数字或下划线。
  • 在Citrix ADC策略中,函数名不区分大小写。
  • 即使扩展语言返回多个值,函数也必须返回一个值。
  • 不支持参数数量可变的函数。

策略扩展如何工作?

Citrix ADC设备上的现有策略使用解释器来评估函数,这些函数被导入到策略扩展文件中。当用户在策略扩展文件中导入一个新函数时:

  1. 对扩展文件进行语法和其他条件验证。
  2. 如果验证失败,则将错误报告给用户。
  3. 如果验证成功,则将扩展文件导入Citrix ADC设备,其内容可以在策略表达式中使用,就像任何内置策略函数一样
    1. 如果策略表达式计算在运行时返回错误,则将其作为undef事件报告,并增加相关的错误计数器。注意:如果发生策略undef事件,且策略规则包含一个或多个策略扩展函数,则显示ns扩展名<名称>命令显示应用到这些策略扩展时的undef命中。如果扩展函数被中止,中止计数器的值将递增。
    2. 如果策略表达式计算成功,表达式计算将继续进行,直到计算整个表达式为止,或者直到由于错误而终止为止。

如果扩展函数运行时间过长,则中止该扩展函数,并增加与该扩展函数相关的错误计数器。扩展函数是沙盒的,这防止了:

  • Citrix ADC设备上的CPU使用率过高。
  • Citrix ADC设备上的内存使用过多。
  • 使用有害的内置库或第三方库或二进制文件。
  • 长时间运行的脚本可能导致Citrix ADC设备重新启动。
政策的扩展