summaryrefslogtreecommitdiffstats
path: root/vtysh
diff options
context:
space:
mode:
authorRuss White <russ@riw.us>2017-07-14 12:24:01 +0200
committerGitHub <noreply@github.com>2017-07-14 12:24:01 +0200
commit905c15079393987f8cfdd55c30e7e1a3248c8c48 (patch)
tree0a210b213a525f2880cd694b2e45833e8430d282 /vtysh
parentMerge pull request #817 from donaldsharp/babel_redist (diff)
parentvtysh: return non-zero for configuration failures (diff)
downloadfrr-905c15079393987f8cfdd55c30e7e1a3248c8c48.tar.xz
frr-905c15079393987f8cfdd55c30e7e1a3248c8c48.zip
Merge pull request #815 from dwalton76/CMD_WARNING_take2
vtysh: return non-zero for configuration failures
Diffstat (limited to 'vtysh')
-rw-r--r--vtysh/vtysh.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index 6fc0e3917..c20d1f56b 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -291,6 +291,7 @@ vtysh_execute_func (const char *line, int pager)
* Changing vty->node is enough to try it just out without actual walkup in
* the vtysh. */
while (ret != CMD_SUCCESS && ret != CMD_SUCCESS_DAEMON && ret != CMD_WARNING
+ && ret != CMD_WARNING_CONFIG_FAILED
&& vty->node > CONFIG_NODE)
{
vty->node = node_parent(vty->node);
@@ -350,6 +351,7 @@ vtysh_execute_func (const char *line, int pager)
switch (ret)
{
case CMD_WARNING:
+ case CMD_WARNING_CONFIG_FAILED:
if (vty->type == VTY_FILE)
fprintf (stdout,"Warning...\n");
break;
@@ -553,6 +555,7 @@ vtysh_mark_file (const char *filename)
* Changing vty->node is enough to try it just out without actual walkup in
* the vtysh. */
while (ret != CMD_SUCCESS && ret != CMD_SUCCESS_DAEMON && ret != CMD_WARNING
+ && ret != CMD_WARNING_CONFIG_FAILED
&& vty->node > CONFIG_NODE)
{
vty->node = node_parent(vty->node);
@@ -594,12 +597,13 @@ vtysh_mark_file (const char *filename)
switch (ret)
{
case CMD_WARNING:
+ case CMD_WARNING_CONFIG_FAILED:
if (vty->type == VTY_FILE)
fprintf (stderr,"line %d: Warning...: %s\n", lineno, vty->buf);
fclose(confp);
vty_close(vty);
XFREE(MTYPE_VTYSH_CMD, vty_buf_copy);
- return CMD_WARNING;
+ return ret;
case CMD_ERR_AMBIGUOUS:
fprintf (stderr,"line %d: %% Ambiguous command: %s\n", lineno, vty->buf);
fclose(confp);
@@ -674,9 +678,10 @@ vtysh_config_from_file (struct vty *vty, FILE *fp)
switch (ret)
{
case CMD_WARNING:
+ case CMD_WARNING_CONFIG_FAILED:
if (vty->type == VTY_FILE)
fprintf (stderr,"line %d: Warning[%d]...: %s\n", lineno, vty->node, vty->buf);
- retcode = CMD_WARNING; /* once we have an error, we remember & return that */
+ retcode = ret; /* once we have an error, we remember & return that */
break;
case CMD_ERR_AMBIGUOUS:
fprintf (stderr,"line %d: %% Ambiguous command[%d]: %s\n", lineno, vty->node, vty->buf);
@@ -2612,7 +2617,7 @@ vtysh_write_config_integrated(void)
{
fprintf (stdout,"%% Error: failed to open configuration file %s: %s\n",
quagga_config, safe_strerror(errno));
- return CMD_WARNING;
+ return CMD_WARNING_CONFIG_FAILED;
}
fd = fileno (fp);
@@ -2714,7 +2719,7 @@ DEFUN (vtysh_write_memory,
/* If integrated frr.conf explicitely set. */
if (want_config_integrated())
{
- ret = CMD_WARNING;
+ ret = CMD_WARNING_CONFIG_FAILED;
for (i = 0; i < array_size(vtysh_client); i++)
if (vtysh_client[i].flag == VTYSH_WATCHFRR)
break;
@@ -3016,7 +3021,7 @@ vtysh_connect (struct vtysh_client *vclient)
{
fprintf (stderr, "vtysh_connect(%s): stat = %s\n",
path, safe_strerror(errno));
- exit(1);
+ exit (1);
}
if (ret >= 0)