The DEFVAL clause, which need not be present, defines an acceptable default value which may be used at the discretion of a SNMPv2 entity acting in an agent role when an object instance is created. During conceptual row creation, if an instance of a columnar object is not present as one of the operands in the correspondent management protocol set operation, then the value of the DEFVAL clause, if present, indicates an acceptable default value that a SNMPv2 entity acting in an agent role might use.
The value of the DEFVAL clause must, of course, correspond to the SYNTAX clause for the object. If the value is an OBJECT IDENTIFIER, then it must be expressed as a single ASN.1 identifier, and not as a collection of sub-identifiers.
Note that if an operand to the management protocol set operation is an instance of a read-only object, then the error `notWritable' [6] will be returned. As such, the DEFVAL clause can be used to provide an acceptable default value that a SNMPv2 entity acting in an agent role might use.
By way of example, consider the following possible DEFVAL clauses:
ObjectSyntax DEFVAL clause ---------------- ------------ Integer32 DEFVAL { 1 } -- same for Gauge32, TimeTicks, Unsigned32 INTEGER DEFVAL { valid } -- enumerated value OCTET STRING DEFVAL { 'ffffffffffff'H } OBJECT IDENTIFIER DEFVAL { sysDescr } BITS DEFVAL { { primary, secondary } } -- enumerated values that are set IpAddress DEFVAL { 'c0210415'H } -- 192.33.4.21
Object types with SYNTAX of Counter32 and Counter64 may not have DEFVAL clauses, since they do not have defined initial values. However, it is recommended that they be initialized to zero.