[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