mirror of
https://github.com/FRRouting/frr.git
synced 2025-04-30 13:37:17 +02:00
Added vtysh patch to allow 'write file' command to write either
per-daemon and/or integrated config file
This commit is contained in:
parent
718e374419
commit
4fc01e67ed
|
@ -1,3 +1,8 @@
|
|||
2002-12-13 Paul Jakma <paul@dishone.st>
|
||||
|
||||
* added support for vtysh 'write file' command to
|
||||
write either per-daamon and/or integrated file
|
||||
|
||||
2002-07-07 Kunihiro Ishiguro <kunihiro@ipinfusion.com>
|
||||
|
||||
* zebra-0.93 released.
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
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.
|
||||
|
|
118
vtysh/vtysh.c
118
vtysh/vtysh.c
|
@ -376,22 +376,22 @@ vtysh_execute_func (char *line, int pager)
|
|||
{
|
||||
case CMD_WARNING:
|
||||
if (vty->type == VTY_FILE)
|
||||
printf ("Warning...\n");
|
||||
fprintf (stdout,"Warning...\n");
|
||||
break;
|
||||
case CMD_ERR_AMBIGUOUS:
|
||||
printf ("%% Ambiguous command.\n");
|
||||
fprintf (stdout,"%% Ambiguous command.\n");
|
||||
break;
|
||||
case CMD_ERR_NO_MATCH:
|
||||
printf ("%% Unknown command.\n");
|
||||
fprintf (stdout,"%% Unknown command.\n");
|
||||
break;
|
||||
case CMD_ERR_INCOMPLETE:
|
||||
printf ("%% Command incomplete.\n");
|
||||
fprintf (stdout,"%% Command incomplete.\n");
|
||||
break;
|
||||
case CMD_SUCCESS_DAEMON:
|
||||
{
|
||||
if (pager && vtysh_pager_name)
|
||||
{
|
||||
fp = popen ("more", "w");
|
||||
fp = popen (vtysh_pager_name, "w");
|
||||
if (fp == NULL)
|
||||
{
|
||||
perror ("popen");
|
||||
|
@ -558,16 +558,16 @@ vtysh_config_from_file (struct vty *vty, FILE *fp)
|
|||
{
|
||||
case CMD_WARNING:
|
||||
if (vty->type == VTY_FILE)
|
||||
printf ("Warning...\n");
|
||||
fprintf (stdout,"Warning...\n");
|
||||
break;
|
||||
case CMD_ERR_AMBIGUOUS:
|
||||
printf ("%% Ambiguous command.\n");
|
||||
fprintf (stdout,"%% Ambiguous command.\n");
|
||||
break;
|
||||
case CMD_ERR_NO_MATCH:
|
||||
printf ("%% Unknown command: %s", vty->buf);
|
||||
fprintf (stdout,"%% Unknown command: %s", vty->buf);
|
||||
break;
|
||||
case CMD_ERR_INCOMPLETE:
|
||||
printf ("%% Command incomplete.\n");
|
||||
fprintf (stdout,"%% Command incomplete.\n");
|
||||
break;
|
||||
case CMD_SUCCESS_DAEMON:
|
||||
{
|
||||
|
@ -628,20 +628,20 @@ vtysh_rl_describe ()
|
|||
|
||||
describe = cmd_describe_command (vline, vty, &ret);
|
||||
|
||||
printf ("\n");
|
||||
fprintf (stdout,"\n");
|
||||
|
||||
/* Ambiguous and no match error. */
|
||||
switch (ret)
|
||||
{
|
||||
case CMD_ERR_AMBIGUOUS:
|
||||
cmd_free_strvec (vline);
|
||||
printf ("%% Ambiguous command.\n");
|
||||
fprintf (stdout,"%% Ambiguous command.\n");
|
||||
rl_on_new_line ();
|
||||
return 0;
|
||||
break;
|
||||
case CMD_ERR_NO_MATCH:
|
||||
cmd_free_strvec (vline);
|
||||
printf ("%% There is no matched command.\n");
|
||||
fprintf (stdout,"%% There is no matched command.\n");
|
||||
rl_on_new_line ();
|
||||
return 0;
|
||||
break;
|
||||
|
@ -672,10 +672,10 @@ vtysh_rl_describe ()
|
|||
continue;
|
||||
|
||||
if (! desc->str)
|
||||
printf (" %-s\n",
|
||||
fprintf (stdout," %-s\n",
|
||||
desc->cmd[0] == '.' ? desc->cmd + 1 : desc->cmd);
|
||||
else
|
||||
printf (" %-*s %s\n",
|
||||
fprintf (stdout," %-*s %s\n",
|
||||
width,
|
||||
desc->cmd[0] == '.' ? desc->cmd + 1 : desc->cmd,
|
||||
desc->str);
|
||||
|
@ -1175,7 +1175,7 @@ DEFUN (vtysh_write_terminal,
|
|||
|
||||
if (vtysh_pager_name)
|
||||
{
|
||||
fp = popen ("more", "w");
|
||||
fp = popen (vtysh_pager_name, "w");
|
||||
if (fp == NULL)
|
||||
{
|
||||
perror ("popen");
|
||||
|
@ -1214,11 +1214,42 @@ DEFUN (vtysh_write_terminal,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (vtysh_write_memory,
|
||||
vtysh_write_memory_cmd,
|
||||
"write memory",
|
||||
"Write running configuration to memory, network, or terminal\n"
|
||||
"Write configuration to the file (same as write file)\n")
|
||||
struct vtysh_writeconfig_t {
|
||||
int daemon;
|
||||
int integrated;
|
||||
} vtysh_wc = {-1,0};
|
||||
|
||||
DEFUN (vtysh_write_config,
|
||||
vtysh_write_config_cmd,
|
||||
"write-config (daemon|integrated)",
|
||||
"Specify config files to write to\n"
|
||||
"Write per daemon file\n"
|
||||
"Write integrated file\n"
|
||||
)
|
||||
{
|
||||
if (!strncmp(argv[0],"d",1)) {
|
||||
vtysh_wc.daemon = 1;
|
||||
} else if (!strncmp(argv[0],"i",1)) {
|
||||
vtysh_wc.integrated = 1;
|
||||
}
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (no_vtysh_write_config,
|
||||
no_vtysh_write_config_cmd,
|
||||
"no write-config (daemon|integrated)",
|
||||
"Negate per daemon and/or integrated config files\n"
|
||||
)
|
||||
{
|
||||
if (!strncmp(argv[0],"d",1)) {
|
||||
vtysh_wc.daemon = 0;
|
||||
} else if (!strncmp(argv[0],"i",1)) {
|
||||
vtysh_wc.integrated = 0;
|
||||
}
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
int write_config_integrated(void)
|
||||
{
|
||||
int ret;
|
||||
mode_t old_umask;
|
||||
|
@ -1235,22 +1266,19 @@ DEFUN (vtysh_write_memory,
|
|||
strcat (integrate_sav, CONF_BACKUP_EXT);
|
||||
|
||||
|
||||
printf ("Building Configuration...\n");
|
||||
fprintf (stdout,"Building Configuration...\n");
|
||||
|
||||
/* Move current configuration file to backup config file */
|
||||
unlink (integrate_sav);
|
||||
rename (integrate_default, integrate_sav);
|
||||
|
||||
|
||||
fp = fopen (integrate_default, "w");
|
||||
if (fp == NULL)
|
||||
{
|
||||
printf ("%% Can't open configuration file %s.\n", integrate_default);
|
||||
fprintf (stdout,"%% Can't open configuration file %s.\n", integrate_default);
|
||||
umask (old_umask);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
else
|
||||
printf ("[OK]\n");
|
||||
|
||||
|
||||
vtysh_config_write (fp);
|
||||
|
||||
|
@ -1265,10 +1293,46 @@ DEFUN (vtysh_write_memory,
|
|||
|
||||
fclose (fp);
|
||||
|
||||
fprintf(stdout,"Integrated configuration saved to %s\n",integrate_default);
|
||||
|
||||
fprintf (stdout,"[OK]\n");
|
||||
|
||||
umask (old_umask);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (vtysh_write_memory,
|
||||
vtysh_write_memory_cmd,
|
||||
"write memory",
|
||||
"Write running configuration to memory, network, or terminal\n"
|
||||
"Write configuration to the file (same as write file)\n")
|
||||
{
|
||||
int ret;
|
||||
char line[] = "write memory\n";
|
||||
|
||||
/* if integrated Zebra.conf explicitely set */
|
||||
if (vtysh_wc.integrated == 1) {
|
||||
ret = write_config_integrated();
|
||||
}
|
||||
|
||||
if (!vtysh_wc.daemon) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
fprintf (stdout,"Building Configuration...\n");
|
||||
|
||||
ret = vtysh_client_execute (&vtysh_client[VTYSH_INDEX_ZEBRA], line, stdout);
|
||||
ret = vtysh_client_execute (&vtysh_client[VTYSH_INDEX_RIP], line, stdout);
|
||||
ret = vtysh_client_execute (&vtysh_client[VTYSH_INDEX_RIPNG], line, stdout);
|
||||
ret = vtysh_client_execute (&vtysh_client[VTYSH_INDEX_OSPF], line, stdout);
|
||||
ret = vtysh_client_execute (&vtysh_client[VTYSH_INDEX_OSPF6], line, stdout);
|
||||
ret = vtysh_client_execute (&vtysh_client[VTYSH_INDEX_BGP], line, stdout);
|
||||
|
||||
fprintf (stdout,"[OK]\n");
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
ALIAS (vtysh_write_memory,
|
||||
vtysh_copy_runningconfig_startupconfig_cmd,
|
||||
"copy running-config startup-config",
|
||||
|
@ -1800,4 +1864,6 @@ vtysh_init_vty ()
|
|||
install_element (CONFIG_NODE, &no_vtysh_log_trap_cmd);
|
||||
install_element (CONFIG_NODE, &vtysh_log_record_priority_cmd);
|
||||
install_element (CONFIG_NODE, &no_vtysh_log_record_priority_cmd);
|
||||
install_element (CONFIG_NODE, &vtysh_write_config_cmd);
|
||||
install_element (CONFIG_NODE, &no_vtysh_write_config_cmd);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue