diff --git a/vtysh/ChangeLog b/vtysh/ChangeLog
index 1903c7c..aab737b 100644
--- a/vtysh/ChangeLog
+++ b/vtysh/ChangeLog
@@ -1,5 +1,9 @@
 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.
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index 503edb3..28ad39b 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -212,9 +212,9 @@
 void
 vtysh_pager_init ()
 {
-  vtysh_pager_name = getenv ("VTYSH_PAGER");
+  vtysh_pager_name = strdup (getenv ("VTYSH_PAGER"));
   if (! vtysh_pager_name)
-    vtysh_pager_name = "more";
+    vtysh_pager_name = strdup ("more");
 }
 
 /* Command execution over the vty interface. */
@@ -1503,6 +1503,56 @@
        SHOW_STR
        "Current operating configuration\n")
 
+DEFUN (vtysh_terminal_length,
+       vtysh_terminal_length_cmd,
+       "terminal length <0-512>",
+       "Set terminal line parameters\n"
+       "Set number of lines on a screen\n"
+       "Number of lines on screen (0 for no pausing)\n")
+{
+  int lines;
+  char *endptr = NULL;
+  char default_pager[10];
+
+  lines = strtol (argv[0], &endptr, 10);
+  if (lines < 0 || lines > 512 || *endptr != '\0')
+    {
+      vty_out (vty, "length is malformed%s", VTY_NEWLINE);
+      return CMD_WARNING;
+    }
+
+  if (vtysh_pager_name)
+    {
+      free (vtysh_pager_name);
+      vtysh_pager_name = NULL;
+    }
+
+  if (lines != 0)
+    {
+      snprintf(default_pager, 10, "more -%i", lines);
+      vtysh_pager_name = strdup (default_pager);
+    }
+
+  return CMD_SUCCESS;
+}
+
+DEFUN (vtysh_terminal_no_length,
+       vtysh_terminal_no_length_cmd,
+       "terminal no length",
+       "Set terminal line parameters\n"
+       NO_STR
+       "Set number of lines on a screen\n")
+{
+  if (vtysh_pager_name)
+    {
+      free (vtysh_pager_name);
+      vtysh_pager_name = NULL;
+    }
+
+  vtysh_pager_init();
+  return CMD_SUCCESS;
+}
+
 /* Execute command in child process. */
 int
 execute_command (char *command, int argc, char *arg1, char *arg2)
@@ -1978,6 +2028,11 @@
   install_element (KEYCHAIN_NODE, &vtysh_write_memory_cmd);
   install_element (KEYCHAIN_KEY_NODE, &vtysh_write_memory_cmd);
 
+  install_element (VIEW_NODE, &vtysh_terminal_length_cmd);
+  install_element (ENABLE_NODE, &vtysh_terminal_length_cmd);
+  install_element (VIEW_NODE, &vtysh_terminal_no_length_cmd);
+  install_element (ENABLE_NODE, &vtysh_terminal_no_length_cmd);
+
   install_element (VIEW_NODE, &vtysh_ping_cmd);
   install_element (VIEW_NODE, &vtysh_ping_ip_cmd);
   install_element (VIEW_NODE, &vtysh_traceroute_cmd);
