[SNMP4J] - BER -> OID resolution i.e : snmpCommunityName

Garcia, Maurice Maurice_Garcia at Cable.Comcast.com
Wed Jan 15 20:12:12 CET 2014


Thanks for the update!!!  Works great.

Can the (double quote) be configurable to another character via the API?  My lexer/parser interprets the "double quote" for another purpose.

Here is an example of the configuration that will be ingested by the application.

I was going to try and do some preprocessing of the file and do a find and replace with a tick (`) or something else, but if there is a way to do this in the API that would be great.

Snmp11 vacmAccessStorageType."readwritegroup"."".2.'noAuthNoPriv(1)' Integer32 "2";	 /* TLV: [11]*/

Thanks,

Maurice

-----Original Message-----
From: Frank Fock [mailto:fock at agentpp.com] 
Sent: Tuesday, January 14, 2014 3:10 PM
To: Garcia, Maurice; snmp4j at agentpp.org
Cc: Flickinger, Allen
Subject: Re: [SNMP4J] - BER -> OID resolution i.e : snmpCommunityName

Hi Maurice,

Sorry, it was some error in the packaging which removed the innerclass enums.
I have fixed the packaging and you can download the new version now.
If you have problems downloading it through the original link because some proxies are caching the old version then you may try this copy http://www.snmp4j.com/smi/snmp4j-smi-1.1a-dist.zip
(Same file but with an "a" in the name).

Best regards,
Frank


Am 14.01.2014 19:47, schrieb Garcia, Maurice:
> Frank,
>
> I updated both SMI to 1.1 and SNMP4J to 2.2.3, removed the old JARS, clean and rebuild.
>
> When implementing the setOidFormat I see the new ENUM ObjectNameAndDecodedIndex4RoundTrip in the java doc but I am unable to implement.
>
> Eclipse does not see it.  I looked at the examples, but I don't see how to start it out.
>
> This is the  old way:  
> smiManager.setOidFormat(SmiManager.OIDFormat.ObjectNameAndDecodedIndex
> );
>
> But I assume this is the new way: 
> smiManager.setOidFormat(SmiManager.OIDFormat.ObjectNameAndDecodedIndex
> 4RoundTrip);
>
> If this is the intention, then I will need to review my BuildPath or how I am adding the external jars.
>
> I reverted back to the old Versions 2.2.0 and 1.0.1 and is working 
> again, without the new updates
>
> Thanks,
>
> Maurice
>
> -----Original Message-----
> From: Frank Fock [mailto:fock at agentpp.com]
> Sent: Monday, January 06, 2014 10:26 AM
> To: Garcia, Maurice; snmp4j at agentpp.org
> Subject: Re: [SNMP4J] - BER -> OID resolution i.e : snmpCommunityName
>
> Hi Maurice,
>
> SNMP4J-SMI 1.1 is ready for download now - if you have not recognized it yet.
> The examples below are not valid any more, because I had to change the format a little bit. See the SmiManager JavaDoc for the details:
> http://www.snmp4j.org/smi/doc/com/snmp4j/smi/SmiManager.html
>
> Best regards,
> Frank
>
> Am 04.01.2014 02:56, schrieb Frank Fock:
>> Maurice,
>>
>> You got it right. The decoded index format without quotes that is 
>> currently implemented is not suitable for round-trip coding/decoding.
>> The new (additional) format uses double quotes for non-implied length 
>> sub-indexes with variable length, DISPLAY-HINT, or enum label encoding.
>> It uses single quotes for implied length non-numeric sub-index values.
>>
>> Some examples from the unit tests I wrote to verify the new format:
>>
>>      OID vacmAccessContextMatch = new 
>> OID("1.3.6.1.6.3.16.1.4.1.4.7.118.51.103.114.111.117.112.0.3.1");
>> assertEquals("vacmAccessContextMatch.'v3group'.''.3.'noAuthNoPriv(1)'"
>> , vacmAccessContextMatch.toString());
>>
>>      assertEquals(vacmAccessContextMatch, new 
>> OID("vacmAccessContextMatch.'v3group'.''.3.'noAuthNoPriv(1)'"));
>>
>>      OID vacmViewTreeFamilyMask = new
>> OID("1.3.6.1.6.3.16.1.5.2.1.3.20.117.110.114.101.115.116.114.105.99.1
>> 1 6.101.100.82.101.97.100.86.105.101.119.3.1.3.6");
>> assertEquals("vacmViewTreeFamilyMask.'unrestrictedReadView'.'dod'",
>> vacmViewTreeFamilyMask.toString());
>>
>>      OID vacmViewTreeFamilyMask2 = new
>> OID("1.3.6.1.6.3.16.1.5.2.1.3.20.117.110.114.101.115.116.114.105.99.1
>> 1 6.101.100.82.101.97.100.86.105.101.119.4.1.3.6.4976");
>> assertEquals("vacmViewTreeFamilyMask.'unrestrictedReadView'.'dod.4976'
>> ",
>> vacmViewTreeFamilyMask2.toString());
>>
>>      OID vacmViewTreeFamilyMask3 = new
>> OID("1.3.6.1.6.3.16.1.5.2.1.3.20.117.110.114.101.115.116.114.105.99.1
>> 1 6.101.100.82.101.97.100.86.105.101.119.4.9.3.6.4976");
>> assertEquals("vacmViewTreeFamilyMask.'unrestrictedReadView'.'9.3.6.49
>> 7
>> 6'",
>> vacmViewTreeFamilyMask3.toString());
>>
>> Best regards,
>> Frank
>>
>>
>> Am 03.01.2014 16:28, schrieb Garcia, Maurice:
>>> Frank,
>>>
>>> Sorry for all the questions L
>>>
>>> One more related to this email trail...
>>>
>>> I implemented the change you suggested and now the OID is resolved:
>>>
>>> Output -> *vacmSecurityToGroupStatus.1.readwritesec*
>>>
>>> But when I reverse the process, it will not encode back to BER.
>>>
>>> OID 'vacmGroupName.1.readwritesec' cannot be parsed
>>>
>>> at org.snmp4j.smi.OID.parseDottedString(_OID.java:148_)
>>>
>>> at org.snmp4j.smi.OID.<init>(_OID.java:83_)
>>>
>>> at
>>> com.comcast.cpe.cfb.ber.BERService.setOIDEncoding(_BERService.java:1
>>> 5
>>> 2_)
>>>
>>> I am not sure if this is related to the bug you found that will be 
>>> fixed in 1.0.2, but it appear to be the round-trip index conversion 
>>> that you were talking about?
>>>
>>> Thanks,
>>>
>>> Maurice
>>>
>>> *From:*Frank Fock [mailto:fock at agentpp.com]
>>> *Sent:* Thursday, January 02, 2014 12:15 PM
>>> *To:* Garcia, Maurice; snmp4j at agentpp.org
>>> *Subject:* Re: [SNMP4J] - BER -> OID resolution i.e :
>>> snmpCommunityName
>>>
>>> Hi Maurice,
>>>
>>> OK, I understand.
>>> To get the index decoded too, two steps are ncessary:
>>>
>>> 1. Set the OID format to:
>>> smiManager.setOidFormat(SmiManager.OIDFormat.ObjectNameAndDecodedInd
>>> e
>>> x);
>>>
>>> 2. Call  oOID.format();
>>>
>>> While investigating this, I found two issues with SNMP4JSMI 1.0.1:
>>>
>>> 1. When activating the OID format 
>>> OIDFormat.ObjectNameAndDecodedIndex
>>> object names
>>> of non-instance OIDs (i.e. objects in the MIB tree path like 
>>> "mib-2") will be decoded as numeric OIDs only. This bug will be 
>>> fixed with version 1.0.2 coming very soon.
>>>
>>> 2. Currently "OID.toString()" will not return object names with 
>>> decoded index, because such OIDs cannot be parsed and thus are not 
>>> suitable for rountrip conversion.
>>> However, I think I have found  a solution to be able to do 
>>> round-trip index conversion and will implement it for version 1.0.2 too.
>>>
>>> Best regards,
>>> Frank
>>>
>>> Am 02.01.2014 04:40, schrieb Garcia, Maurice:
>>>
>>>      Thanks for the quick reponse!!
>>>
>>>      I am using the SNMP4J-SMI with the purchased license.
>>>
>>>      I used both the OID.format() and OID.toString, but I am getting
>>>      the same result.
>>>
>>>      *if*(*true*) {
>>>
>>>      System./out/.println("BEROIDConversion.getOidName() - BER: "+
>>>      *new*HexString(bBER).toString());
>>>
>>>      System./out/.println("BEROIDConversion.getOidName() -
>>>      OID.toString(): "+ oOID.toString());
>>>
>>>      System./out/.println("BEROIDConversion.getOidName() -
>>>      OID.format(): "+ oOID.format());
>>>
>>>      }
>>>
>>>      BEROIDConversion.getOidName() - BER: 30 1C 06 11 2B 06 01 06 03 12
>>>      01 01 01 02 6D 74 61 70 72 6F 76 04 07 6D 74 61 5F 70 77 64
>>>
>>>      BEROIDConversion.getOidName() - OID.toString():
>>>      snmpCommunityName.109.116.97.112.114.111.118
>>>
>>>      BEROIDConversion.getOidName() - OID.format():
>>>      snmpCommunityName.109.116.97.112.114.111.118
>>>
>>>      Am I doing something wrong, or is there more to the setup of SMI?
>>>
>>>      Thanks,
>>>
>>>      Maurice
>>>
>>>      *From:*Frank Fock [mailto:fock at agentpp.com]
>>>      *Sent:* Wednesday, January 01, 2014 12:03 PM
>>>      *To:* Garcia, Maurice; snmp4j at agentpp.org 
>>> <mailto:snmp4j at agentpp.org>
>>>      *Subject:* Re: [SNMP4J] - BER -> OID resolution i.e :
>>>      snmpCommunityName
>>>
>>>      Hi Maurice,
>>>
>>>      I think the BER (Basic Encoding Rules) isn't the problem here.
>>>      The BER encodes/decodes a numeric object identifier (i.e., an
>>>      array of usinged 32bit integer values) to/from a network encoding
>>>      that is independent from the byte and word order of a system.
>>>
>>>      What you are looking for is SNMP4J-SMI which provides
>>>      OID to object (last) name conversion and index to string
>>>      conversions.
>>>
>>>      If you have SNMP4J-SMI in place, OID.toString() will provide
>>>      you the value you are looking for.
>>>
>>>      Best regards,
>>>      Frank
>>>
>>>      Am 31.12.2013 17:18, schrieb Garcia, Maurice:
>>>
>>>          Hi,
>>>
>>>          I am trying to fully resolve the *snmpCommunityName*OID from
>>>          BER to OID
>>>
>>>          I tried using all the methods in the OID Class and can't find
>>>          anything in the SMI class that can help..
>>>
>>>          Any suggestions???
>>>
>>>          /_Example:_/
>>>
>>>          I get this -> 
>>> *snmpCommunityName.109.116.97.112.114.111.118*
>>>
>>>          But I want this -> *snmpCommunityName.'mtaprov1'*
>>>
>>>          *Thanks,*
>>>
>>>          *Maurice*
>>>
>>>
>>>
>>>
>>>      --
>>>      ---
>>>
>>>      AGENT++
>>>
>>>      Maximilian-Kolbe-Str. 10
>>>
>>>      73257 Koengen, Germany
>>>
>>>      https://agentpp.com
>>>
>>>      Phone: +49 7024 8688230
>>>
>>>      Fax:   +49 7024 8688231
>>>
>>>
>>>
>>> --
>>> ---
>>> AGENT++
>>> Maximilian-Kolbe-Str. 10
>>> 73257 Koengen, Germany
>>> https://agentpp.com
>>> Phone: +49 7024 8688230
>>> Fax:   +49 7024 8688231
> --
> ---
> AGENT++
> Maximilian-Kolbe-Str. 10
> 73257 Koengen, Germany
> https://agentpp.com
> Phone: +49 7024 8688230
> Fax:   +49 7024 8688231
>

--
---
AGENT++
Maximilian-Kolbe-Str. 10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax:   +49 7024 8688231




More information about the SNMP4J mailing list