On 1/6/2016 8:13 AM, Donald Sharp wrote: > Why is this approach better than touching ~/.history_quagga or > modifying the logging code in vtysh_main.c to log this information > where you want? > Different use case, i.e., it applies to all daemons and to when vtysh isn't used.
Lou > donald > > On Thu, Dec 24, 2015 at 1:10 PM, Lou Berger <[email protected] > <mailto:[email protected]>> wrote: > > To facilitate debugging and operation. > > Signed-off-by: Lou Berger <[email protected] <mailto:[email protected]>> > Signed-off-by: David Lamparter <[email protected] > <mailto:[email protected]>> > --- > lib/vty.c | 39 +++++++++++++++++++++++++++++++++++++-- > 1 file changed, 37 insertions(+), 2 deletions(-) > > diff --git a/lib/vty.c b/lib/vty.c > index 480d34f..a9b9720 100644 > --- a/lib/vty.c > +++ b/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. */ > @@ -401,6 +401,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_EMERG, "%s%s", prompt_str, buf); > + } > > /* Split readline string up into the vector */ > vline = cmd_make_strvec (buf); > @@ -1571,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, > -- > 2.1.3 > > > _______________________________________________ > Quagga-dev mailing list > [email protected] <mailto:[email protected]> > https://lists.quagga.net/mailman/listinfo/quagga-dev > > _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
