SNMP++/Agent++: SnmpSyntax BITS: Type information internally lost?!

Jens Engel Jens.Engel____marconi.com
Mon Jul 28 13:17:12 CEST 2003


sNMP_SYNTAX_BITS syntax information is partially lost in some functions.
NOTE: Class OctetStr returns sNMP_SYNTAX_OCTETS for OctetStr::get_syntax().

A class SnmpBits should be provided that is derived from OctetStr class.
But the 2 functions below will replace it with an OctetStr object again.
Therefore, it would be better to use a pluggable factory in both cases to
avoid code duplication.
The second case needs an extended factory (by deriving it from the first
one).


CODE-LOCATIONS:
1. file:vb.cpp
void Vb::set_syntax(SmiUINT32 syntax)
{
      ...
      case sNMP_SYNTAX_BITS:
      case sNMP_SYNTAX_OCTETS:
            iv_vb_value = new OctetStr();
            break;
      ...
}

BUT:
      vb.set_syntax(sNMP_SYNTAX_BITS)
      POSTCONDITION(vb.get_syntax() == sNMP_SYNTAX_OCTETS)
      // -- EXPECTED: POSTCONDITION(vb.get_syntax() == sNMP_SYNTAX_BITS);


2. file:mib.cpp
void MibLeaf::set_syntax(SmiUINT32 syntax)
{
            ...
        case sNMP_SYNTAX_OCTETS:
        case sNMP_SYNTAX_BITS:
                value = new OctetStr();
                break;
            ...
}

BUT:
    MibLeaf& MyMibLeaf = MyMibObject;
      MyMibLeaf.set_syntax(sNMP_SYNTAX_BITS);
      POSTCONDITION(MyMibLeaf.get_syntax() == sNMP_SYNTAX_OCTETS)
      // -- EXPECTED: POSTCONDITION(MyMibLeaf.get_syntax() ==
sNMP_SYNTAX_BITS);






More information about the AGENTPP mailing list