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

Frank Fock fock at agentpp.com
Thu Jan 16 08:23:46 CET 2014


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