NETCONF client playground

Hello all,

i've started a playground project in Rust for a NETCONF client library + related/useful "tooling".
Currently it's workspace of two crates:

  • netconf-client - library to build other related tools/app
  • netconf-cli - a REPL like CLI app to allow exchanging the NETCONF messages with target server

I would love some insights and opinions - crate selections, code organization, or whatever tips/criticism there is to make the code better... :slight_smile:


Some of the major crates used for the library:

  • ssh2 - for RPC transport layer
  • serde & quick-xml - for XML (de)serialization of the NETCONF RPCs

and for CLI app:

  • anyhow - for "lazy" error handling
  • clap - in its demon mode, for defining the REPL/CLI commands/behavior
  • reedline - for core CLI editing& features (history, custom prompt, possibly tab completions in future)

There's:

  • no explicitly defined feature backlog/goal - ill see how/where it goes
  • quite a few scattered TODOs across the code that's in "alpha"/PoC stage
  • lot of "missing documentation" issues, as the code has been unstable and moved around/modified extensively
  • no examples on usage in documentation yet

CLI app itself "requires" some NETCONF server like netopeer2, ConfD (Basic), or others to actually try much of it's functionality.
It runs without the target server as well, and allows e.g. dumping the RPCs to console instead of sending, or few configuration related commands (wip).