Wed Nov  1 18:33:52 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmpNet.c (SNMP_TrapSocket), straps.c:
	  The calculation of the length of the unix domain address
	  should now work across different platforms.

Sun Oct 29 19:53:46 1995  Juergen Schoenwaelder  <schoenw@data>

	* Makefile.in:
	  Dynamic loading (tested on SunOS, IRIX, Linux, FreeBSD).

Sun Oct 29 01:16:16 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* snmpAgent.c:
	  Splitted the PDU processing into two procs. Set processing
	  now supports an additional `check' binding and the old 
          values are automatically restored if we have to rollback.

Sat Oct 28 21:55:00 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* straps.c:
	  Added support for multicast traps. Very experimental
	  but interesting stuff.

	* mibTcl.c, mibParser.c:
	  Compressed MIB files are now written in an machine specific
	  directory. This allows to share the scotty library across
	  multiple platforms.

	* snmpNet.c (straps):
	  The SCOTTY_STRAPS environment variable can be used to
	  overwrite the compiled in location of ntping.

Tue Oct 24 11:28:12 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmpResponse.c (DecodePDU):
	  Added code to add snmpTrapEnterprise to the SNMP trap
	  varbind if we convert a SNMPv1 trap into a SNMPv2 trap.

Mon Oct 23 10:09:38 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmp.h, snmpRequest.c, snmpResponse.c snmpTcl.c:
	  Added support for the upcoming SNMPv2C community
	  based SNMPv2 "solution".

	* snmpTcl.c:
	  Added a -version option to configure SNMP sessions.

Mon Oct 16 23:29:55 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* snmpTcl.c (ShowSession):
          Show the -agent session correctly.

	* snmpTcl.c (SessionCmd):
	  `snmp# bind label event' returns the script.

	* snmpInst.c (SNMP_GetInstBinding):
	  Function to retrieve the script bound to an instance.

Sun Sep 10 15:31:52 1995  Juergen Schoenwaelder  <schoenw@data>

	* mibTree.c (LookupOID, LookupLabel, MIB_FindNode):
	  MIB_FindNode() returns the offset to the trailer of the 
	  given name or object identifier, which is usually an 
	  instance identifier. This gives better performance and
	  fixes the broken `mib name system.sysDescr.0' result.

	* mibQuery.c (MIB_Oid, MIB_Name):
	  Fixed a problem where we used a char pointer that was 
	  already freed.

Sat Sep  9 17:58:54 1995  Juergen Schoenwaelder  <schoenw@data>

	* mib.h, mibParser.c, mibFrozen.c, mibQuery.c, mibTcl.c:
	  Added the `mib index' command, which returns the index
	  variables (or better keys) of a conceptual table.

Fri Aug 11 11:25:28 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmpResponse.c
	  Rewrote much of the authentication checking code. I also
	  added support to send SNMPv2_REPORT PDUs for the USEC model.

	* snmp.h:
	  The SNMPv2 models CLASSIC and USEC are now otional, so that
	  you can just remove them completely if you don't need them.

Wed Aug  9 09:31:25 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmpTcl.c (ConfigSession):
	  Every attempt to configure a session handle will first
	  wait until all pending requests have been handled. 
	  Otherwise, we could get into problems as we need to patch
	  authentication bytes into packet before retransmission.

Sun Aug  6 20:27:15 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmp.h, snmpRequest.c, snmpResponse.c, snmpTcl.c, 
	  snmpUtil.c, snmpNet.c:
	  More changes to support the SNMPv2 USEC draft.

	* asn1.c: 
	  Renamed the functions to handle ASN1_OIDs and merged them
	  into the asn1.c file. Removed the snmpOid.c file.

Sun Aug  6 12:34:27 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* snmpRequest.c, snmpResponse.c:
	  Added some static buffers to avoid malloc() calls while
	  parsing / formatting OCTET STRINGs during PDU processing.

	* snmpUtil.c, snmpNet.c, snmpResponse.c:
	  Some changes to reduce the number of malloc() calls for
	  asynchronous requests. Merged the SNMP_Timeout structure
	  with the SNMP_Request structure.

