2005-03-09 Hasso Tepper <hasso at quagga.net>

	* vtysh_config.c: Move password commands to the AAA_NODE. It
	  quarantees that they will appear after SERVICE_NODE to make sure
	  that encrypted passwords will work ("service password-encryption"
	  command).

2005-01-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* vtysh.h: Remove obsolete VTYSH_INDEX_* defines.  Fix many prototypes
	  for functions with no arguments (must specify argument list as void).
	* vtysh.c: Enhance vtysh_client array to include the daemon's name
	  and bitmask and socket path (in addition to the fd).  This allows
	  us to use loop constructs for various operations that need to be
	  applied to all client daemons, and it facilitates better error
	  messages.  Also fix some prototypes with void argument lists.
	  (vclient_close) Issue a warning message indicating which daemon's
	  socket is being closed.
	  (vtysh_execute_func,vtysh_config_from_file) Use a for loop to
	  call vtysh_client_execute.
	  (vtysh_write_terminal,write_config_integrated) Use a for loop to
	  call vtysh_client_config.
	  (vtysh_write_memory) Use a for loop to call vtysh_client_execute.
	  (vtysh_show_daemons) Use a for loop.
	  (vtysh_connect) The struct vtysh_client is now statically initialized,
	  so do not initialize it here.
	  (vtysh_connect_all) Use a for loop to call vtysh_connect.  Set
	  ripd_client pointer for use in vtysh_exit_ripd_only.

2005-01-23 Hasso Tepper <hasso at quagga.net>

	* vtysh.conf.sample: Fix typo "integrated-vtysh-conf" ->
	  "integrated-vtysh-config".
	* vtysh/vtysh.c: Implement walkup in node tree for vtysh as it
	  already works in vty.

2005-01-10 Hasso Tepper <hasso at quagga.net>

	* vtysh.c: Reflect changes in lib. cmd_execute_command() should know
	  now that it's called from vtysh and must not attempt to walk up in
	  the node tree.

2004-12-22 Hasso Tepper <hasso at quagga.net>

	* vtysh_config.c: No delimiter between "ip forwarding" and "ipv6
	  forwarding". Show common router-id before router nodes. Fix router
	  bgp node parsing. Move debug commands into debug node and no
	  delimiter between lines there.

2004-12-09 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* vtysh.c: (vtysh_connect) No reason to call geteuid and getegid,
	  the results were never used.

2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* vtysh.c: Make several functions static instead of global.
	  Added several commands to support destination-specific logging levels.
	  (vtysh_completion) This function is unused, so comment it out.

2004-11-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* vtysh.c: (vtysh_client_execute) Fix flaws in detecting trailing
	  '\0' chars and command return code.

2004-10-28 Hasso Tepper <hasso at quagga.net>

	* vtysh.c: "show running-daemons" broke users habits who are using
	  "sho run" to view running configuration. Changed it to "show
	  daemons". 

2004-10-20 Hasso Tepper <hasso at quagga.net>

	* vtysh.c: Don't popen pager if command is "exit". Fixes "vtysh screws
	  up my terminal if I exit" issue.

2004-10-13 Hasso Tepper <hasso at quagga.net>

	* extract.pl.in: All daemons can use both IPv6 and IPv4 access lists
	  to limit access to vty.

2004-10-11 Paul Jakma <paul@dishone.st>

	* vtysh.c: (vtysh_client_execute) fix the sync fix. The 4th and
	  final sync byte is not ASCII NULL, it's actually a status integer,
	  and only ASCII NULL if CMD_SUCCESS is returned by daemon.
	  Fix pointed out by Hasso.
 
2004-10-11 Hasso Tepper <hasso at quagga.net>

	* vtysh.c, vtysh_user.c: Make more strings const.
	
2004-10-07 Hasso Tepper <hasso at quagga.net>

	* vtysh.c, vtysh.h, vtysh_config.c, vtysh_main.c: Fix compiler
	  warnings: make strings const, signed -> unsigned, remove unused
	  variables.
	* vtysh_config.c: Fix crash introduced with previous patch.

