政策的扩展

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

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

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

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

策略类型 映射策略类型 输出
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设备重新启动的长时间运行的脚本。
政策的扩展