1

我是杨新来的。下面是我的 yang 配置。

 container ntp {
 tailf:info "NTP Configuration";
 tailf:cli-oper-info "Display NTP information";
 tailf:cli-incomplete-show-path;

 //ntp server config
 leaf-list server {
  tailf:info "NTP servers";
  ordered-by user;
  tailf:cli-flat-list-syntax {
    tailf:cli-replace-all;
  }
  type gw-types:ipv4-host;
  max-elements 4;
}

 container auth {
   tailf:info "Configure NTP authentication keys";
   list server {
     tailf:info "Configured ip addresses";
     tailf:cli-suppress-mode;
     tailf:cli-sequence-commands;
     tailf:cli-incomplete-command;
     tailf:cli-compact-syntax;

     key "serverip";

     leaf serverip {
       tailf:info "ip address";
       type leafref {
       path "/gw-system:ntp/server";
       }
     }
     leaf key {
       tailf:info "Authentication key ID for this server";
       type uint32 {
       range "1..65535";
       }
     }
     choice authtype {
      tailf:cli-incomplete-command;
      leaf sha256 {
        tailf:info "Value of the sha256 key";
        type tailf:aes-cfb-128-encrypted-string {
        tailf:info "Cleartext or AES encrypted key";
     }
    }
   }
  }
 }
}

我想达到以下两个要求。有人可以帮帮我吗

  1. leafref在节点中使用serverip了类型,以便用户可以输入存在于leaf-list server. 当我测试它时,我能够输入一些leaf-list serverleaf serverip所指的人中不存在的随机 IP 地址。当我提交时,它会给出错误Illegal reference,但我希望如果用户给出了列表中不存在的随机 ip,则不应允许该用户完成命令。当他键入命令而不是在提交时显示错误时,有什么方法可以在运行时限制他。

  2. leaf serverip指的是leaf-list server. 我希望如果用户尝试删除目标节点,即server应该首先自动删除它的所有依赖节点。就像首先应该删除所有依赖项,然后删除主节点。
    或者
    它应该给用户一个错误,在删除目标节点之前先删除依赖节点。即在删除leaf-list server用户之前,应先要求删除节点serverip。我怎样才能实现它们中的任何一个?

4

1 回答 1

0

根据我对问题 1 的理解,您要限制"leafref". 但根据 RFC 6020。

“不能限制leafref。” - 参考 RFC 第 9.9.1 节

       leaf serverip {
          tailf:info "ip address";
             type leafref {
                 path "/gw-system:ntp/server";
             }
       }

在这一页中,所有服务器 IP 都将可用,并且通过选项卡我们可以获得相同的 IP。如果仍然想在这里应用一些逻辑,那么您可以尝试:

选择或何时声明在这里应用一些逻辑。

对于第二个问题,您可以尝试将所有强制性叶子作为关键。它应该工作。

于 2021-12-06T19:08:58.080 回答