2004-10-03 Hasso Tepper <hasso at quagga.net>

	* vtsyh_main.c: Enter into enable node by default. Disable node doesn't
	  make sense if we don't have any authentication for enable.
	* vtysh.c: Implement "show running-daemons" command.
	* vtysh.c: Use either integrated conf or daemon conf not both. Move
	  configuration command into "service" level.
	* vtysh.c: Remove "write ..." commands from other nodes than enable.
	  We have "do ..." extension for that.
	* vtysh_config.c, vtysh.c: Integrate vtysh configuration into
	  integrated one.
	* vtysh_config.c: Use FORWARD_NODE and SERVICE_NODE vty nodes.
	* vtysh_config.c: Make "service" lines unique in integrated config.
	* vtysh.c: Make "service password-encryption" command work in vtysh.
	* vtysh_config.c, vtysh.c, Makefile.am, extract.pl.in: Introduce line
	  vty commands in vtysh. Parse lib/vty.c for commands, but ignore
	  commands that don't make sense in vtysh. Closes Bugzilla #104.
	* vtysh.c: Make "[enable] password" commands work in vtysh. Behavior
	  is similar to "log" commands - vtysh just passes commands to all
	  daemons.
	* vtysh_main.c, vtysh_config.c, vtysh.h: Remove any code dealing with
	  configuration files specified from command line. We read/write files
	  from/to system location only (ie. remove -f again).
	* Makefile.am: Parse zebra/router-id.c.

2004-09-26 Hasso Tepper <hasso at quagga.net>

	* vtysh.c: Fix compiler warning.

2004-09-17 Paul Jakma <paul@dishone.st>

	* vtysh.c: (vtysh_client_execute) trailling NULLs can be arbitrarily
          split across reads, dont get confused by this and block forever.

2004-09-13 Paul Jakma <paul@dishone.st>

	* Makefile.am: extract.pl isnt in srcdir, it's always in the builddir.
	  remove zebra/irdp.c from list - dead.
	* extract.pl.in: match on end of filenames, filename could contain
          various preamble due to out of tree builds. Substitute in the
	  autoconf srcdir/builddir paths for includes to cpp.

2004-08-28 Hasso Tepper <hasso at quagga.net>

	* vtysh_main.c: Rename signal handling functions not to conflict
	  with functions from lib/sigevent.c.

2004-08-27 Hasso Tepper <hasso at quagga.net>

	* vtysh.c: Make "terminal length <0-512>" command work in vtysh.

2004-08-27 Hasso Tepper <hasso at quagga.net>

	* vtysh.c: Enable using ssh from ENABLE_NODE.
	* vtysh_config.c: Make enable password uniq lines appear only once in
	  configuration.
	* vtysh_main.c, vtysh_config.c, vtysh.h: Remove useless code which
	  searched configuration files from current directory. Add -f to
	  specify conf from command line.

2004-08-26 Hasso Tepper <hasso at quagga.net>

	* *.c: Cosmetical changes - strip long lines, fix multiline comments
	  style, indentation fixes, remove useless comments.
	* vtysh.h: define VTYSH_INTERFACE.
	* vtysh.c: Use VTYSH_INTERFACE where possible. Added some related TODO
	  items.
	* vtysh.c: Move things around a little to reduce spaghetti mess.
	* Makefile.am: Parse only needed files from zebra daemon while
	  building vtysh_cmd.c file to supress warnings.

2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* extract.pl.in: Rename from extract.pl, with @PERL@.

	* Makefile.am: Add vtysh_cmds.c to CLEANFILES.

2004-06-20 Hasso Tepper <hasso@estpak.ee>

	* extract.pl: Zebra daemon has access lists as well.

2004-05-10 Hasso Tepper <hasso@estpak.ee>

	* vtysh.c: Workaround for most hated vtysh bug - Bugzilla #58.

2004-04-06 Hasso Tepper <hasso@estpak.ee>

	* vtysh_main.c: Don't save command to history if last command already
	  there is same.
	* vtysh_main.c: Replace -e with -c.
	* vtysh_main.c: Fix help.

2004-03-04 Hasso Tepper <hasso@estpak.ee>

	* vtysh.c: Remove using PAGER.

2004-01-15 Paul Jakma <paul@dishone.st>

	* vtysh_config.c: Fix up strlen to use correct string.
	
2003-12-23 Hasso Tepper <hasso@estpak.ee>
  
	* Makefile.am extract.pl vtysh.c vtysh.h vtysh_config.c:
	  isisd integration to vtysh.

2003-05-01 Sergiy Vyshnevetskiy <serg@vostok.net>

	vtysh.c: Program shouldn't terminate on pager execution failure
	vtysh_user.c: configure support for openpam (freebsd5.0)

