diff --git a/doc/ChangeLog b/doc/ChangeLog
index b9326c0..63b736c 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2004-08-27 Hasso Tepper <hasso at quagga.net>
+
+	* Update vtysh man page to reflect changes in shell.
+
 2004-08-10 Hasso Tepper <hasso at quagga.net>
 
 	* Updated man pages.
diff --git a/doc/vtysh.1 b/doc/vtysh.1
index f6ad62b..90aaff1 100644
--- a/doc/vtysh.1
+++ b/doc/vtysh.1
@@ -1,14 +1,22 @@
-.TH VTYSH 1 "10 August 2004" "Quagga VTY shell" "Version 0.96.5"
+.TH VTYSH 1 "27 August 2004" "Quagga VTY shell" "Version 0.96.5"
 .SH NAME
 vtysh \- a integrated shell for Quagga routing software
 .SH SYNOPSIS
 .B vtysh
 [
+.B \-f
+.I config-file
+]
+[
 .B \-b
 ]
 .br
 .B vtysh
 [
+.B \-f
+.I config-file
+]
+[
 .B \-c
 .I command
 ]
@@ -34,8 +42,11 @@
 It's useful for gathering info from Quagga routing software from shell scripts
 etc.
 .IP "\fB\-e, \-\-execute \fIcommand\fP"
-Alias for -c. It's only for compatibility with Zebra routing software and older
-Quagga versions and this might be removed in future.
+Alias for -c. It's here only for compatibility with Zebra routing software and
+older Quagga versions. This will be removed in future.
+.IP "\fB\-f, \-\-config-file \fIconfig-file\fP"
+Specifies the config file to use for startup. If not specified this option will
+likely default to \fB\fI/usr/local/etc/vtysh.conf\fR.
 .IP "\fB\-h, \-\-help\fP"
 Display a usage message on standard output and exit.
 .SH ENVIRONMENT VARIABLES
diff --git a/vtysh/ChangeLog b/vtysh/ChangeLog
index e73317d..1903c7c 100644
--- a/vtysh/ChangeLog
+++ b/vtysh/ChangeLog
@@ -1,4 +1,13 @@
-2004-08-26 Hasso Tepper <hasso@estpak.ee>
+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.
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index e8310d7..503edb3 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -1999,6 +1999,7 @@
 #endif
   install_element (ENABLE_NODE, &vtysh_telnet_cmd);
   install_element (ENABLE_NODE, &vtysh_telnet_port_cmd);
+  install_element (ENABLE_NODE, &vtysh_ssh_cmd);
   install_element (ENABLE_NODE, &vtysh_start_shell_cmd);
   install_element (ENABLE_NODE, &vtysh_start_bash_cmd);
   install_element (ENABLE_NODE, &vtysh_start_zsh_cmd);
diff --git a/vtysh/vtysh.h b/vtysh/vtysh.h
index abfb3ec..895c8c0 100644
--- a/vtysh/vtysh.h
+++ b/vtysh/vtysh.h
@@ -60,7 +60,7 @@
 
 int vtysh_config_from_file (struct vty *, FILE *);
 
-void vtysh_read_config (char *, char *, char *);
+void vtysh_read_config (char *, char *);
 
 void vtysh_config_parse (char *);
 
diff --git a/vtysh/vtysh_config.c b/vtysh/vtysh_config.c
index f518653..86f5731 100644
--- a/vtysh/vtysh_config.c
+++ b/vtysh/vtysh_config.c
@@ -228,7 +228,9 @@
 	{
 	  if (strncmp (line, "log", strlen ("log")) == 0
 	      || strncmp (line, "hostname", strlen ("hostname")) == 0
-	      || strncmp (line, "password", strlen ("hostname")) == 0)
+	      || strncmp (line, "password", strlen ("password")) == 0
+	      || strncmp (line, "enable password",
+		          strlen ("enable password")) == 0)
 	    config_add_line_uniq (config_top, line);
 	  else
 	    config_add_line (config_top, line);