Sat Aug  5 19:28:57 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmpTcl.c, snmpUtil.c, snmp.Request.c, snmpResponse.c:
	  Various changes to support the new USEC SNMPv2 authentication
	  scheme. This is really cool compared to the P/P/C model.

Thu Aug  3 17:54:18 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmpTcl.c, snmpUtil.c, snmpNet.c, 
	  snmp.Request.c, snmpResponse.c: 
	  Various changes to cleanup the handling of IP addresses
	  and port numbers.

Wed Aug  2 23:33:41 1995  Juergen Schoenwaelder  <schoenw@data>

	* straps.c, snmpNet.c:
	  Straps now reports the IP address and the port of the
	  SNMP entity that send us the trap message.

Thu Jul 27 17:59:56 1995  Juergen Schoenwaelder  <schoenw@data>

	* mibInst.c (SNMP_EvalInstBinding):
	  Fixed handling of instances that are deleted during their
	  callback. Scotty returns a generic error code in this case.

	* mibTree.c (MIB_FindNode):
	  Some significant speed up if you find nodes by name which 
	  are at the end of the MIB tree by using the hash table.

Wed Jul 26 16:39:45 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmpTcl.c, snmpTree.c, snmpAgent.c:
	  Changed the some commands to better support safe Tcl:
	    snmp instance	-> snmp# instance
	    snmp# agent		-> snmp# configure -agent <interp>
	    snmp bind		-> snmp# bind
	  There is now only one bind command for all kind of bindings.
	  Bindings not associated with a particular instance require
	  to use an empty label "".

	* snmpTree.c, snmpAgent.c:
	  Split the agent.c file in two parts to seperate the instance
	  tree handling from the agent processing stuff.

	* Renamed most files to follow the Tcl conventions and
	  to avoid problems with name clashes.

Mon Jul 24 17:11:07 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmptcl.c (SessionCmd):
	  The script argument for the session bind command is now
	  optional. We return the current script if the argument is
	  missing.

Mon Jul 24 11:27:09 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* snmptcl.c (SessionCmd):
	  Added the ability to create an agent using a safe Tcl
	  interpreter (based on stcl-0.1).

Fri Jul 21 13:02:00 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmptcl.c (ConfigSession):
	  Added the snmp alias command and the -alias configure
	  option.

Thu Jun 22 18:24:45 1995  Juergen Schoenwaelder  <schoenw@data>

	* misc.c (SNMP_HexToBin):
	  Stricter rules to convert octet string values.

Tue Jun  6 18:22:24 1995  Juergen Schoenwaelder  <schoenw@data>

	* frozen.c:
	  Faster frozen files added by Erik Schoenfelder.

Sat May 20 00:10:40 1995  Juergen Schoenwaelder  <schoenw@data>

	* misc.c (SNMP_RecordRequest):
	  Changed the semantics of retries to actually mean 
	  retries and not tries.

Wed May 17 23:17:00 1995  Juergen Schoenwaelder  <schoenw@data>

	* response.c (DecodePDU), request (EncodePDU), 
	  asn1.c (ASN1_DecodeInt):
	  Some changes to handle Integer32 values.

Fri May 12 17:17:53 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmptcl.c (WaitSession):
	  The snmp wait command now accepts a request identifier
	  as an argument to wait for.

	* snmptcl.c (SessionCmd):
	  Renamed the trapsink option to `bind trap' and added
	  a `bind inform' option.
	  *** POTENTIAL INCOMPATIBILITY ***

Mon May  8 16:54:18 1995  Juergen Schoenwaelder  <schoenw@data>

	* asn1.c (ASN1_EncodeCounter64):
	  The check for integer overflow was broken as large unsigned
	  integers are encoded in 5 bytes, where the first byte is 0.

Thu May  4 10:52:02 1995  Juergen Schoenwaelder  <schoenw@data>

	* response.c (DecodePDU):
	  Fixed two places where a ckfree(NULL) could happen if a 
	  broken SNMP packet was received.

