Restriction of the commands during RPC action

Until now, when using RPC action, there were no restrictions on the
commands you could use. However, with RPC actions, only certain commands
should be used, and using others could lead to unexpected problems. This
problem was first noticed when attempting to exit the RPC action
context, as described in the bug link in the bottom. The issue has been
fixed, and this change provides restrictions to additional commands.

This update introduces a new function called `enforceRpcRestrictions`,
which checks if a command is allowed during RPC action.

The following commands are now blocked entirely during RPC action:
- commit
- discard
- copy
- switch
- prepare

The following commands are blocked when leaving or making changes
outside the RPC action:
- create
- set
- delete
- cd
- move

Other commands were not changed.

Bug: https://tree.taiga.io/project/jktjkt-netconf-cli/issue/223
Bug: https://github.com/CESNET/netconf-cli/issues/19
Change-Id: I5bf935bb8eabeea313b506617d1f43274eb77cdf
Signed-off-by: Jan Kundrát <jan.kundrat@cesnet.cz>
3 files changed
tree: 6a85f3d7b73e3e0621824dfe463af59db759e691
  1. .clang-format
  2. .gitmodules
  3. .zuul.yaml
  4. CMakeLists.txt
  5. Doxyfile.in
  6. LICENSE
  7. README.md
  8. ci/
  9. cmake/
  10. docs/
  11. src/
  12. tests/
README.md

Console interface to NETCONF servers

License Gerrit Zuul CI taiga.io

This program provides an interactive console for working with YANG data. It can connect to NETCONF servers, work as a standalone YANG data editor, or talk to sysrepo locally.

Installation

For building, one needs:

At times the devel branch of libyang, sysrepo, libnetconf2 and Netopeer2 might be required due to fresh bugfixes and behavior changes.

The build process uses CMake. A quick-and-dirty build with no fancy options can be as simple as mkdir build && cd build && cmake .. && make && make install.

Bug Reporting

Issue reporting and feature requests are welcome over GitHub.

Development

We are using Gerrit for patch submission, code review and Continuous Integration (CI). A quick introduction is recommended for first-time Gerrit users. Choose CESNET - Sign in with GitHub for login. Development roadmap and planning happens over Taiga.io.

Credits

Copyright © CESNET, https://www.cesnet.cz/ . Portions copyright © Faculty of Information Technology, Czech Technical University in Prague, https://fit.cvut.cz/ . Most of the code was written by Václav Kubernát (CESNET, formerly FIT ČVUT) and Jan Kundrát (CESNET). The project is distributed under the terms of the Apache 2.0 license.