@@ -365,7 +367,6 @@
 /* Read up configuration file from file_name. */
 void
 vtysh_read_config (char *config_file,
-		   char *config_current_dir,
 		   char *config_default_dir)
 {
   char *cwd;
@@ -396,32 +397,19 @@
     }
   else
     {
-      /* Relative path configuration file open. */
-      if (config_current_dir)
-	confp = fopen (config_current_dir, "r");
-
-      /* If there is no relative path exists, open system default file. */
+      /* No configuration specified from command line. Open system
+       * default file. */
+      confp = fopen (config_default_dir, "r");
       if (confp == NULL)
 	{
-	  confp = fopen (config_default_dir, "r");
-	  if (confp == NULL)
-	    {
-	      fprintf (stderr, "can't open configuration file [%s]\n",
-		       config_default_dir);
-	      exit (1);
-	    }      
-	  else
-	    fullpath = config_default_dir;
-	}
+	  fprintf (stderr, "can't open configuration file [%s]\n",
+		   config_default_dir);
+	  exit (1);
+	}      
       else
-	{
-	  /* Rleative path configuration file. */
-	  cwd = getcwd (NULL, MAXPATHLEN);
-	  fullpath = XMALLOC (MTYPE_TMP, 
-			      strlen (cwd) + strlen (config_current_dir) + 2);
-	  sprintf (fullpath, "%s/%s", cwd, config_current_dir);
-	}  
-    }  
+	fullpath = config_default_dir;
+    }
+
   vtysh_read_file (confp);
 
   fclose (confp);
diff --git a/vtysh/vtysh_main.c b/vtysh/vtysh_main.c
index 69a5358..e862efd 100644
--- a/vtysh/vtysh_main.c
+++ b/vtysh/vtysh_main.c
@@ -39,12 +39,8 @@
 /* VTY shell program name. */
 char *progname;
 
-/* Configuration file name.  Usually this is configurable, but vtysh
- * has static configuration file only. */
+/* Configuration file name and directory. */
 char *config_file = NULL;
-
-/* Configuration file and directory. */
-char *config_current = NULL;
 char config_default[] = SYSCONFDIR VTYSH_DEFAULT_CONFIG;
 
 /* Integrated configuration file. */
@@ -146,6 +142,7 @@
 	    "Integrated shell for Quagga routing software suite. \n\n"\
 	    "-b, --boot               Execute boot startup configuration\n" \
 	    "-c, --command            Execute argument as command\n "\
+	    "-f, --config_file        Set configuration file name\n"\
 	    "-h, --help               Display this help and exit\n\n" \
 	    "Report bugs to %s\n", progname, ZEBRA_BUG_ADDRESS);
 
@@ -160,6 +157,7 @@
   { "eval",                 required_argument,       NULL, 'e'},
   { "command",              required_argument,       NULL, 'c'},
   { "help",                 no_argument,             NULL, 'h'},
+  { "config_file",          required_argument,       NULL, 'f'},
   { 0 }
 };
 
@@ -209,7 +207,7 @@
   /* Option handling. */
   while (1) 
     {
-      opt = getopt_long (argc, argv, "be:c:h", longopts, 0);
+      opt = getopt_long (argc, argv, "be:c:hf:", longopts, 0);
     
       if (opt == EOF)
 	break;
@@ -229,8 +227,12 @@
 	case 'h':
 	  usage (0);
 	  break;
+	/* XXX It isn't used in any way. */
 	case 'i':
 	  integrated_file = strdup (optarg);
+	case 'f':
+	  config_file = optarg;
+	  break;
 	default:
 	  usage (1);
 	  break;
@@ -256,7 +258,7 @@
   vtysh_connect_all ();
 
   /* Read vtysh configuration file. */
-  vtysh_read_config (config_file, config_current, config_default);
+  vtysh_read_config (config_file, config_default);
 
   /* If eval mode. */
   if (eval_flag)
@@ -268,7 +270,7 @@
   /* Boot startup configuration file. */
   if (boot_flag)
     {
-      vtysh_read_config (integrate_file, integrate_current, integrate_default);
+      vtysh_read_config (integrate_file, integrate_default);
       exit (0);
     }
 