Wed May  3 00:09:47 1995  Juergen Schoenwaelder  <schoenw@kastor>

	* asn1.c (ASN1_EncodeLength):
	  Once again fixed an off by one bug. Now we pass most of the
	  SNMP test suite written by Marshall Rose.

Tue May  2 18:12:46 1995  Juergen Schoenwaelder  <schoenw@kastor>

	* response.c (DecodeV1Message):
	  Added a missing check for unknown SNMP message versions.

	* request.c (EncodePDU):
	  ASN1_INTEGER, ASN1_Counter, ASN1_Gauge and ASN1_UInteger32 were
	  all encoded as an ASN1_INTEGER.

	* request.c (SNMP_Encode):
	  Fixed the conversion of SNMPv2 error codes into SNMPv1 error
	  codes.

Fri Apr 28 18:26:03 1995  Juergen Schoenwaelder  <schoenw@data>

	* oid.c (SNMP_Oid2Str):
	  We now return a pointer to some static buffer space
	  to avoid some malloc/free polkas.

	* request.c (EncodePDU), response.c (DecodePDU):
	  Encode/Decode Counter64 values as Integer values if we 
	  are on a 64 bit machine and as doubles if we are on a
	  32 bit machine.

	* asn1.c (ASN1_EncodeCounter64, ASN1_DecodeCounter64):
	  Two new functions to encode counter values to/from
	  doubles on machines that use based on 32 bit integers.

Wed Apr 26 13:00:29 1995  Juergen Schoenwaelder  <schoenw@data>

	* query.c (FormatTimeTicks, ScanTimeTicks):
	  New functions to format and scan TimeTicks values.

	* request.c (EncodePDU, DecodePDU):
	  Fixed handling of unsigned TimeTick values.

	* snmptcl.c (SNMPWalk):
	  Fixed the check for noSuchName errors as pointed out by
	  Louis A. Mamakos (louie@TransSys.COM).

Mon Apr 24 17:15:17 1995  Juergen Schoenwaelder  <schoenw@data>

	* oid.c (SNMP_Str2Oid): 
	  A small rewrite to handle unsigned object identifier.

	* asn1.c (ASN1_EncodeOID):
	  Fixed the encoding of large subidentifier.

Fri Apr 21 19:56:25 1995  Juergen Schoenwaelder  <schoenw@data>

	* request.c (EncodePDU):
	  Added a fix by Peter Reilly <peter@euristix.ie> where the code
	  did not update the packet pointer after encoding an ipaddress.

Sun Apr 16 12:52:21 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* memory.c (SNMP_SplitVarBindList, SNMP_MergeVarBindList,
	  SNMP_FreeVarBindList):
	  Added new functions to split and merge Tcl varbind lists.
	  They will sometimes be used internally to make multiple
	  loops through a varbind less expensive.

Fri Apr 14 15:40:49 1995  Juergen Schoenwaelder  <schoenw@data>

	* agent.c (SNMP_AgentRequest):
	  Added a check for potential packet overflow (tooBig).

	* snmptcl.c (SNMPWalk):
	  Fixed a bug that caused core dumps when using an
          empty oid list.

Thu Apr 13 19:55:07 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmptcl.c (SNMPWalk):
	  We now terminate the walk if we get an endOfMibView
	  exception.

Fri Mar 31 17:33:48 1995  Juergen Schoenwaelder  <schoenw@data>

	* query.c, oid.c: 
	  Changes to handle unsigned subids in object identifier.

Wed Mar 29 13:52:31 1995  Juergen Schoenwaelder  <schoenw@data>

	* query.c (MIB_File):
	  A new function to retrieve the MIB file name.

Tue Mar 28 13:08:32 1995  Juergen Schoenwaelder  <schoenw@data>

	* asn1.c (ASN1_EncodeNull, ASN1_DecodeNull):
	  Changes to support tagged NULL values (used for exceptions).

	* asn1.c (ASN1_EncodeOID, ASN1_DecodeOID):
	  Fixed en-/decoding of object identifier with length 1 or 2.

	* agent.c (SNMP_AgentRequest):
	  Convert Tcl error messages from evaluated bindings
	  into snmp error types.

	* misc.c (SNMP_Err2Str, SNMP_Str2Err):
	  New functions to convert SNMP error messages to strings and 
	  back. Added a debugging aid SNMP_DumpPacket().

