- dtucker@cvs.openbsd.org 2012/09/06 04:37:39
     [clientloop.c log.c ssh.1 log.h]
     Add ~v and ~V escape sequences to raise and lower the logging level
     respectively. Man page help from jmc, ok deraadt jmc
diff --git a/ChangeLog b/ChangeLog
index 178d050..439893d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -22,6 +22,10 @@
      Send client banner immediately, rather than waiting for the server to
      move first for SSH protocol 2 connections (the default). Patch based on
      one in bz#1999 by tls AT panix.com, feedback dtucker@ ok markus@
+   - dtucker@cvs.openbsd.org 2012/09/06 04:37:39
+     [clientloop.c log.c ssh.1 log.h]
+     Add ~v and ~V escape sequences to raise and lower the logging level
+     respectively. Man page help from jmc, ok deraadt jmc
 
 20120830
  - (dtucker) [moduli] Import new moduli file.
diff --git a/clientloop.c b/clientloop.c
index 65664cb..0e5c45a 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: clientloop.c,v 1.241 2012/08/17 00:45:45 dtucker Exp $ */
+/* $OpenBSD: clientloop.c,v 1.242 2012/09/06 04:37:38 dtucker Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1099,6 +1099,31 @@
 				}
 				continue;
 
+			case 'V':
+				/* FALLTHROUGH */
+			case 'v':
+				if (c && c->ctl_chan != -1)
+					goto noescape;
+				if (!log_is_on_stderr()) {
+					snprintf(string, sizeof string,
+					    "%c%c [Logging to syslog]\r\n",
+					     escape_char, ch);
+					buffer_append(berr, string,
+					    strlen(string));
+					continue;
+				}
+				if (ch == 'V' && options.log_level >
+				    SYSLOG_LEVEL_QUIET)
+					log_change_level(--options.log_level);
+				if (ch == 'v' && options.log_level <
+				    SYSLOG_LEVEL_DEBUG3)
+					log_change_level(++options.log_level);
+				snprintf(string, sizeof string,
+				    "%c%c [LogLevel %s]\r\n", escape_char, ch,
+				    log_level_name(options.log_level));
+				buffer_append(berr, string, strlen(string));
+				continue;
+
 			case '&':
 				if (c && c->ctl_chan != -1)
 					goto noescape;
@@ -1175,6 +1200,8 @@
   %cB  - send a BREAK to the remote system\r\n\
   %cC  - open a command line\r\n\
   %cR  - Request rekey (SSH protocol 2 only)\r\n\
+  %cV  - Increase verbosity (LogLevel)\r\n\
+  %cv  - Decrease verbosity (LogLevel)\r\n\
   %c^Z - suspend ssh\r\n\
   %c#  - list forwarded connections\r\n\
   %c&  - background ssh (when waiting for connections to terminate)\r\n\
@@ -1186,6 +1213,7 @@
 					    escape_char, escape_char,
 					    escape_char, escape_char,
 					    escape_char, escape_char,
+					    escape_char, escape_char,
 					    escape_char);
 				}
 				buffer_append(berr, string, strlen(string));
diff --git a/log.c b/log.c
index ad5a10b..7f4a1b9 100644
--- a/log.c
+++ b/log.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: log.c,v 1.42 2011/06/17 21:44:30 djm Exp $ */
+/* $OpenBSD: log.c,v 1.43 2012/09/06 04:37:39 dtucker Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -329,6 +329,21 @@
 #endif
 }
 
+void
+log_change_level(LogLevel new_log_level)
+{
+	/* no-op if log_init has not been called */
+	if (argv0 == NULL)
+		return;
+	log_init(argv0, new_log_level, log_facility, log_on_stderr);
+}
+
+int
+log_is_on_stderr(void)
+{
+	return log_on_stderr;
+}
+
 #define MSGBUFSIZ 1024
 
 void
diff --git a/log.h b/log.h
index 1b8d214..e3e328b 100644
--- a/log.h
+++ b/log.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: log.h,v 1.18 2011/06/17 21:44:30 djm Exp $ */
+/* $OpenBSD: log.h,v 1.19 2012/09/06 04:37:39 dtucker Exp $ */
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -49,6 +49,8 @@
 typedef void (log_handler_fn)(LogLevel, const char *, void *);
 
 void     log_init(char *, LogLevel, SyslogFacility, int);
+void     log_change_level(LogLevel);
+int      log_is_on_stderr(void);
 
 SyslogFacility	log_facility_number(char *);
 const char * 	log_facility_name(SyslogFacility);
diff --git a/ssh.1 b/ssh.1
index eaf5d83..65342ff 100644
--- a/ssh.1
+++ b/ssh.1
@@ -33,8 +33,8 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.\" $OpenBSD: ssh.1,v 1.326 2012/06/18 12:17:18 dtucker Exp $
-.Dd $Mdocdate: June 18 2012 $
+.\" $OpenBSD: ssh.1,v 1.327 2012/09/06 04:37:39 dtucker Exp $
+.Dd $Mdocdate: September 6 2012 $
 .Dt SSH 1
 .Os
 .Sh NAME
@@ -926,6 +926,14 @@
 .It Cm ~R
 Request rekeying of the connection
 (only useful for SSH protocol version 2 and if the peer supports it).
+.It Cm ~V
+Decrease the verbosity
+.Pq Ic LogLevel
+when errors are being written to stderr.
+.It Cm ~v
+Increase the verbosit
+.Pq Ic LogLevel
+when errors are being written to stderr.
 .El
 .Sh TCP FORWARDING
 Forwarding of arbitrary TCP connections over the secure channel can