Subject: fwd: non-subscriber post to agent list

From: Randy Presuhn <[email-masked]>
Date: Tue, 28 Mar 2000 19:29:18 -0800 (PST)

Hi -

a non-subscriber post to the agent list.

 ------------------------------------------------------------------------
 Randy Presuhn           [email-masked]       http://www.bmc.com/
 Voice: +1 408 546-1006  BMC Software, Inc.  1-3141  2141 N. First Street
 Fax:   +1 408 965-0359  San Jose, California 95131  USA
 ------------------------------------------------------------------------
 Any relationship between my opinions and BMC's should be coincidental.
 ------------------------------------------------------------------------

> Received: from tangelo.bmc.com (root@tangelo [172.17.7.166])
> 	by dorothy.bmc.com (8.8.6 (PHNE_12836)/8.8.6) with ESMTP id JAA16444
> 	for <[email-masked]>; Tue, 28 Mar 2000 09:42:00 -0800 (PST)
> Received: from fw-us-hou1.bmc.com (fw-us-hou1.bmc.com [172.17.0.250])
> 	by tangelo.bmc.com (8.8.6 (PHNE_17135)/8.8.6) with SMTP id LAA22140
> 	for <[email-masked]>; Tue, 28 Mar 2000 11:42:37 -0600 (CST)
> Received: from ecvwall1.wipro.com (ecvwall1.wipro.com [192.168.181.23])
> 	by wiproecmx2.wipro.com (8.9.3/8.9.3) with SMTP id XAA26226
> 	for <[email-masked]>; Tue, 28 Mar 2000 23:20:03 GMT
> Received: from wipro.com ([192.168.178.17]) by ecmail.wipsys.soft.net
>           (Netscape Messaging Server 3.6)  with ESMTP id AAA12CF;
>           Tue, 28 Mar 2000 23:06:38 +0530
> Message-ID: <[email-masked]>
> Date: Tue, 28 Mar 2000 23:15:00 +0530
> From: "Shivendra Kumar" <[email-masked]>
> Reply-To: [email-masked]
> Organization: Wipro Technologies
> X-Mailer: Mozilla 4.6 [en] (WinNT; I)
> X-Accept-Language: en
> MIME-Version: 1.0
> To: [email-masked]
> CC: [email-masked], Sanjay Gera <[email-masked]>,
>         Shivendra Kumar <[email-masked]>,
>         Abhishek Bagchi <[email-masked]>,
>         Amit Srivastava <[email-masked]>,
>         Sarath Babu Govindarajulu <[email-masked]>, [email-masked]
> Subject: More Error codes on SNMP V1?
> Content-Type: multipart/mixed;
>  boundary="------------B24D4DC2C9EF6E85F9F3039D"
> 
> This is a multi-part message in MIME format.
> 
> --------------B24D4DC2C9EF6E85F9F3039D
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit
> 
> Hi all,
> 
>  We are working on SNMP interfaces for a product named Flash600 ( ADX,
> Layer2 switching, ATM)
>   for FNC Inc.
>   We are using SNMP V1 framework , but, unfortunately SNMP v1 supports
> only
>    following error codes:
> 
>      noError(0): no error in the requested PDU.
>   toobig(1): The get-response message is bigger than that the local
> implementation can handle.
>   noSuchName(2): one of the requested objects does not match anything in
> the relevant MIB view that can be returned.
>   badValue(3): The set-request asked the agent to write an inappropriate
> value.
>   readOnly(4): A set-request tried to write a value that the operator is
> not allowed to write.Either the access specified is
>   READ-ONLY or the the variable MIB definition does not permit write
> access.
>   genErr(5): A variable cannot be retrieved for reasons outside the ones
> listed above.
> 
>   This provides very little granularity for the User to decide what went
> wrong.
> 
>   IS THERE ANY WAY WE CAN ADD MORE ERROR CODES WITHOUT breaking V1
> compliance?
>   We don't want to move over to SNMPv2 ,but, still want to add more
> error codes?
>   Can we add more error codes? If so, how?
> 
> regards,
> shivendra
> 
> 
> --
> ------------------------------------------------------------------------
> 
>                                                 Shivendra Kumar
>    56, 4th Cross,                       Wipro Infotech- Telecom Sols.
>    5th Block,                             72, Electronics City
>    Koramanagala,                       Bangalore
>    Bangalore -95
>    mobile-98440-92528            hello(off) -0091-80-8520408/416
> 
> extn.2107
>                                                  fax- 0091-80-8520478
>                   mail@ - [email-masked]
>                                [email-masked]
> ------------------------------------------------------------------------
> 
>            My three warriors - perseverance, smile and hope.
> 
> ------------------------------------------------------------------------
> 
> 
> 
> --------------B24D4DC2C9EF6E85F9F3039D
> Content-Type: text/x-vcard; charset=us-ascii;
>  name="shivendra.kumar.vcf"
> Content-Transfer-Encoding: 7bit
> Content-Description: Card for Shivendra Kumar
> Content-Disposition: attachment;
>  filename="shivendra.kumar.vcf"
> 
> begin:vcard 
> n:Kumar;Shivendra
> tel;cell:98440-92528
> tel;work:0091-80-8520420  extn 2107
> x-mozilla-html:FALSE
> org:Wipro Technologies;Telecom Solutions
> version:2.1
> email;internet:[email-masked]
> title:Systems Manager
> adr;quoted-printable:;;72, Keonics Electronics city =0D=0AHosur Main Road,=0D=0ABangalore- 561229;Bangalore;;;India
> fn:Shivendra Kumar
> end:vcard
> 
> --------------B24D4DC2C9EF6E85F9F3039D--
> 
>