Mon Mar 27 16:12:25 1995  Juergen Schoenwaelder  <schoenw@data>

        * parser.c:
	  Some hacks (calling it fixes would be a lie) to the parser
	  to recognize SEQENCE and SEQUENCE OF syntax and to allow
	  type definitions before a module header. Thanks Erik.

	* agent.c (SNMP_CreateBinding, EvalBinding):
	  A list of SNMP_Binding structures is now used to hold
	  bindings as we need a bigger set of events.

Sun Mar 26 11:17:47 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* agent.c (SNMP_CreateInstance):
	  Added code to save the offset where the instance 
	  identifier of an instance starts.

	* response.c (SNMP_EvalCallback):
	  Added three more arguments to some code to allow %l, %i
	  and %v escapes for instance bindings.

	* net.c (SNMP_AgentSocket):
	  Multiple calls to create an agent on a snmp handle will
	  now close the existing socket and reopen a new one.

Sat Mar 25 11:03:24 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* net.c (straps):
	  We now use Tcl_CreatePipeline() to fork the straps daemon.

Fri Mar 24 11:41:41 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmptcl.c (SNMPWalk):
	  Reinitialize the PDU type to getbulk-request. Otherwise
	  we send get-next requests with an error index != 0.

	* query.c (FormatIntTC, ScanIntTC):
	  Two new functions by Erik to handle Integer textual 
	  conventions as defined in the latest SNMPv2 draft.

Wed Mar 22 13:10:24 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmptcl.c (Request), request.c (encodePDU):
	  The inform option now requires an trapOid argument as
	  defined in the new SNMPv2 draft.

Tue Mar 21 18:10:18 1995  Juergen Schoenwaelder  <schoenw@data>

	* parser.c (ParseASN1Type):
	  Allow the subtyping of known Textual Conventions.

Fri Mar 10 13:58:07 1995  Juergen Schoenwaelder  <schoenw@data>

	* asn1.c (ASN1_DecodeOctetString):
	  Decoding zero length strings returned a NULL pointer
	  instead of an empty string.

	* Replaced all xmalloc() calls etc. with ckalloc() etc.

Wed Mar  8 13:01:40 1995  Juergen Schoenwaelder  <schoenw@data>

	* tcl.c (MIBWalk):
	  The loop variable now contains the label or the object
	  identifier of the node depending on the argument which
	  defines the starting node.

Tue Mar  7 11:14:52 1995  Juergen Schoenwaelder  <schoenw@data>

	* tcl.c (MIBWalk):
	  New function to implement a walk along the leaf nodes of the
	  MIB tree. Useful to count MIB objects or to build MIB browsers.

	* tcl.c (SNMPWalk):
	  Renamed Walk() to SNMPWalk().

	* parse.c: (CreateTC, LookupTC)
	  Various rewrites to handle textual conventions. We now
	  use a Tcl hash table to lookup textual conventions which
	  makes a difference if you use large MIB definitions.

	* query.c (LookupOID):
	  Fixed a bug which affected oids of length 1.

Thu Feb 23 17:30:06 1995  Juergen Schoenwaelder  <schoenw@data>

	* tcl.c	(SessionCmd): 
	  Removed the port argument from the snmp agent command.
	  Use the -port configure option instead.
          *** POTENTIAL INCOMPATIBILITY ***

	* agent.c:
	  Bindings are now possible on any MIB object. They are
	  processed from the instance to the root of the MIB tree.
	  A break in a binding cancels further bindings.

Tue Feb 21 00:03:25 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* query.c (MIB_TC):
	  New command to query for textual conventions.

