On a semi-related topic, we are seeing the use of various features that require (1) a lot of values and (2) would be nice to be able to do from the API. TSNetAccept and TSNetConnect being two excellent examples.
I see two approaches 1) Have a micro-DSL that describes the options, in the proxy port descriptor theme. This is then used in the configuration file and can be passed to the API to set the options. This has the advantage of consistency. 2) Have an options struct that gets filled in, with a psuedo contructor "api_call_opt_init(opt_struct*)" and either setting functions or just direct access to the members. Otherwise we are going to end up with API functions with too many parameters to keep straight and that, IMHO, is clearly worse than either of these options.