3

我在模型中有两个属性:

  • 叶协议,
  • 叶港。

我想指定:

  • 如果协议 = 'ssh' 则默认端口值为 22,
  • 如果协议 = 'http' 则默认端口值为 80,
  • 等等

我如何用 yang 表达这个?

4

1 回答 1

5

defaultYANG中没有条件值 - 您需要两个具有不同值的default语句,两个语句可能只有一个子语句。但是,您可以解决此问题。也许通过使用 a而不是您的协议:defaultsleafdefaultpresence containerleaf

module conditional-default {
  namespace "http://example.com/conditional-default";
  prefix "excd";

  grouping common {
    leaf port {
      type int32;
    }
  }

  container config {

    container ssh {
      presence "If this container is present, ssh is configured.";
      uses common {
        refine port {
          default 22;
        }
      }
    }
    container http {
      presence "If this container is present, http is configured.";
      uses common {
        refine port {
          default 80;
        }
      }
    }

  }

}

来自 RFC6020, 7.5.5:

“存在”语句为数据树中容器的存在赋予了意义。它将一个字符串作为参数,该字符串包含对节点存在意味着什么的文本描述。

于 2016-03-10T12:32:27.687 回答