[AGENT++] AgenPro 2 problems [Re: does Agenpro2 call correct OctetStr constructor?]

Dave Mason dmason at transat-tech.com
Tue Sep 9 18:34:24 CEST 2003


Hi Frank,
I picked up the latest AgenPro.  That did the trick, thanks.  You were 
right about the crash Imentioned in #2 below.  I was trying to replace 
DateAndTime with my MibLeaf subclass, but I didnt notice DateAndTime has 
different arguments in its constructor.  I decided that was a good 
opportunity to determine if I really needed any DateAndTime objects to 
inherit from my MibLeaf subclass, and it turned out that I didnt, so I 
changed my templates back to the original behavior.

Regards,
Dave

Frank Fock wrote:

> Hi Dave,
>
> The default value problem has now been fixed in v2.0.6c.
> (You were right, the problem's root cause was an escaping clash
> between Java and Velocity - not the missing IpAddress handling)
>
> Best regards,
> Frank
>
>
> Dave Mason wrote:
>
>> Hi Frank,
>> I dont think we're out of the woods quite yet.  I picked up AgenPro 
>> v2.0.6a but I have two problems and a question:
>>
>> 1. The IpAddress problem isnt fixed.  Actually, because I have six 
>> bytes of data (host and port), I didnt use an IpAddress but rather an 
>> octet string.  I saw where you changed cpp_code.vm, but since I didnt 
>> use IpAddress, I dont think it helped, although including IpAddress 
>> was probably necessary.
>>
>> 2. I see the new agentgen creates the code for tables when agent 
>> capabilities is turned on in the project file, but I found a problem 
>> with it.  The first columnar object in one of my tables (after the 
>> not-accessible index object) is a DateAndTime, specified like this:
>>
>>   almTime OBJECT-TYPE
>>      SYNTAX      DateAndTime
>>      MAX-ACCESS  read-only
>>      STATUS      current
>>      DESCRIPTION
>>         "This attribute specifies the time when the notification was 
>> issued."
>>      ::= { almEntry 2 }
>>
>> AgenPro v1.8.6 created the constructor like this:
>>
>> almTime::almTime(const Oidx& id):
>>   MibLeaf(id, READONLY, new OctetStr())
>> {
>> }
>>
>> AgenPro v2.0.6a does this:
>>
>> almTime::almTime(const Oidx& id):
>>    DateAndTime(id, READONLY, VMODE_DEFAULT)
>> {
>> }
>>
>> You'll see that the "new OctetStr()" is not done, so the agent 
>> crashes later when I try to assign a value.  This problem also occurs 
>> with scalar DateAndTime objects, but I didnt see this problem for any 
>> other syntax.
>>
>> 3. I'm not sure if this is a problem, but I thought I'd run it by 
>> you.  The MIB module I'm working with is defined like this:
>>
>>   ttiWsNotification MODULE-IDENTITY
>>      LAST-UPDATED "200206120000Z" -- Midnight June 12, 2002
>>      ORGANIZATION "Transat Technologies, Inc."
>>      CONTACT-INFO ".."
>>      DESCRIPTION  "Notifications MIB."
>>      REVISION     "200206120000Z" -- Midnight June 12, 2002
>>      DESCRIPTION  "Initial version."                      ::= { ttiWs 
>> 11 }
>>
>> where ttiWs is "1.3.6.1.4.1.13448.3.1".  AgenPro v1.8.6 created the 
>> MibGroup constructor like this:
>>
>> ttiwsnotificationmib::ttiwsnotificationmib():
>>   MibGroup("1.3.6.1.4.1.13448.3.1.11", "ttiWsNotification")
>> {
>> ...
>> }
>>
>> AgenPro v2.0.6a does it like this:
>>
>> ttiwsnotificationmib::ttiwsnotificationmib():
>>   MibGroup("1.3.6.1.4.1.13448.3.1", "ttiwsnotificationmib")
>> {
>> ...
>> }
>>
>> Shouldnt the OID end in .11 as before?  Also, it would be nice if the 
>> persistent name stayed the same.  Is there a reason for the switch?  
>> While I'm here, has the persistence data file format changed any 
>> since agent++v3.5.3a?  I would like to be able to build an agent with 
>> the new agent++ and read old persistence files.  On the other hand, 
>> any fixes or improvements are welcome.
>>
>> Regards,
>> Dave
>>
>> Dave Mason wrote:
>>
>>> Hi,
>>> I'm comparing the output of AgenPro v2 with v1.8.6 and noticed this 
>>> difference.  I have a MIB object that is a 6 byte hex value, used 
>>> for IP address and port.  The MIB definition looks like this:
>>>
>>>   ipAddrPort OBJECT-TYPE
>>>      SYNTAX      OCTET STRING (SIZE (6))
>>>      MAX-ACCESS  read-write
>>>      STATUS      current
>>>      DESCRIPTION
>>>         ""
>>>      DEFVAL { '7f00000100a2'H }
>>>      ::= { configObjects 1 }
>>>
>>> AgenPro v1.8.6 generated this constructor:
>>>
>>> ipAddrPort::ipAddrPort():
>>>   MibLeaf(oidIpAddrPort, READWRITE, new OctetStr((unsigned 
>>> char*)"\x7f\x00\x00\x01\x00\xa2", 6ul), VMODE_DEFAULT)
>>> {
>>> ...
>>> }
>>>
>>> AgenPro v2.0.6 does this:
>>>
>>> ipAddrPort::ipAddrPort():
>>>    MibLeaf(oidIpAddrPort, READWRITE, new 
>>> OctetStr("\x7f\x00\x00\x01\x00\xa2"), VMODE_DEFAULT){
>>> ...
>>> }
>>>
>>> If we dont't have the second 6ul size argument, won't the OctetStr 
>>> constructor assume that the first \x00 is an end of string?
>>>
>>> Regards,
>>> Dave
>>>
>>>
>>> _______________________________________________
>>> AGENTPP mailing list
>>> AGENTPP at agentpp.org
>>> http://agentpp.org/mailman/listinfo/agentpp
>>>
>>>
>>
>




More information about the AGENTPP mailing list