diff options
author | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2020-12-01 12:01:37 +0100 |
---|---|---|
committer | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2020-12-01 12:01:37 +0100 |
commit | 7d2de131ce99187a49095687c33afc6ce97e8f46 (patch) | |
tree | 3262c71067d403173c6c7999073460e0eb609377 /bfdd | |
parent | Merge pull request #7621 from idryzhov/fix-cisco-access-list (diff) | |
download | frr-7d2de131ce99187a49095687c33afc6ce97e8f46.tar.xz frr-7d2de131ce99187a49095687c33afc6ce97e8f46.zip |
bfdd: session specific command type checks
Replace the unclear error message:
```
% Failed to edit configuration.
YANG error(s):
Schema node not found.
YANG path: /frr-bfdd:bfdd/bfd/sessions/single-hop[dest-addr='192.168.253.6'][interface=''][vrf='default']/minimum-ttl
```
With:
```
frr(config-bfd-peer)# minimum-ttl 250
% Minimum TTL is only available for multi hop sessions.
! or
frr(config-bfd-peer)# echo
% Echo mode is only available for single hop sessions.
frr(config-bfd-peer)# echo-interval 300
% Echo mode is only available for single hop sessions.
```
Reported-by: Trae Santiago
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Diffstat (limited to 'bfdd')
-rw-r--r-- | bfdd/bfdd_cli.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/bfdd/bfdd_cli.c b/bfdd/bfdd_cli.c index ddec83397..b9e790361 100644 --- a/bfdd/bfdd_cli.c +++ b/bfdd/bfdd_cli.c @@ -51,6 +51,11 @@ /* * Prototypes. */ +static bool +bfd_cli_is_single_hop(struct vty *vty) +{ + return strstr(VTY_CURR_XPATH, "/single-hop") != NULL; +} /* * Functions. @@ -293,6 +298,11 @@ DEFPY_YANG( "Expect packets with at least this TTL\n" "Minimum TTL expected\n") { + if (bfd_cli_is_single_hop(vty)) { + vty_out(vty, "%% Minimum TTL is only available for multi hop sessions.\n"); + return CMD_WARNING_CONFIG_FAILED; + } + if (no) nb_cli_enqueue_change(vty, "./minimum-ttl", NB_OP_DESTROY, NULL); @@ -408,6 +418,11 @@ DEFPY_YANG( NO_STR "Configure echo mode\n") { + if (!bfd_cli_is_single_hop(vty)) { + vty_out(vty, "%% Echo mode is only available for single hop sessions.\n"); + return CMD_WARNING_CONFIG_FAILED; + } + nb_cli_enqueue_change(vty, "./echo-mode", NB_OP_MODIFY, no ? "false" : "true"); return nb_cli_apply_changes(vty, NULL); @@ -431,6 +446,11 @@ DEFPY_YANG( { char value[32]; + if (!bfd_cli_is_single_hop(vty)) { + vty_out(vty, "%% Echo mode is only available for single hop sessions.\n"); + return CMD_WARNING_CONFIG_FAILED; + } + snprintf(value, sizeof(value), "%ld", interval * 1000); nb_cli_enqueue_change(vty, "./desired-echo-transmission-interval", NB_OP_MODIFY, value); |