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

Garcia, Maurice Maurice_Garcia at Cable.Comcast.com
Thu Jan 16 15:02:51 CET 2014


Thank you and for your quick response!

Sent from my iPhone

> On Jan 16, 2014, at 2:24 AM, "Frank Fock" <fock at agentpp.com> wrote:
> 
> Hi Maurice,
> 
> Ok, it was a bit harder to implement it in a generic way than I thought firstly.
> The escaping has to be done very carefully ;-)
> 
> You can download version 1.1.1 which provides the option to set your own quotes
> and corresponding escape sequences.
> 
> I have put the most commonly used configuration options on the SNMP4J-SMI -FAQ
> at:
> https://oosnmp.net/confluence/pages/viewpage.action?pageId=5799981
> 
> Best regards,
> Frank
> 
> Am 15.01.2014 20:12, schrieb Garcia, Maurice:
>> 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
> 
> -- 
> ---
> 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