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

Frank Fock fock at agentpp.com
Sat Jan 4 02:56:46 CET 2014


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.116.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.116.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.116.101.100.82.101.97.100.86.105.101.119.4.9.3.6.4976");
assertEquals("vacmViewTreeFamilyMask.'unrestrictedReadView'.'9.3.6.4976'", 
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:152_)
>
> 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.ObjectNameAndDecodedIndex);
>
> 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




More information about the SNMP4J mailing list