From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Horman Subject: Re: [PATCH] Add external parser support for unknown commands. Date: Mon, 3 Nov 2014 11:06:02 -0500 Message-ID: <20141103160602.GA6625@localhost.localdomain> References: <1414967308-69530-1-git-send-email-keith.wiles@windriver.com> <20141103104129.GA4840@bricha3-MOBL3> <307F2C60-7638-40C8-A9BC-DC3EE3D59F8C@windriver.com> <20141103141658.GA6964@bricha3-MOBL3> <7D39110F-D305-4C48-8BD6-37F6DCD2E434@windriver.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: "dev-VfR2kkLFssw@public.gmane.org" To: "Wiles, Roger Keith" Return-path: Content-Disposition: inline In-Reply-To: <7D39110F-D305-4C48-8BD6-37F6DCD2E434-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" On Mon, Nov 03, 2014 at 02:25:51PM +0000, Wiles, Roger Keith wrote: >=20 > > On Nov 3, 2014, at 8:16 AM, Bruce Richardson wrote: > >=20 > > On Mon, Nov 03, 2014 at 02:08:46PM +0000, Wiles, Roger Keith wrote: > >>=20 > >>> On Nov 3, 2014, at 4:41 AM, Bruce Richardson wrote: > >>>=20 > >>> On Sun, Nov 02, 2014 at 04:28:28PM -0600, Keith Wiles wrote: > >>>> Allow for a external parser to handle the command line if the > >>>> command is not found and the developer has called the routine > >>>> int cmdline_set_external_parser(struct cmdline * cl, > >>>> cmdline_external_parser_t parser); > >>>> function to set the function pointer. > >>>>=20 > >>>> The function for the external parser function should return CMDLIN= E_PARSE_NOMATCH > >>>> if not able to match the command requested or zero is handled. > >>>>=20 > >>>> Prototype of external routine: > >>>> int (*cmdline_external_parser_t)(struct cmdline * cl, const char *= buy); > >>>>=20 > >>>> Signed-off-by: Keith Wiles > >>>=20 > >>> Hi Keith, > >>>=20 > >>> what is the expected use case for this? Is it for embedding other p= rogramming languages alongside the existing DPDK command-line or some oth= er purpose? [Perhaps the use case could be called out in the patch descri= ption] > >>=20 > >> Hi Bruce, > >>=20 > >> I guess the external parser could be used for other programming lang= uages, but the case I was looking at was to provide a default escape from= the command line parser to allow my application to handle the commands n= ot understood by the parser. Now that you point it out I could use someth= ing like =E2=80=98%=E2=80=99 to execute a single lin= e of script code, which is a good idea (thanks). > >>=20 > >> One case I am looking at is when you want to execute a command and d= o not want to add the support into the commands.c file for every possible= command. Take the case where you have a bunch of scripts (Lua) in a dire= ctory much like a bin directory. Then you could type foo.lua or foo on th= e command line and execute the foo.lua having the application detect you = want to load and run a Lua script after it has finished parsing for the b= uiltin commands. > >>=20 > >> For Pktgen I had to add a command called =E2=80=98run =E2=80=99 to support running a script with arguments. I also = needed to add a argvlist type to cmdline to not error out on that command= and split up the args into a argv list like format. (Maybe I need to sub= mit that code??) It seemed more straight forward to just pass the command= line to the application to run the command. I understand that seems like= a minor point, but it does make it easier to use and to support the feat= ures I want to support in my PoC. > >>=20 > >> Using this method you can just type the name instead of something li= ke =E2=80=98run foo.lua=E2=80=99 or just =E2=80=98run foo=E2=80=99 and le= t the code figure out what to run. I have more plans for this features as= well and have not finished the basic PoC yet. If you want a peek I can s= how you what I am working on currently. > >>=20 > >> Does this help and do I really need to add all of this to the commit= message :-) > >>=20 > > Thanks for the explanation. However, if you are looking to have the a= pplication handle a bunch of commands itself, why does it need to use the= commandline library at all? Why not just have the app handle all the com= mands instead of some of them? >=20 > I guess that would be reasonable, but then I would have to add support = for all of the command line parsing being done in the cmdline code. Think= of this as a default case for the parser and to me that makes more sense= then just doing my own command line design. In the cmdline code you guys= provided is a lot of features like history, control key support, arg par= sing (IP, MAC) and many others. I would rather not have to write that cod= e myself. >=20 > The default case is the same behavior today, with giving a no match err= or unless they add the external parser. It seems alot simpler than that to me. Looking at the test applications,= the command line parser expects the application to create an array of cmdline_parse_ctx_t structures to support new option parsing. If your go= al is to support other languages, it seems to make more sense to just use forei= gn language bindings to merge your coding language support with the DPDK (ostensibly you will already have to do that if you want to use other par= ts of the DPDK). Am I missing something? Neil > >=20 > > /Bruce >=20 > Keith Wiles, Principal Technologist with CTO office, Wind River mobile = 972-213-5533 >=20