mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-16 08:32:45 +00:00
lib: add facility to log all CLI commands
Signed-off-by: Lou Berger <lberger@labn.net> (cherry picked from commit c7f7e49a4f68c92152384582ff70d64609858170)
This commit is contained in:
parent
54e806f1c2
commit
1035065f2a
38
lib/vty.c
38
lib/vty.c
@ -111,7 +111,7 @@ vty_out (struct vty *vty, const char *format, ...)
|
||||
{
|
||||
/* Try to write to initial buffer. */
|
||||
va_start (args, format);
|
||||
len = vsnprintf (buf, sizeof buf, format, args);
|
||||
len = vsnprintf (buf, sizeof(buf), format, args);
|
||||
va_end (args);
|
||||
|
||||
/* Initial buffer is not enough. */
|
||||
@ -402,7 +402,41 @@ vty_command (struct vty *vty, char *buf)
|
||||
int ret;
|
||||
vector vline;
|
||||
const char *protocolname;
|
||||
char *cp;
|
||||
|
||||
/*
|
||||
* Log non empty command lines
|
||||
*/
|
||||
cp = buf;
|
||||
if (cp != NULL)
|
||||
{
|
||||
/* Skip white spaces. */
|
||||
while (isspace ((int) *cp) && *cp != '\0')
|
||||
cp++;
|
||||
}
|
||||
if (cp != NULL && *cp != '\0')
|
||||
{
|
||||
unsigned i;
|
||||
char vty_str[VTY_BUFSIZ];
|
||||
char prompt_str[VTY_BUFSIZ];
|
||||
|
||||
/* format the base vty info */
|
||||
snprintf(vty_str, sizeof(vty_str), "vty[??]@%s", vty->address);
|
||||
if (vty)
|
||||
for (i = 0; i < vector_active (vtyvec); i++)
|
||||
if (vty == vector_slot (vtyvec, i))
|
||||
{
|
||||
snprintf(vty_str, sizeof(vty_str), "vty[%d]@%s",
|
||||
i, vty->address);
|
||||
break;
|
||||
}
|
||||
|
||||
/* format the prompt */
|
||||
snprintf(prompt_str, sizeof(prompt_str), cmd_prompt (vty->node), vty_str);
|
||||
|
||||
/* now log the command */
|
||||
zlog(NULL, LOG_NOTICE, "%s%s", prompt_str, buf);
|
||||
}
|
||||
/* Split readline string up into the vector */
|
||||
vline = cmd_make_strvec (buf);
|
||||
|
||||
@ -1572,7 +1606,7 @@ vty_flush (struct thread *thread)
|
||||
erase = ((vty->status == VTY_MORE || vty->status == VTY_MORELINE));
|
||||
|
||||
/* N.B. if width is 0, that means we don't know the window size. */
|
||||
if ((vty->lines == 0) || (vty->width == 0))
|
||||
if ((vty->lines == 0) || (vty->width == 0) || (vty->height == 0))
|
||||
flushrc = buffer_flush_available(vty->obuf, vty_sock);
|
||||
else if (vty->status == VTY_MORELINE)
|
||||
flushrc = buffer_flush_window(vty->obuf, vty_sock, vty->width,
|
||||
|
Loading…
Reference in New Issue
Block a user