
This file contains a list of things that should be changed or added to
the Tnm Tcl extension.


1. General:
-----------

o There are still lots of tests missing.

o Write a users and programmers manual with good examples.


2. TCP/IP:
----------

o The http command does not handle RFC 1738 unsafe and reserved 
  character encodings.

o The http command should be extended to operate in an asynchronous
  fashion.

o Support NIS (aka YP) as an option of the sunrpc command. (How much
  work is it to code it in a platform independent way?


3. SNMP:
--------

o The concept of mixing SNMP manager and agent sessions is broken because
  this mixes up the semantics of session options. For example, -port
  refers to the remote agent port when the -agent option is not used and
  it refers to the local agent port otherwise. The -address option is
  actually ignored by an agent session. The next major release should
  correct these problems by replacing the "snmp session" command with
  two commands, e.g. "snmp manager" and "snmp agent". This will disallow
  to use a single session as an agent and a manager. Allowing one session
  to be an agent as well as a manager would require to nearly double the
  configuration options, which is IMHO not worth the effort.

o Add a -proxy session option that allows to use a SNMP session
  as a (native) proxy.

o Removing instances while processing bindings can crash
  the Tnm extension.

o Set processing should be smarter to detect some more error conditions
  as defined in RFC 1905.

o Implement a MIB view mechanism.

o There should be a -writepassword option for USEC session
  similar to the -writecommunity option.

o The bindings should make sure that the PDUs are normalized.
  (observed by the SEND binding)

o The CHECK bindings should take place before the result values 
  are put into the response PDU - or other way round: assemble the
  response after the CHECK bindings have been evaluated.

o Check if getnext processing can be hurt by not-accessible objects.

o The parser is not able to handle definitions like
  ::= { enterprises 785 2 } because there is no name for the
  node enterprises.785 :-(

o The instance tree is still shared by all Tcl interpreter.
  Every interpreter should maintain its own instance tree.

o The definitions of parser token and ASN1 types is messed up. We 
  need to clearly distinguish these things. Needs to be cleaned up.

o Recognize AUGMENT options and make default values accessible in 
  the agent module - how do we handle IMPLICIT keywords?

o The parser should recognize constraints like sizes. The agent
  should make same sanity checks to enforce these restrictions.
  We should also recognize default values. Perhaps it is time to 
  find a volunteer to rewrite the whole parser. 

o SNMP_SplitVarBindList(), SNMP_MergeVarBindList(), 
  SNMP_FreeVarBindList() should be used to create a vector of the 
  varbind. This will avoid some Tcl list operations in the walk 
  command and agent interface.

o Should we really automatically create instances if we receive set
  requests for not existing SNMP variables? Or should be just call
  the create binding so that Tcl scripts have complete control? Yes.


4. Tkined:
----------

o The trapsink command of snmp_monitor should allow to configure
  which kind of traps we want to receive.

o Merge the changelog files into one again and remove
  outdated stuff and add new information.

o Allow applications to email or print the contents of a LOG object.

o The l command (leave group) should, IMHO, take the connection of 
  the element out of the group with a node. Currently, the connection
  is invisible unless the group is expanded.

o Check the info texts. They are out of sync.

o stripchart.c:1098 guard zone broken if you make a very tall chart.

o Add better support for configuration options, e.g. the print 
  command, always align to grid, default grid spacing. Something 
  like a preferences section that is automatically maintained by
  tkined.

o Should we deny to put LINK objects into a group object?

o Attributes for EVENT objects: time, severity, objects, description,
  class

o Stripcharts and barcharts sometimes change their position when
  loading a previously saved map.

o Many tasks should be done using DoWhenIdle handlers so that no
  redundand operations are done on the canvas. Check out if we can
  do the same with m_label()!

o In some situations, the selection marks are somewhat outdated if the
  internal structure of an expanded group changes.

o Make internal pointers real pointers to get rid of those slow 
  lookups. THIS IS NEARLY DONE. All I need is to clean up the use
  of the links attribute. And it would be a big win to separate 
  the generic part from the type specific, or at least use unions.

o There is no support for pbm bitmap files, only xbm.

o Should I remove the tkined.defaults file and use some init.tcl 
  files instead? This would give some more flexibility.

o Make PostScript dumps of selected regions or user defined media
  types. (The later may be the better/more general solution.)

o Loading maps with expanded groups within expanded groups does not
  expand those inner groups.

o The handling of options and user preferences should be reworked
  to make it easier to change and maintain them.

o A label may not contain a " character because of too simple 
  quoting in m_label().

o Allow user defined dialogs. There are at least three ways: 

   1. Use tcl's autoload function to search for files that contain
      dialog definitions in the form Dialog::foobar.

   2. Use some default definitions to let tkined know where it can 
      find additional dialogs, e.g.

	tkined.dialog.foobar: /usr/local/lib/simLan/simulan_dialog.tk

   3. Use a special ined command to define new dialogs, like

	ined create DIALOG foobar { body }

o Ordering of tkined objects gets broken when saving a tkined image.

o Better integration of URL references.

o LOG objects should save the current directory.

o Stretching or shrinking networks is not well implemented. We need
  a better and more general mechanism to modify network and link 
  points.

o Stripcharts/barcharts/graphs should not be visible by applications
  so that a user can define and switch between representations. Go
  ahead and finish the DATA object.

o Predefined stream types(?): split, join, stripchart, barchart,
  file, etc.

o An icon canvas widget and label for stripcharts and
  barcharts would allow to simplify the code and make things much 
  faster.

o An Event object should be added so that applications just throw
  out an event and Tkined is responsible to do something useful with
  it.

? Action attributes to bind popup menus to objects.

? Select neighbours should select groups.

? Key-codes for fast tool access.

? Edit a group in another view (like good old idraw)?


5. Tkined Applications:
-----------------------

o Replace all uses of nslook with the netdb command.

o Allow to save/load event filter definitions.

o ip_monitor should be able to display all information available
  in an etherstat response.

o snmp_monitor should be able to monitor non-integer variables
  like time ticks or even display strings.

o Need a way to limit walks to a deapth of N because some RMON boxes
  have MIBS that grow fastern than a walk (de@lick.ucsc.edu)

o Killed monitoring jobs remain in saved files and sometimes restart
  in unwanted ways. Needs some fixing.

o ip_world: reuse already traced nodes, better guess for nodes by
  examining their neighbours.

o The handling of monitoring jobs should be clarified. There must be
  a way to edit the objects handled by a single job and we need a way
  to do some housecleaning when a job is deleted. How about a standard
  way to do things: cmd -> create -> job -> cleanup. It would be nice
  to have calling conventions so that we can automate restart calls
  etc.

o The remote mechanism in manager.tcl should use a udp socket to
  negotiate the connection request. This would prevent clients from
  blocking and it would also simplify the implementation because we
  do not need an rpc server just to accept connection requests.

o The game could be funnier.


6. LIBRARY:
-----------

o The SNMP related procs should operate in an asynchronous mode.


7. EXAMPLES:
------------

o The mibtree script should better support monitoring jobs. Output
  should go to different windows and it should be possible to adjust
  the monitoring frequencies.


8. GDMO:
--------

o A basic test suite against the OIM.gdmo would be valuable.

o The list handling code in parse.y can be optimized.

o The whole implementation needs some cleanups.

o Options should be stored in bit vectors instead those ugly arrays.

o We should support lex - Erik might help on this.


9. CMIP:
--------

o We should write our own CMIP protocol implementation as the
  osimis stuff is far to fat to be used by most of us.