Mon Feb 20 22:34:57 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* tcl.c (SnmpCmd, SessionCmd):
	  Implemented new wait option to wait for async. requests.

	* tcl.c (ShowOption):
	  Implemented a cget option to query session options.

Sun Feb 19 15:26:08 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* agent.h (SNMP_AgentRequest):
	  Use SNMP_EvalCallback() to evaluate bindings which allows
	  to use % escapes. Honour the break return.

	* response.c (SNMP_EvalCallback):
	  Changes the prototype of the result argument and added
	  a call to Tk_BackgroundError() if an error occurs.

Fri Feb 17 22:15:23 1995  Juergen Schoenwaelder  <schoenw@data>

	* asn1.c:
	  Do not try to encode something if the packet is already 
	  a NULL pointer because of an earlier error.

	* agent.c, tcl.c:
	  Added a new snmp command 'snmp bind' to define bindings
	  on SNMP instances.

Sun Feb 12 10:20:48 1995  Juergen Schoenwaelder  <schoenw@data>

	* snmp.h:
	  Added #include <sys/socket.h> missing on some machines.

Sat Feb 11 16:55:35 1995  Juergen Schoenwaelder  <schoenw@bayes>

	* tcl.c (Walk): 
	  noSuchName errors mark the end of a MIB view and hence they
	  are no real errors. So we ignore them during a walk.

Tue Feb  7 18:03:59 1995  Juergen Schoenwaelder  <schoenw@data>

	* query.c (MIB_Load):
	  Search for the mib file in $scotty_lib/site and in
	  $scotty_lib/mibs.

Mon Feb  6 19:28:20 1995  Juergen Schoenwaelder  <schoenw@data>

	* parse.c (BuildSubTree):
	  Child nodes are now inserted in lexicographic order
	  and already existing nodes are skipped.