2003-04-19 Hasso Tepper <hasso@estpak.ee>

	* extract.pl vtysh.c vtysh.h: sync daemon's route-map commands to
	have same syntax

2002-09-30 Paul Jakma <paulzebra@rs250.org>
	
	* vtysh.c: add 'write-config (integrated|daemon)' option
	to specifiy whether write config commands should write
	integrated Zebra.conf file and/or per daemon files.
	Defaults to per daemon, unless this is turned off.

2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.93 released.

2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92a released.

2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92 released.

2001-02-20  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c (vtysh_client_config): Do not set bufsz to 120.
	Suggested by: Matthew Grant <grantma@anathoth.gen.nz>.

2001-02-15  Hideto Yamakawa <yamakawa@dml.com>

	* vtysh.c (vtysh_client_execute): Call fflush after fprintf.

	* vtysh_config.c (vtysh_config_dump): Use VTYSH_PAGER if defined.

2001-02-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c (vtysh_execute_func): Add fflush before pclose.

2001-02-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c: VTY shell pager name.  When environment variable
	VTYSH_PAGER is defined, use it as VTY shell pager.

2001-02-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c (vtysh_execute_func): Add pager argument for test of
	pager invocation.

2001-02-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* extract.pl: Add -DHAVE_CONFIG_H option to cpp.

2001-02-08  Matthew Grant <grantma@anathoth.gen.nz>

	* vtysh.c (vtysh_client_config): Use sysconf to determine output
	buffer size.
	(vtysh_write_memory): Set umask 0077.
	(vtysh_connect): Check permission to the socket.

2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.91 is released.

2001-01-31  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* vtysh.c (new_completion): Fix problem of appending space when
	completion is executed.

2001-01-23  Akihiro Mizutani <mizutani@dml.com>

	* vtysh.c (vtysh_write_terminal): "write terminal" to all node.

2001-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c (vtysh_execute): Fix unconditional lock by other VTY.
	Suggested by Hideto Yamakawa <yamakawa@dml.com>.

2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.90 is released.

2001-01-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.h (ZEBRA_PATH): Fix new vtysh path.  Reported by "Matt
	Ranney" <mjr@ranney.com>

2000-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c (DEFUNSH): Add "address-family vpnv4" DEFUNSH.

2000-10-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c (execute_command): Add two arguemnt support for
	executing child process.
	(vtysh_telnet_port): New command "telnet WORD PORT" is added.

2000-10-23  Akihiro Mizutani <mizutani@dml.com>

	* vtysh.c (vtysh_write_memory): Display [OK] when configuration is
	saved without problem.

2000-10-20  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c (vtysh_config_from_file): "key chain" command with -b
	flag problem is fixed.

2000-10-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh_user.c: Change to use linklist.c.

2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (noinst_HEADERS): Add vtysh_user.h.

	* zebra-0.89 is released.

2000-09-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh_main.c: Declare thread master.

2000-08-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh_main.c (main): Add missing --help procudure.  Reported by
	Patrick Rother <krd@roka.net>.

2000-08-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c (DEFUNSH): "interface IFNAME" works.

2000-08-20  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh_user.c: Change name from vtysh_pam.c.

	* vtysh.conf.sample: New file for vtysh configuration.

2000-08-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh_pam.c (vtysh_pam): New file for PAM.

2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.88 is released.

2000-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (vtysh_LDADD): Remove -lreadline and -lncurses.

	* vtysh.c (vtysh_connect): Use AF_UNIX instead of AF_LOCAL for
	backward compatibility.

2000-07-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* extract.pl: Change regexp to match DEFUN and ALIAS at the same
	time.

2000-07-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c (signal_init): Ignore SIGPIPE signal.

2000-07-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* extract.pl: ALIAS command can be extracted by extract.pl.

2000-07-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* extract.pl: Fix scalar and array semantics.

	* vtysh.c (vtysh_telnet): Add "telnet" client command.

2000-07-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c (main): Add -e flag for passing command from arugment.
	(vtysh_ping): Add "ping" command for test of command execution.
	(init_node): Add "traceroute" command.
	(vtysh_start_shell): Add "start-shell", "start-shell bash",
	"start-shell zsh".
	(sigint): Add check for execute_flag for avoid duplicate prompt.

2000-06-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vtysh.c: New file for vty shell.
	* vtysh.h: Likewise.
	* extract.pl: Likewise.
	* vtysh_cmd.c: Generate by extract.pl.
