Package org.opennms.netmgt.snmp.snmp4j
Class IpAddressBadLengthBugAware
- java.lang.Object
-
- org.snmp4j.smi.AbstractVariable
-
- org.snmp4j.smi.SMIAddress
-
- org.snmp4j.smi.IpAddress
-
- org.opennms.netmgt.snmp.snmp4j.IpAddressBadLengthBugAware
-
- All Implemented Interfaces:
Serializable
,Cloneable
,Comparable<org.snmp4j.smi.Variable>
,org.snmp4j.asn1.BERSerializable
,org.snmp4j.smi.Address
,org.snmp4j.smi.AssignableFromByteArray
,org.snmp4j.smi.AssignableFromString
,org.snmp4j.smi.Variable
public class IpAddressBadLengthBugAware extends org.snmp4j.smi.IpAddress
- Author:
- Jeff Gehlbach <jeffg@opennms.org> This class was created to work around a bug in the Net-SNMP BER library that causes Net-SNMP agents prior to version 5.4.1 on 64-bit platforms to encode IPv4 addresses as 8 bytes rather than 4 bytes. SNMP4J correctly discards these representations by default. It has since been extended to substitute an IPv4 address of 0.0.0.0 when presented with a zero-length IpAddress value. This behavior has been seen from DrayTek Vigor2820 series routers. This class will be used in place of org.snmp4j.smi.IpAddress only if we call org.snmp4j.SNMP4JSettings.setExtensibilityEnabled(true) AND set the system property org.snmp4j.smisyntaxes to refer to a classpath properties resource (relative to class org.snmp4j.smi.AbstractVariable) that overrides the default mapping for BER type 64 (nominally IpAddress). See the file opennms-snmp4j-smisyntaxes.properties. The workaround for 8-bit long IPv4 addresses will be enabled only if the system property org.opennms.netmgt.snmp.workarounds.allow64BitIpAddress is set to "true". The workaround for 0-byte IPv4 addresses will be enabled only if the system property org.opennms.snmp.workarounds.allowZeroLengthIpAddress is set to "true".
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description IpAddressBadLengthBugAware()
IpAddressBadLengthBugAware(String address)
IpAddressBadLengthBugAware(InetAddress address)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
decodeBER(org.snmp4j.asn1.BERInputStream inputStream)
-
Methods inherited from class org.snmp4j.smi.IpAddress
clone, compareTo, encodeBER, equals, fromSubIndex, getBERLength, getInetAddress, getSyntax, hashCode, isValid, parse, parseAddress, setAddress, setInetAddress, setValue, setValue, toByteArray, toInt, toLong, toString, toSubIndex
-
-
-
-
Constructor Detail
-
IpAddressBadLengthBugAware
public IpAddressBadLengthBugAware()
-
IpAddressBadLengthBugAware
public IpAddressBadLengthBugAware(InetAddress address)
-
IpAddressBadLengthBugAware
public IpAddressBadLengthBugAware(String address)
-
-
Method Detail
-
decodeBER
public void decodeBER(org.snmp4j.asn1.BERInputStream inputStream) throws IOException
- Specified by:
decodeBER
in interfaceorg.snmp4j.asn1.BERSerializable
- Overrides:
decodeBER
in classorg.snmp4j.smi.IpAddress
- Throws:
IOException
-
-