Thu Feb  2 13:15:44 1995  Juergen Schoenwaelder  <schoenw@data>

	* oid.c (SNMP_IsOid):
	  Changed isxdigit() to isdigit(). Otherwise labels like 
	  `dde' are treated like object identifiers.

Tue Jan 24 13:18:56 1995  Juergen Schoenwaelder  <schoenw@data>

	* parse.c (AddToTree):
	  Some additional code to handle MIB files that define more
	  than one subtree. The solution is somewhat ugly, but at
	  least it does what it should.

Sun Jan 22 17:48:53 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* snmp.h
	  Minor cleanups. Replaced the double linked lists
	  with simple linked lists.

	* query.c (MIB_TC):
	  New function to query the textual convention that 
	  applies to a given object.

Sat Jan 21 16:31:05 1995  Juergen Schoenwaelder  (schoenw at sulu)

	* tcl.c (ConfigParty, ConfigAuth):
	  Replaced sscanf() with Tcl_SplitList() and Tcl_GetInt().

	* response.c (SNMP_Decode):
	  msg.community was not properly initialized.

Fri Jan 20 19:06:48 1995  Juergen Schoenwaelder  <schoenw@data>

	* md5.c:
	  Forgot to include config.h for WORDS_BIGENDIAN :-(

	* request.c (encode_SnmpV2Message):
	  Fixed the encoding of MD5 authenticated messages.

Thu Jan 12 14:23:55 1995  Juergen Schoenwaelder  <schoenw@data>

	* many files:
	  Removed the error callback as it is a feature that is 
	  not really needed (simply check the error in the 
	  callback).
	  *** POTENTIAL INCOMPATIBILITY ***

	* all files:
	  Started to rename structures and functions to follow
	  the tcl coding styles.

Fri Jan  6 20:10:56 1995  Juergen Schoenwaelder  <schoenw@data>

	* parse.c (parse_mibfile):
	  Skip object identifier definition between the label
	  and the DEFINITIONS keyword.

Thu Jan  5 00:57:09 1995  Juergen Schoenwaelder  <schoenw@data>

	* parse.c (read_keyword):
	  Fixed the parser to skip all comments in the scanner.

Thu Dec 29 08:45:43 1994  Juergen Schoenwaelder  (schoenw at sulu)

	* Renamed udp.[ch] to net.[ch] and fixed the net.o target
	  to set the STRAPS path correctly.

Wed Dec 21 17:14:45 1994  Juergen Schoenwaelder  <schoenw@data>

        * query.c:
          Added some calls to SNMP_Hex2Oid() to accept hexadecimal
          components in an object identifier.

        * oid.c (SNMP_Hex2Oid): 
          New function to expand hexadecimal OID subidentifiers.
 
Sat Dec  3 14:06:01 1994  Juergen Schoenwaelder  (schoenw at sulu)

	* Makefile.in: Moved the swish target to the toplevel.

	* parse.c, udp.c, misc.c, agent.c, tcl.c, snmp.h:
	  Fixed / added function prototypes.

Wed Nov 30 17:27:40 1994  Juergen Schoenwaelder  <schoenw@kastor>

	* query.c (MIB_Description):
	  Only skip white spaces at the beginning of a line.

Tue Nov 29 18:28:50 1994  Juergen Schoenwaelder  <schoenw@data>

	* asn1.c (ASN1_EncodeLength):
	  Fixed an off-by-one bug for length > 127.

Mon Nov 28 18:55:13 1994  Juergen Schoenwaelder  <schoenw@data>

	* tkAppInit.c (Tcl_AppInit): 
	  Added some of the scotty initialization code to evaluate
	  scotty's initialization file. This is ugly but the best
	  solution until we get tcl 7.4...

Mon Nov 28 09:44:43 1994  Juergen Schoenwaelder  <schoenw@achill>

	* tcl.c (request): 
	  trapOid sometimes got freed from not malloced memory.

	* response.c (decodePDU):
	  Replaced a call to MIB_Oid() with MIB_Name() to return
	  user friendly trap names.

Wed Nov 23 19:54:30 1994  Juergen Schoenwaelder  <schoenw@data>

	* agent.c (TreeAdd): 
	  Nodes with a subid smaller than all already existing 
	  nodes in a tree level were placed at the end.

	* tcl.c (conf_auth): 
	  Fixed the parsing of authentication keys.

Tue Nov 22 18:52:53 1994  Juergen Schoenwaelder  <schoenw@data>

	* asn1.c (ASN1_DecodeInt):
	  Fixed the decoding of negative integers.

Sun Nov 20 23:32:59 1994  Juergen Schoenwaelder  <schoenw@data>

	* parse.c:
	  Merged the parser node structure with the tree structure
	  to avoid unnessary duplications.

Fri Nov 18 03:06:46 1994  Juergen Schoenwaelder  <schoenw@data>

	* Replaced all Tcl_VarEval() calls to query the MIB 
	  tree with the corresponding C function.

	* Renamed the public MIB query functions and cleaned up
	  their interface. Merged tcl_snmp.c and tcl_mib.c into
	  one module.

	* Rewrote the query interface to the MIB tree. Its much
	  faster now, especially on lookups to instance identifiers.

Thu Nov 17 22:37:51 1994  Juergen Schoenwaelder  <schoenw@data>

	* Added some counters here and there to get some stats
	  for the snmp statistics groups.

	* Eriks extensions to parse.c and query.c are here to
	  handle textual conventions. Cool stuff. Thanks alot.

Wed Nov 16 02:19:34 1994  Juergen Schoenwaelder  <schoenw@data>

	* Rewrote walk() using calls to SNMP_Encode instead of
	  Tcl_Eval() which makes it a little bit faster.

Tue Nov 15 17:07:27 1994  Juergen Schoenwaelder  <schoenw@data>

	* Changed the interface to SNMP_Encode() so that we can
	  call it with an already assembled pdu. Allows me to
	  move the argmuent parsing code to tcl_snmp.c and to
	  call SNMP_Encode() directly from agent.c.

	* Erik has hacked parse.c to recognize enumerations and
	  textual conventions. Both are written to *idx files
	  and the mib format and mib scan commands can convert
	  enumeration to integers and back.

Sun Nov 13 17:40:13 1994  Juergen Schoenwaelder  <schoenw@data>

	* Tuned some lookup functions in query.c.

	* Implemented an agent session command to create objects
	  for an midlevel agent. It currently implements the
	  system group.

Fri Nov 11 10:26:58 1994  Juergen Schoenwaelder  <schoenw@data>

	* Cleanup the configuration code in tcl_snmp.c and added
	  Eriks hex_to_bin() and bin_to_hex(). Thanks.

	* Extended the session structure to keep an agent socket
	  and changed SNMP_AgentRecv() to save the address from
	  the sending entity in the session structure.

	* V1 and V2 now use the same session structure.

Thu Nov 10 18:44:26 1994  Juergen Schoenwaelder  <schoenw@data>

	* Directly encode packets without setting up message
	  structures first.

Wed Nov  9 15:27:24 1994  Juergen Schoenwaelder  <schoenw@data>

	* Removed the -nomib option as it really does not make
	  any sense to me.

Tue Nov  8 18:46:34 1994  Juergen Schoenwaelder  <schoenw@data>

	* Cleanup some code in tcl_mib.c and added hooks for
	  the 'mib format' and 'mib scan' commands.

Sat Nov  5 14:19:27 1994  Juergen Schoenwaelder  <schoenw@data>

	* Removed some mallocs by removing pointers to structures.
	  The structures are now an element of the enclosing 
	  structure.

Fri Nov  4 16:41:00 1994  Juergen Schoenwaelder  <schoenw@sol>

	* Moved the request handling function to request.c and
	  removed unneeded calls to SplitList().

Wed Nov  2 09:42:11 1994  Juergen Schoenwaelder  <schoenw@data>

	* Implemented the snmp trapsink command which allows to
	  install a trap handler, which gets called whenever
	  a trap message is received.

	* Renamed snmp create session to snmp session. This is
	  hopefully the final name... The old snmp session
	  command is now names snmp info.
	  *** POTENTIAL INCOMPATIBILITY ***

	* Moved the handling of outstanding request lists to the
	  misc module. I also rewrote stuff to create an entry in
	  a requests list only if it is really an async request.

	* Rewrote the varbind decode/encode functions to directly
	  convert from/to a TCL DString.

Mon Oct 31 00:46:03 1994  Juergen Schoenwaelder  <schoenw@data>

	* Changed the request structure to contain the encoded
	  packet instead of the message structure. This make
	  retransmits faster.

Sun Oct 30 23:54:06 1994  Juergen Schoenwaelder  <schoenw@data>

	* Rewrote some of the stuff in event.c and udp.c to 
	  integrate trap message handling and to clean up the
	  interface between these modules.

Fri Oct 28 19:46:31 1994  Juergen Schoenwaelder  <schoenw@data>

	* Fixed a bug in the snmp walk code - one of those nasty
	  things that clobber the interp handle. I now use eval
	  to do things, even if it is slower it is much safer.

Sun Oct 23 18:41:49 1994  Juergen Schoenwaelder  <schoenw@data>

	* Implemented warp 4 in the walk command.

	* Removed the Tcl_Interp* argument from the encoding/
	  decoding functions.

	* Moved the syntax_table to asn1.c and merged the ASN1
	  header files into a single one.

Sat Oct 22 13:15:34 1994  Juergen Schoenwaelder  <schoenw@data>

	* Fixed the handling of the callback tcl strings. We now
	  avoid some strdup()s.

Fri Oct 21 22:03:27 1994  Juergen Schoenwaelder  <schoenw@data>

	* Added a synchronous walk subcommand to a session handle.
	  This is just a loop around getbulk and currently uses
	  mas-repetitions == 1, which should be optimized.

	* Getbulk requests on SNMPv1 handles are now turned into 
	  getnext requests.

Sun Oct 16 17:16:07 1994  Juergen Schoenwaelder  <schoenw@data>

	* Renamed snmp create to snmp create session to allow more
	  objects to be created (like trap handler or MIB instances).
	  *** POTENTIAL INCOMPATIBILITY ***

	* Fixed a minor bug that affected async requests that timed out.
	  Now we invoke the error callback if we did not get an answer
	  after all retries.

Sat Oct 15 21:25:36 1994  Juergen Schoenwaelder  <schoenw@data>

	* Added a response subcommand to the session commands.
	  This is needed is some form to support the InformRequest
	  messages send by cooperating managers.

Mon Oct 10 17:42:35 1994  Juergen Schoenwaelder  <schoenw@data>

	* The mib parser now saves the access status. You can query
	  it using the `mib access' command.

