TODO

o libsmi crashes on LIBSMI-TEST-010-MIB because it mixes up range, size
  and named number restrictions internally so that later these data
  structures are casted to the wrong type. A real fix to this problem
  may require to redesign internal data structures to get rid of the
  opaque list.

o libsmi crashes on LIBSMI-TEST-011-MIB which contains a nice set of
  nasty forward references.


o error detection: detect IMPORTs of SMIv1 specific and SMIv2 specific
  items in the same module, e.g. old OBJECT-TYPE macro and (new)
  NOTIFICATION-TYPE macro.

o error detection: does table node have exactly one row sub node
  with oid == 1? (2578.7.10)

o warning detection: non continuous sub oids in column node list?

o warning detection: not reversible DISPLAY-HINT definitions

o remove SMI_DECL_IMPL_SEQUENCEOF from smi.h: the smiv1/smiv2 parser 
  should keep internal data structures for sequence types so that it 
  can set the correct nodekinds and that it can check the SEQUENCE 
  contents (see previous item). these internal data structures can
  be released at the end of a MIB module.

o warning detection: enumerations SHOULD NOT contain signedNumber's.
  SHOULD start at 1. SHOULD be numbered contiguously.
  e.g. DISMAN-SCHEDULE-MIB.SnmpPduErrorStatus

o warning detection: subtyping not allowed for counter or timeticks

o warning detection: defvals not allowed for counter

o warning detection: missing display hints for OCTET STRING derived types

o parser-smi.y: handle forbidden WS at some places
  ( Module . label, ...)

o dump-sming.c: ensure an order without forward references in typedef's.

o dump-sming.c: support all(!) kinds of index clauses

o smi.c: smiGetNames() is not yet implemented. do we really need it?

o thread safety (global vars? static vars? strtok() and other funcs?)
  different views

o need a handle to distinguish different views.

o clearly separate language dependent information at the API: SMI_STATUS_*
  map STATUS to a non-language-dependent type

o OID/Name Lookup Service (continue work on smid?)

o how to convert SMIng types derived from other defined types correctly
  to SMIv2?

o various dump modules don't print identifiers fully qualified where
  appropriate

o Web online conversion to SMIng?

o special handling for well-known traps (reversibility?)

o smidump -f smiv1 now prints read AUGMENTS clauses as index lists correctly
  but these index objects might not be imported.

o smidump might print defvals for OIDs by label without importing it.

o line breaks in long bits defaults values (dump-*.c)

o Add smiGetFirstChildType(SmiType *smiType) and 
  smiGetNextChildType(SmiType *smiType) to the API.

o Make sure we always get the newest definition when looking up things
  that are not unique.

o The SMIv1/SMIv2/SMIng dump modules should build proper IMPORTS for
  OIDs that show up in DEFVAL or default clauses.

o The default value conversion functions (e.g. getValueString()) should
  return malloced memory to avoid potential memory overwrite problems.

o Suppress the following types: SNMPv2-SMI::ExtUTCTime,
  SNMPv2-SMI::ObjectName, SNMPv2-SMI::NotificationName.

o Check format specifier text in SMIng spec and add a `u' format specifier
  for unsigned numbers.

o smidump -f tree -u IF-MIB SNA-SDLC-MIB vs.
  smidump -f tree -u SNA-SDLC-MIB IF-MIB : e.g. ifEntry differences.

o rename test modules: TUBS-IBR prefix.

o make libsmi aware of annotations (when SMIng supports annotations).

o sming: in rule `refinedBaseType -> EnumerationKeyword optsep namedNumberSpec'
  the `optsep' has to be inserted.

o sming: in rule `refinedBaseType -> BitsKeyword optsep namedNumberSpec'
  the `optsep' has to be inserted.

o sming: ensure enum namedNumbers can be signed and bits namedNumbers cannot.

o split the library into wo layers: (a) a lower layer that is very
  restrictive on allowed input, does not care about memory management, etc.
  and (b) a higher layer of utility functions, like display-hint based value
  formatting, oid-to-instance-element parsing, constant-to-string mappings,
  etc.

o extend smicache so that MIB authors can use it to submit URLs for their
  MIBs to a central MIB http/ftp service? Ask Aiko, whether the SimpleWeb
  should offer such a MIB service?

o Allow the MIB server to support lookup by OID.

o Is there any value in MIB-by-OID lookup through DNS? ;-)

o Include documents (draft on xml, etc.) with the distribution.

o X.208, section 28 allows different forms of OID values. Some of them are
  not accepted by the parser. Note also that the SMIv1 ENTERPRISE construct
  contains an OID value, although it's common practice to specify its value
  in a plain identifier name form, which is not matched by the ASN.1 OID
  syntax.

o Check the code for OID allocations of a constant length (128). Avoid
  wasting memory. Avoid problems with OIDs that are (illegally) too long.

o Check, whether all necessary occurences of &, <, >, ', and
  &qout; are handled correctly in dump-xml and dump-xsd.

o smidiff does not yet support the -i option, like smilint does.

o error detection: different types in SEQUENCE and OBJECT-TYPE macros
  (recognized for a MIB where the SEQUENCE contains "INTEGER" for a column
  for which the OBJECT-TYPE's type is SNMPv2-TC::TruthValue. Notify Bert
  when fixed.

o error detection: integer DEFVAL for an enumeration typed OBJECT-TYPE.
  Notify Bert when fixed.

o API: several applications need a mechanism to iterate through the 
  index components of a row definition, e.g. many of the dump-* drivers.
  For example, see dump-scli.oc: foreachIndexDo(). Maybe something like
  smiGetFirstIndex()/smiGetNextIndex() would be a good idea.

o API/Utility Functions: getMinSize()/getMaxSize() is needed by multiple
  smidump drivers. See dump-scli.c for a good implementation.

o generate a warning if a module is listed multiple times in the
  imports and if a symbol is imported twice (Dave Perkins)