[dpdk-dev] [RFC] New CLI for DPDK

Wiles, Keith keith.wiles at intel.com
Fri Mar 10 17:22:49 CET 2017


> On Mar 10, 2017, at 10:06 AM, Stephen Hemminger <stephen at networkplumber.org> wrote:
> 
> On Fri, 10 Mar 2017 15:25:31 +0000
> "Wiles, Keith" <keith.wiles at intel.com> wrote:
> 
>> I would like to request for comments on a new CLI design and get any feedback. I have attached the cli.rst text, which is still a work in progress for you review.
>> 
>> I have also ported the CLI to a version of Pktgen on the ‘dev’ branch of the repo in DPDK.org.
>> 
>> http://dpdk.org/browse/apps/pktgen-dpdk/refs/?h=dev
>> 
>> I would like to submit the CLI library to be used in DPDK, if that seems reasonable to everyone. I need more testing of the API and Pktgen, but I feel it has a simpler design, easier to understand and hopefully make it easier for developers to add commands.
>> 
>> As an example I quickly converted over testpmd from CMDLINE to CLI (I just add a -I option to select CLI instead) and reduced the test-pmd/cmdline.c file from 12.6K lines to about 4.5K lines. I did not fully test the code, but the ones I did test seem to work.
>> 
>> I do not expect DPDK to convert to the new CLI only if it makes sense and I am not suggesting to replace CMDLINE library.
>> 
>> If you play with the new CLI in pktgen and see any problems or want to suggest new features or changes please let me know.
>> 
>> Comments on the cli.rst text is also welcome, but the cli.rst is not complete. I think this file needs to be broken into two one to explain the example and another to explain CLI internals.
>> 
> 
> It would be great if all DPDK examples used a similar architecture. And having a common
> infrastructure would help.
> 
> But not sure it needs to be special. Why should this be DPDK specific?
> What you are building really ends up being an application
> framework at some point. Surely, there are lots of others already in open source.
> 
> Heck even VPP has its own CLI inside.

I have been looking for one for years and never found one that met my needs of easy to use and easy to understand. If you can find a better one then please let me know.

This code does use some DPDK APIs but they can be removed to make it standalone and the first version I did was standalone. Some of the ones I found were similar to cmdline and some took it a step farther by trying to do everything one would ever need in a CLI. Those are way too big and difficult to use, then you have the ones that are barely a step above readline or just writing you own. The cmdline interface falls closer to the trying to do everything for you, by converting strings into values with structures/macros difficult to understand at a glance. IMHO this one is simple and easy to understand.

But in truth the cmdline interface in DPDK is difficult to use and to write code for, takes way to many lines of code to make a simple command. The current Cmdline is  also not dynamic, which makes it difficult to add features on the fly.

All of the commands are at the same level and using a directory structure allows the developer to use what directory path he takes to denote a context for the command. As the example of converting test-pmd to use CLI the number of lines dropped from 12.6K to 4.5K lines. The cmdline code is also not consider to be production quality (from the docs) and I would like to fix that problem for DPDK.

Regards,
Keith



More information about the dev mailing list