Subject: RE: snmpconf A non-trivial policyAction example

From: "Ayers, Mike" <[email-masked]>
Date: Thu, 9 Nov 2000 16:31:00 -0600

> From: Steve Waldbusser [mailto:[email-masked]]
>
> Juergen Schoenwaelder wrote:
>
> > proc create_hlMatrixControlEntry {s ifIndex} {
> >
> >     if {[catch {setRowStatus hlMatrixControlStatus} index]} {
> >         return
> >     }
> >
> >     lappend vbl [list hlMatrixControlDataSource.$index
> ifIndex.$ifIndex]
> >     lappend vbl [list
> hlMatrixControlNlMaxDesiredEntries.$index 1000]
> >     lappend vbl [list
> hlMatrixControlAlMaxDesiredEntries.$index 1000]
> >     lappend vbl [list hlMatrixControlOwner.$index "policy manager"]
> >     lappend vbl [list hlMatrixControlStatus.$index 1]
> >
> >     $s set $vbl
> > }
>
> This API won't work in our environment because agents don't have MIB
> compilers and therefore don't know the type of a variable.
> For example, in
> the maxDesiredEntries varbinds above, it's not clear whether
> to send the
> integer 1000 or the 4 character string "1000".

	This is true if the set function operates strictly as an SNMP set.
However, it is possible to make a copy of the varbind list, issue a get on
it to fill out the type information, and use that information to build the
set operation.  I once wrote an SNMP interface that used this technique, and
I was quite pleasesed with the results - since it checks the agent's idea of
the variable type, it can even detect misconfiguration (i.e.  if the type is
integer and alphabetics occur, an error can be flagged without attempting
the set) due to conflicting MIBs (something which shouldn't occur, but
sometimes does).

	Just a thought,

/|/|ike

---

From: "Ayers, Mike" <[email-masked]>
Date: Mon, 13 Nov 2000 11:00:26 -0600

> > Steve> And I don't think that there is any terminology in our
> > Steve> architecture that helps. It's simply pointing out that if the
> > Steve> PM agent and the target agent are on the same system, you can
> > Steve> getint() without issuing a PDU. And if they are in different
> > Steve> subagents on the same system, you can (probably) getint()
> > Steve> without issuing a PDU. And if they are on different
> systems you
> > Steve> probably have to send an SNMP PDU on the wire between the two
> > Steve> systems.
> >
> > ... But given the fact that you stated (as I understood it)
> > that an execution engine can act as a mid-level manager, then the
> > distinction between a "local getint()" and a "remote getint()" does
> > not really matter and you may as well remove that text.
>
> I disagree - I believe the text is helpful to the implementor
> and should
> remain:
>
> "Note that no actual SNMP PDU needs to be generated and
> parsed when the
> policy MIB module resides on the same system as the managed elements."
>

	I would prefer "same network node" to "same system".  Specifically,
I'd prefer text that clearly rules out using a network protocol other than
SNMP for information transfer.  The term "system" is generic to the point of
meaninglessness in computing environments, IMHO.

/|/|ike