---

From: "Max Devlin" <[email-masked]>
Date: Wed, 29 Mar 2000 00:44:03 -0500

> >  We are working on SNMP interfaces for a product named
> Flash600 ( ADX,[...]
> >   genErr(5): A variable cannot be retrieved for reasons
> > outside the ones listed above.
> >
> >   This provides very little granularity for the User to
> >   decide what went wrong.
> >   IS THERE ANY WAY WE CAN ADD MORE ERROR CODES WITHOUT
> >   breaking V1 compliance?
> >   We don't want to move over to SNMPv2 ,but, still want
> >   to add more error codes?

Well, since this came in late, doesn't really relate to agentx, and nobody's
heard from me in a while, I thought I'd give it a shot.  Such a
"pre-emptive" response does run the risk of illustrating that I don't know
what I'm talking about, since I'm not a programmer or engineer.  But my
specialty is "end user operational functionality", and it sounds like
there's a chance I might be helpful, so I'll try.

As indicated by my edits from the original message, I think the standard
approach would be:

a) have your agent return genErr
b) define a MIB group to identify the specific error
c) have your manager query your errorMib objects when it gets a genErr to
determine what the problem is

I don't know if anyone's already worked up something like this in practice.
I believe that given a switch element manager you will probably have special
requirements, even though the ATM stuff might lend itself to a standard
effort.  AFAIK, you'd be breaking new ground, but if you are planning on
sticking with v1, it doesn't sound very fertile.

I HIGHLY recommend getting some advice from Dave Perkins and/or other MIB
developers if you go this route.  (I don't mean to be "donating" anyone's
time; it would be well worth the expense if you can pay for such advice,
though there is enough reason for the community to desire "well behaved"
implementations that you may not need to.)  This kind of MIB can get much
trickier than you might think up front, and I'm not at all sure I could even
begin to consider all the potential issues which would arise.  Some possible
ideas that spring to mind, however:

* Could you use the request ID from the original query as an index for a
table of errors?
* You could either create a table to configure the errorMib table (how big,
age or wrap info, etc.)
* If you feel comfortable with a limited solution, you could probably simply
create a single attribute, using an enumerated integer for your list of
additional error codes.
* This "single object" could be a scalar if you think your manager/agent are
"welded together" enough to do requests/responses in an almost synchronous
manner, if you know what I mean.  This would certainly be a rather dirty
design, and would create a pseudo-proprietary agent/manager scenario, but
you wouldn't be the first.  (Don't shoot me; I'm just the piano player.)
* If this issue comes up a lot, you might even program your manager to
always include the OID for the error object(s) in appropriate queries.  That
way you can have the agent return the error information along with the
original response without breaking v1's rule about the response varbinds
being the same as the request's.
* A complete approach would probably include timestamps, manager identity
(community, IP), and the OID which generated the problem.
* Come to think of it, unless you use single varbind requests, you'll HAVE
to reference the OID, though you might still do it "the easy way" and avoid
using a table.  Just define two objects, one for the OID which 'didn't work'
(I'm thinking you're considering SETs more than GETs, though according to
the mechanics of SNMP, it really doesn't matter) and one for the error code.
If you use a table, you could index by request ID (if that's even feasible)
and OID.  When the manager gets a genErr, it "looks it up" by querying with
a mib walk using your object.requestID.0, and it will retrieve all the OIDs
corresponding to the varbind(s) that caused errors.

If you find that I'm full of hot air, and somebody else already *has* worked
this stuff out (or I'm just missing something), could you let me know?

Thanks for your time.  Hope it helps.