On 03/17/2015 11:16 AM, Ben Pfaff wrote:
> On Tue, Mar 17, 2015 at 10:35:26AM -0400, Russell Bryant wrote:
>> I started working on a new command line utility that used this shared
>> code.  I wanted the ability to pass some data from common
>> initialization code to all of the commands.  You can find a similar
>> pattern in ovs-vsctl.
>>
>> This patch updates the command handler to take a new struct,
>> ovs_cmdl_context, instead of argc and argv directly.  It includes argc
>> and argv, but also includes an opaque type (void *), where the user of
>> this API can attach its custom data it wants passed along to command
>> handlers.
>>
>> This patch affected the ovstest sub-programs, as well.  The patch
>> includes a bit of an odd hack to OVSTEST_REGISTER() to avoid making
>> the main() function of the sub-programs take a ovs_cmdl_context.
>> The test main() functions still receive argc and argv directly, as
>> that seems more natural.  The test-subprograms themselves are able to
>> make use of a context internally, though.
>>
>> Signed-off-by: Russell Bryant <[email protected]>
> 
> Thanks!
> 
> I applied this to master.  I folded in one change to make the ##
> operator do something useful (it didn't make a real difference because
> OVSTEST_REGISTER is only used once per translation unit):
> 
> diff --git a/tests/ovstest.h b/tests/ovstest.h
> index 082a0d7..ddd7f3e 100644
> --- a/tests/ovstest.h
> +++ b/tests/ovstest.h
> @@ -76,12 +76,12 @@ void ovstest_register(const char *test_name, 
> ovs_cmdl_handler f);
>   */
>  #define OVSTEST_REGISTER(name, function) \
>      static void \
> -    ovstest_wrapper_##function__(struct ovs_cmdl_context *ctx) \
> +    ovstest_wrapper_##function##__(struct ovs_cmdl_context *ctx) \
>      { \
>          function(ctx->argc, ctx->argv); \
>      } \
>      OVS_CONSTRUCTOR(register_##function) { \
> -        ovstest_register(name, ovstest_wrapper_##function__); \
> +        ovstest_register(name, ovstest_wrapper_##function##__); \
>      }
>  
>  #endif
> 

Ha, oops.  Thanks for that.  I had wondered if I got the syntax right,
but then it built successfully so I moved on.

Do you think you could merge master into the ovn branch, as well?

-- 
Russell Bryant
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to