Fri Sep 30 11:58:54 1994  Juergen Schoenwaelder  <schoenw@data>

	* The mib parser now accepts trap type macros as defined
	  in RFC 1215.

	* Added the straps trap forwarding server.

	* Added a tilde substitution to the "mib load" command.

Fri Sep 23 18:01:05 1994  Juergen Schoenwaelder  <schoenw@data>

	* Fixed the configure command for SNMPv2 sessions.

Tue Sep 13 00:26:23 1994  Juergen Schoenwaelder  <schoenw@sol>

	* The ASN.1 module now accepts zero length integers.
	  I don't know if this is legal, but cisco's are sending
	  them anyway.

	* Made all MIB lookups fuzzy. One has to use the -exact
	  switch to get the previous behaviour.

Mon Sep 12 19:48:03 1994  Juergen Schoenwaelder  <schoenw@sol>

	* All snmp operations return always the object identifier
	  in the varbind list. This makes output less readable,
	  but makes programming much easier since you always know
	  what you get. And it is easy to convert the oid back to
	  a name using the mib command.

Fri Sep  9 22:09:04 1994  Juergen Schoenwaelder  <schoenw@sol>

	* Removed the function handle_exception. This is now
	  done using the callback escapes. In sync mode, we
	  return the error name, the error index and the var
	  bind list.

	* Replaced all occurrences of long with int. This makes
	  this code running on a 64 bit DEC ALPHA machine.

