/*
- $Id: command.c,v 1.50 2005/09/05 11:54:13 paul Exp $
+ $Id: command.c,v 1.51 2005/10/26 05:49:54 paul Exp $
Command interpreter routine for virtual terminal [aka TeletYpe]
Copyright (C) 1997, 98, 99 Kunihiro Ishiguro
{
char *lcdstr;
- lcdstr = XMALLOC (MTYPE_TMP, lcd + 1);
+ lcdstr = XMALLOC (MTYPE_STRVEC, lcd + 1);
memcpy (lcdstr, matchvec->index[0], lcd);
lcdstr[lcd] = '\0';
for (i = 0; i < vector_active (matchvec); i++)
{
if (vector_slot (matchvec, i))
- XFREE (MTYPE_TMP, vector_slot (matchvec, i));
+ XFREE (MTYPE_STRVEC, vector_slot (matchvec, i));
}
vector_free (matchvec);
char *config_file;
char *config_file_tmp = NULL;
char *config_file_sav = NULL;
+ int ret = CMD_WARNING;
struct vty *file_vty;
/* Check and see if we are operating under vtysh configuration */
/* Get filename. */
config_file = host.config;
- config_file_sav = malloc (strlen (config_file) + strlen (CONF_BACKUP_EXT) + 1);
+ config_file_sav =
+ XMALLOC (MTYPE_TMP, strlen (config_file) + strlen (CONF_BACKUP_EXT) + 1);
strcpy (config_file_sav, config_file);
strcat (config_file_sav, CONF_BACKUP_EXT);
- config_file_tmp = malloc (strlen (config_file) + 8);
+ config_file_tmp = XMALLOC (MTYPE_TMP, strlen (config_file) + 8);
sprintf (config_file_tmp, "%s.XXXXXX", config_file);
/* Open file to configuration write. */
{
vty_out (vty, "Can't open configuration file %s.%s", config_file_tmp,
VTY_NEWLINE);
- free (config_file_tmp);
- free (config_file_sav);
- return CMD_WARNING;
+ goto finished;
}
/* Make vty for configuration file. */
{
vty_out (vty, "Can't unlink backup configuration file %s.%s", config_file_sav,
VTY_NEWLINE);
- free (config_file_sav);
- free (config_file_tmp);
- unlink (config_file_tmp);
- return CMD_WARNING;
+ goto finished;
}
if (link (config_file, config_file_sav) != 0)
{
vty_out (vty, "Can't backup old configuration file %s.%s", config_file_sav,
VTY_NEWLINE);
- free (config_file_sav);
- free (config_file_tmp);
- unlink (config_file_tmp);
- return CMD_WARNING;
+ goto finished;
}
sync ();
if (unlink (config_file) != 0)
{
vty_out (vty, "Can't unlink configuration file %s.%s", config_file,
VTY_NEWLINE);
- free (config_file_sav);
- free (config_file_tmp);
- unlink (config_file_tmp);
- return CMD_WARNING;
+ goto finished;
}
if (link (config_file_tmp, config_file) != 0)
{
vty_out (vty, "Can't save configuration file %s.%s", config_file,
VTY_NEWLINE);
- free (config_file_sav);
- free (config_file_tmp);
- unlink (config_file_tmp);
- return CMD_WARNING;
+ goto finished;
}
- unlink (config_file_tmp);
sync ();
- free (config_file_sav);
- free (config_file_tmp);
-
if (chmod (config_file, CONFIGFILE_MASK) != 0)
{
vty_out (vty, "Can't chmod configuration file %s: %s (%d).%s",
config_file, safe_strerror(errno), errno, VTY_NEWLINE);
- return CMD_WARNING;
+ goto finished;
}
vty_out (vty, "Configuration saved to %s%s", config_file,
VTY_NEWLINE);
- return CMD_SUCCESS;
+ ret = CMD_SUCCESS;
+
+finished:
+ unlink (config_file_tmp);
+ XFREE (MTYPE_TMP, config_file_tmp);
+ XFREE (MTYPE_TMP, config_file_sav);
+ return ret;
}
ALIAS (config_write_file,
}
if (host.name)
- XFREE (0, host.name);
+ XFREE (MTYPE_HOST, host.name);
- host.name = strdup (argv[0]);
+ host.name = XSTRDUP (MTYPE_HOST, argv[0]);
return CMD_SUCCESS;
}
"Host name of this router\n")
{
if (host.name)
- XFREE (0, host.name);
+ XFREE (MTYPE_HOST, host.name);
host.name = NULL;
return CMD_SUCCESS;
}
if (*argv[0] == '8')
{
if (host.password)
- XFREE (0, host.password);
+ XFREE (MTYPE_HOST, host.password);
host.password = NULL;
if (host.password_encrypt)
- XFREE (0, host.password_encrypt);
- host.password_encrypt = XSTRDUP (0, strdup (argv[1]));
+ XFREE (MTYPE_HOST, host.password_encrypt);
+ host.password_encrypt = XSTRDUP (MTYPE_HOST, argv[1]);
return CMD_SUCCESS;
}
else
}
if (host.password)
- XFREE (0, host.password);
+ XFREE (MTYPE_HOST, host.password);
host.password = NULL;
if (host.encrypt)
{
if (host.password_encrypt)
- XFREE (0, host.password_encrypt);
- host.password_encrypt = XSTRDUP (0, zencrypt (argv[0]));
+ XFREE (MTYPE_HOST, host.password_encrypt);
+ host.password_encrypt = XSTRDUP (MTYPE_HOST, zencrypt (argv[0]));
}
else
- host.password = XSTRDUP (0, argv[0]);
+ host.password = XSTRDUP (MTYPE_HOST, argv[0]);
return CMD_SUCCESS;
}
if (*argv[0] == '8')
{
if (host.enable)
- XFREE (0, host.enable);
+ XFREE (MTYPE_HOST, host.enable);
host.enable = NULL;
if (host.enable_encrypt)
- XFREE (0, host.enable_encrypt);
- host.enable_encrypt = XSTRDUP (0, argv[1]);
+ XFREE (MTYPE_HOST, host.enable_encrypt);
+ host.enable_encrypt = XSTRDUP (MTYPE_HOST, argv[1]);
return CMD_SUCCESS;
}
}
if (host.enable)
- XFREE (0, host.enable);
+ XFREE (MTYPE_HOST, host.enable);
host.enable = NULL;
/* Plain password input. */
if (host.encrypt)
{
if (host.enable_encrypt)
- XFREE (0, host.enable_encrypt);
- host.enable_encrypt = XSTRDUP (0, zencrypt (argv[0]));
+ XFREE (MTYPE_HOST, host.enable_encrypt);
+ host.enable_encrypt = XSTRDUP (MTYPE_HOST, zencrypt (argv[0]));
}
else
- host.enable = XSTRDUP (0, argv[0]);
+ host.enable = XSTRDUP (MTYPE_HOST, argv[0]);
return CMD_SUCCESS;
}
"Assign the privileged level password\n")
{
if (host.enable)
- XFREE (0, host.enable);
+ XFREE (MTYPE_HOST, host.enable);
host.enable = NULL;
if (host.enable_encrypt)
- XFREE (0, host.enable_encrypt);
+ XFREE (MTYPE_HOST, host.enable_encrypt);
host.enable_encrypt = NULL;
return CMD_SUCCESS;
if (host.password)
{
if (host.password_encrypt)
- XFREE (0, host.password_encrypt);
- host.password_encrypt = XSTRDUP (0, zencrypt (host.password));
+ XFREE (MTYPE_HOST, host.password_encrypt);
+ host.password_encrypt = XSTRDUP (MTYPE_HOST, zencrypt (host.password));
}
if (host.enable)
{
if (host.enable_encrypt)
- XFREE (0, host.enable_encrypt);
- host.enable_encrypt = XSTRDUP (0, zencrypt (host.enable));
+ XFREE (MTYPE_HOST, host.enable_encrypt);
+ host.enable_encrypt = XSTRDUP (MTYPE_HOST, zencrypt (host.enable));
}
return CMD_SUCCESS;
host.encrypt = 0;
if (host.password_encrypt)
- XFREE (0, host.password_encrypt);
+ XFREE (MTYPE_HOST, host.password_encrypt);
host.password_encrypt = NULL;
if (host.enable_encrypt)
- XFREE (0, host.enable_encrypt);
+ XFREE (MTYPE_HOST, host.enable_encrypt);
host.enable_encrypt = NULL;
return CMD_SUCCESS;
}
if (host.logfile)
- XFREE (MTYPE_TMP, host.logfile);
+ XFREE (MTYPE_HOST, host.logfile);
- host.logfile = XSTRDUP (MTYPE_TMP, fname);
+ host.logfile = XSTRDUP (MTYPE_HOST, fname);
return CMD_SUCCESS;
}
zlog_reset_file (NULL);
if (host.logfile)
- XFREE (MTYPE_TMP, host.logfile);
+ XFREE (MTYPE_HOST, host.logfile);
host.logfile = NULL;
"Filename\n")
{
if (host.motdfile)
- XFREE (MTYPE_TMP, host.motdfile);
- host.motdfile = XSTRDUP (MTYPE_TMP, argv[0]);
+ XFREE (MTYPE_HOST, host.motdfile);
+ host.motdfile = XSTRDUP (MTYPE_HOST, argv[0]);
return CMD_SUCCESS;
}
{
host.motd = NULL;
if (host.motdfile)
- XFREE (MTYPE_TMP, host.motdfile);
+ XFREE (MTYPE_HOST, host.motdfile);
host.motdfile = NULL;
return CMD_SUCCESS;
}
void
host_config_set (char *filename)
{
- host.config = strdup (filename);
+ host.config = XSTRDUP (MTYPE_HOST, filename);
}
void