summaryrefslogtreecommitdiff
path: root/vtysh
diff options
context:
space:
mode:
Diffstat (limited to 'vtysh')
-rw-r--r--vtysh/ChangeLog6
-rw-r--r--vtysh/vtysh.c175
2 files changed, 153 insertions, 28 deletions
diff --git a/vtysh/ChangeLog b/vtysh/ChangeLog
index ea611179..5e32f015 100644
--- a/vtysh/ChangeLog
+++ b/vtysh/ChangeLog
@@ -1,3 +1,9 @@
+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
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index 08bd1275..0a043cf9 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -52,7 +52,7 @@ int vtysh_writeconfig_integrated = 0;
extern char config_default[];
-void
+static void
vclient_close (struct vtysh_client *vclient)
{
if (vclient->fd > 0)
@@ -63,7 +63,7 @@ vclient_close (struct vtysh_client *vclient)
/* Following filled with debug code to trace a problematic condition
* under load - it SHOULD handle it. */
#define ERR_WHERE_STRING "vtysh(): vtysh_client_config(): "
-int
+static int
vtysh_client_config (struct vtysh_client *vclient, char *line)
{
int ret;
@@ -161,7 +161,7 @@ vtysh_client_config (struct vtysh_client *vclient, char *line)
return ret;
}
-int
+static int
vtysh_client_execute (struct vtysh_client *vclient, const char *line, FILE *fp)
{
int ret;
@@ -247,7 +247,7 @@ vtysh_pager_init ()
}
/* Command execution over the vty interface. */
-void
+static void
vtysh_execute_func (const char *line, int pager)
{
int ret, cmd_stat;
@@ -604,7 +604,7 @@ vtysh_rl_describe ()
* correct places only. */
int complete_status;
-char *
+static char *
command_generator (const char *text, int state)
{
vector vline;
@@ -635,7 +635,7 @@ command_generator (const char *text, int state)
return NULL;
}
-char **
+static char **
new_completion (char *text, int start, int end)
{
char **matches;
@@ -652,7 +652,9 @@ new_completion (char *text, int start, int end)
return matches;
}
-char **
+#if 0
+/* This function is not actually being used. */
+static char **
vtysh_completion (char *text, int start, int end)
{
int ret;
@@ -676,6 +678,7 @@ vtysh_completion (char *text, int start, int end)
return (char **) matched;
}
+#endif
/* Vty node structures. */
struct cmd_node bgp_node =
@@ -1015,7 +1018,7 @@ DEFUNSH (VTYSH_ALL,
return CMD_SUCCESS;
}
-int
+static int
vtysh_exit (struct vty *vty)
{
switch (vty->node)
@@ -1265,7 +1268,18 @@ DEFUNSH (VTYSH_ALL,
vtysh_log_stdout_cmd,
"log stdout",
"Logging control\n"
- "Logging goes to stdout\n")
+ "Set stdout logging level\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFUNSH (VTYSH_ALL,
+ vtysh_log_stdout_level,
+ vtysh_log_stdout_level_cmd,
+ "log stdout "LOG_LEVELS,
+ "Logging control\n"
+ "Set stdout logging level\n"
+ LOG_LEVEL_DESC)
{
return CMD_SUCCESS;
}
@@ -1273,10 +1287,11 @@ DEFUNSH (VTYSH_ALL,
DEFUNSH (VTYSH_ALL,
no_vtysh_log_stdout,
no_vtysh_log_stdout_cmd,
- "no log stdout",
+ "no log stdout [LEVEL]",
NO_STR
"Logging control\n"
- "Logging goes to stdout\n")
+ "Cancel logging to stdout\n"
+ "Logging level\n")
{
return CMD_SUCCESS;
}
@@ -1293,6 +1308,18 @@ DEFUNSH (VTYSH_ALL,
}
DEFUNSH (VTYSH_ALL,
+ vtysh_log_file_level,
+ vtysh_log_file_level_cmd,
+ "log file FILENAME "LOG_LEVELS,
+ "Logging control\n"
+ "Logging to file\n"
+ "Logging filename\n"
+ LOG_LEVEL_DESC)
+{
+ return CMD_SUCCESS;
+}
+
+DEFUNSH (VTYSH_ALL,
no_vtysh_log_file,
no_vtysh_log_file_cmd,
"no log file [FILENAME]",
@@ -1304,12 +1331,66 @@ DEFUNSH (VTYSH_ALL,
return CMD_SUCCESS;
}
+ALIAS_SH (VTYSH_ALL,
+ no_vtysh_log_file,
+ no_vtysh_log_file_level_cmd,
+ "no log file FILENAME LEVEL",
+ NO_STR
+ "Logging control\n"
+ "Cancel logging to file\n"
+ "Logging file name\n"
+ "Logging level\n")
+
+DEFUNSH (VTYSH_ALL,
+ vtysh_log_monitor,
+ vtysh_log_monitor_cmd,
+ "log monitor",
+ "Logging control\n"
+ "Set terminal line (monitor) logging level\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFUNSH (VTYSH_ALL,
+ vtysh_log_monitor_level,
+ vtysh_log_monitor_level_cmd,
+ "log monitor "LOG_LEVELS,
+ "Logging control\n"
+ "Set terminal line (monitor) logging level\n"
+ LOG_LEVEL_DESC)
+{
+ return CMD_SUCCESS;
+}
+
+DEFUNSH (VTYSH_ALL,
+ no_vtysh_log_monitor,
+ no_vtysh_log_monitor_cmd,
+ "no log monitor [LEVEL]",
+ NO_STR
+ "Logging control\n"
+ "Disable terminal line (monitor) logging\n"
+ "Logging level\n")
+{
+ return CMD_SUCCESS;
+}
+
DEFUNSH (VTYSH_ALL,
vtysh_log_syslog,
vtysh_log_syslog_cmd,
"log syslog",
"Logging control\n"
- "Logging goes to syslog\n")
+ "Set syslog logging level\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFUNSH (VTYSH_ALL,
+ vtysh_log_syslog_level,
+ vtysh_log_syslog_level_cmd,
+ "log syslog "LOG_LEVELS,
+ "Logging control\n"
+ "Set syslog logging level\n"
+ LOG_LEVEL_DESC)
{
return CMD_SUCCESS;
}
@@ -1317,32 +1398,60 @@ DEFUNSH (VTYSH_ALL,
DEFUNSH (VTYSH_ALL,
no_vtysh_log_syslog,
no_vtysh_log_syslog_cmd,
- "no log syslog",
+ "no log syslog [LEVEL]",
NO_STR
"Logging control\n"
- "Cancel logging to syslog\n")
+ "Cancel logging to syslog\n"
+ "Logging level\n")
{
return CMD_SUCCESS;
}
DEFUNSH (VTYSH_ALL,
- vtysh_log_trap,
- vtysh_log_trap_cmd,
- "log trap (emergencies|alerts|critical|errors|warnings|\
- notifications|informational|debugging)",
+ vtysh_log_facility,
+ vtysh_log_facility_cmd,
+ "log facility "LOG_FACILITIES,
"Logging control\n"
- "Limit logging to specifed level\n")
+ "Facility parameter for syslog messages\n"
+ LOG_FACILITY_DESC)
+
{
return CMD_SUCCESS;
}
DEFUNSH (VTYSH_ALL,
- no_vtysh_log_trap,
- no_vtysh_log_trap_cmd,
- "no log trap",
+ no_vtysh_log_facility,
+ no_vtysh_log_facility_cmd,
+ "no log facility [FACILITY]",
NO_STR
"Logging control\n"
- "Permit all logging information\n")
+ "Reset syslog facility to default (daemon)\n"
+ "Syslog facility\n")
+
+{
+ return CMD_SUCCESS;
+}
+
+DEFUNSH_DEPRECATED (VTYSH_ALL,
+ vtysh_log_trap,
+ vtysh_log_trap_cmd,
+ "log trap "LOG_LEVELS,
+ "Logging control\n"
+ "(Deprecated) Set logging level and default for all destinations\n"
+ LOG_LEVEL_DESC)
+
+{
+ return CMD_SUCCESS;
+}
+
+DEFUNSH_DEPRECATED (VTYSH_ALL,
+ no_vtysh_log_trap,
+ no_vtysh_log_trap_cmd,
+ "no log trap [LEVEL]",
+ NO_STR
+ "Logging control\n"
+ "Permit all logging information\n"
+ "Logging level\n")
{
return CMD_SUCCESS;
}
@@ -1521,7 +1630,8 @@ DEFUN (no_vtysh_integrated_config,
return CMD_SUCCESS;
}
-int write_config_integrated(void)
+static int
+write_config_integrated(void)
{
int ret;
char line[] = "write terminal\n";
@@ -1702,7 +1812,7 @@ DEFUN (vtysh_show_daemons,
}
/* Execute command in child process. */
-int
+static int
execute_command (const char *command, int argc, const char *arg1,
const char *arg2)
{
@@ -1867,14 +1977,14 @@ DEFUN (vtysh_start_zsh,
return CMD_SUCCESS;
}
-void
+static void
vtysh_install_default (enum node_type node)
{
install_element (node, &config_list_cmd);
}
/* Making connection to protocol daemon. */
-int
+static int
vtysh_connect (struct vtysh_client *vclient, const char *path)
{
int ret;
@@ -1957,7 +2067,7 @@ vtysh_connect_all()
}
/* To disable readline's filename completion. */
-char *
+static char *
vtysh_completion_entry_function (const char *ignore, int invoking_key)
{
return NULL;
@@ -2190,13 +2300,22 @@ vtysh_init_vty ()
install_element (ENABLE_NODE, &vtysh_start_zsh_cmd);
install_element (CONFIG_NODE, &vtysh_log_stdout_cmd);
+ install_element (CONFIG_NODE, &vtysh_log_stdout_level_cmd);
install_element (CONFIG_NODE, &no_vtysh_log_stdout_cmd);
install_element (CONFIG_NODE, &vtysh_log_file_cmd);
+ install_element (CONFIG_NODE, &vtysh_log_file_level_cmd);
install_element (CONFIG_NODE, &no_vtysh_log_file_cmd);
+ install_element (CONFIG_NODE, &no_vtysh_log_file_level_cmd);
+ install_element (CONFIG_NODE, &vtysh_log_monitor_cmd);
+ install_element (CONFIG_NODE, &vtysh_log_monitor_level_cmd);
+ install_element (CONFIG_NODE, &no_vtysh_log_monitor_cmd);
install_element (CONFIG_NODE, &vtysh_log_syslog_cmd);
+ install_element (CONFIG_NODE, &vtysh_log_syslog_level_cmd);
install_element (CONFIG_NODE, &no_vtysh_log_syslog_cmd);
install_element (CONFIG_NODE, &vtysh_log_trap_cmd);
install_element (CONFIG_NODE, &no_vtysh_log_trap_cmd);
+ install_element (CONFIG_NODE, &vtysh_log_facility_cmd);
+ install_element (CONFIG_NODE, &no_vtysh_log_facility_cmd);
install_element (CONFIG_NODE, &vtysh_log_record_priority_cmd);
install_element (CONFIG_NODE, &no_vtysh_log_record_priority_cmd);