On Fri, 2005-09-09 at 16:16 -0400, Robert Story wrote:
> On Fri, 09 Sep 2005 09:39:20 +0100 Dave wrote:
> DS> The place for knowledge about per-transport defaults is in the
> DS> transport-specific domain handler, where the person coding this
> DS> *would* know what the default values should be for particular
> DS> services.
> 
> True, but they wouldn't know what the user wanted the default to be.

Hence the idea of a netsnmp_{set,get}servtoken() API.
(I'm not particularly convinced by the name, but that's
not important right now).



> DS>   - either as a string representation ("udp:localhost:161", etc),
> DS>        where not all the elements need necessarily be present,
> DS>        and possibly accompanied by an (optional) default port.
> 
> How about actually using a service, as you suggested earlier, and the user
> provided strings? Since some existing code gets the information in 3 pieces, I
> suggest the api have 3 parameters, plus the local/remote flag:
> 
>       netsnmp_xxx("snmpd:receive", user_transport, user_peer, user_port, 0);
>       netsnmp_xxx("snmpd:agentx", user_transport, user_peer, user_port, 0);
>       netsnmp_xxx("snmpd:trap", user_transport, user_peer, user_port, 1);

This is starting to feel extremely confusing, from the application
developer's point of view. I'd prefer to see something a little less
complicated.

Ideally, setting up a connection should be as simple as:

        netsnmp_xxx("where_spec");

If we want to support the idea of (per-service) default ports, then
this needs to be extended to indicate the service involved somehow.
Hence:

        netsnmp_xxx( "where_spec", SERVICE_ID );

But I'm reluctant to complicate this any further.
Instead I'm drawn by the idea of separate client- and server-side
API calls (rather than a separate local/remote flag).

So that would imply something like:

        netsnmp_open(   "where_spec", SERVICE_ID );     // remote
vs
        netsnmp_listen( "where_spec", SERVICE_ID );     // local


That's functionally the same as your 'netsnmp_xxx' call,
but with parameters 2-4 merged into a single string.
(and with a numeric serviceID rather than a string)


> During init, defaults would be registered:
> 
>       netsnmp_yyy("snmpd:receive", "udp", "localhost", "161");
>       netsnmp_yyy("snmpd:agentx", "unix", "/var/agentx", NULL);
>       netsnmp_yyy("snmpd:trap", "udp", NULL, 0);

Hmmm...
I wasn't taken with this idea initially, but the more I think about
it (and the accompanying config directive), the more I like it.
  I still suspect that a numberic serviceID might be more natural
for an application programmer, but the basic idea is a good one.


Dave


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to