策略扩展

通过策略扩展功能,您可以为内置策略类型编写扩展函数。扩展可以在策略表达式中使用,就像内置函数一样。在评估相应的策略表达式时执行它们。此功能对于以下方面非常有用:

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

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

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

策略类型 映射的策略类型 输出
TEXT_T NSTEXT 字符串
BOOL_AT 恩斯布尔 布尔值
NUM_AT 尼斯努姆 数字(双精度浮点)
DOUBLE_AT 恩斯双倍 数字(双精度浮点)

使用策略扩展的必备条件

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

  • 函数名称必须以字母开头,并且可能包含数字或下划线。
  • Citrix ADC 策略将函数名视为不区分大小写。
  • 即使扩展语言返回多个值,函数也必须返回单个值。
  • 不支持具有可变数量参数的函数。

策略扩展如何工作?

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

  1. 扩展文件将根据语法和其他条件进行验证。
  2. 如果验证失败,将向用户报告错误。
  3. 如果验证成功,扩展文件将导入 Citrix ADC 设备,其内容可以在策略表达式中使用,就像任何内置策略函数
    1. 如果策略表达式评估在运行时返回错误,则将其报告为 unf 事件,并增加关联的错误计数器。

      注意: 如果发生策略 undef 事件,并且策略规则包含一个或多个策略扩展函数,则该show ns extension <name> 命令将在应用于这些策略扩展时显示 undef 命中。如果中止扩展函数,则中止计数器值将递增。

    2. 如果策略表达式评估成功,则表达式评估会继续,直到评估整个表达式,或者直到由于错误而中止。

如果扩展函数运行时间太长,它将被中止,并且与该扩展函数相关的错误计数器会递增。扩展功能是沙盒装的,这可以防止:

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

策略扩展