Fri Sep  9 13:45:03 1994  Juergen Schoenwaelder  (schoenw@thor)

	* Rewrote execute_callback (fixes memory leak and speeds
	  it up) and removed error_callback. Use execute_callback
	  instead.

Fri Sep  9 11:31:22 1994  Juergen Schoenwaelder  <schoenw@sol>

	* Removed the obscure nullinstance and instance feature.
	  Its easy to do it in TCL, so we don't clobber our SNMP
	  code with it.

Wed Sep  7 01:29:35 1994  Juergen Schoenwaelder  (schoenw@data)

	* Removed the scanf call from mib_parse.c to speed up loading
	  times.

	* Lots of minor memory leaks fixed. We also do not stop
	  anymore just because we received an unexpected packet.

	* Automatically switch between synchronous and async.
	  mode.

Tue Sep  6 14:59:09 1994  Juergen Schoenwaelder  (schoenw@logic)

	* Changed the mib query module to return names or oids
	  depending on the argument type. Made some smaller
	  rewrites to make things slightly faster.

	* Removed the memcpy call in ASN.1 which works not reliable
	  on all systems if dealing with overlapping areas.

	* Fixed the handling of ANSI prototypes using the tcl
	  _ANIS_ARGS_ macro.

	* Added a -port option to set the destination port when
	  using SNMPv1.

Mon Sep  5 23:59:33 1994  Juergen Schoenwaelder  (schoenw at sulu)

	* Added some code to mib_parse.c to allow incremental
	  loading of MIB descriptions.

Sat Sep  3 18:01:22 1994  Juergen Schoenwaelder  (schoenw@logic)

	* Removed 'snmp clone'. I prefer a better output format
	  of '<session> configure' so that I can simply write:
	  'eval snmp create [join [$s configure]]'

	* Replaced all bzero() and bcopy() functions with the ANSI
	  memset() and memcpy() equivalents.

Fri Sep  2 22:01:35 1994  Juergen Schoenwaelder  (schoenw at sulu)

	* Changed Mib_Init() to accept a file name. A pointer to
	  the file name is stored in struct tree and later reused
	  to read the description of an object.


