aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-10-15 17:17:36 +0200
committerAndreas Schneider <mail@cynapses.org>2009-10-15 17:17:36 +0200
commit7b7280e728466f2ce9e9faeb840093224ef5d3e3 (patch)
tree770d42898c9a0e0730d5b7c4d50c9473c2a0b472
parent2523ed0779843e6074717cdcdf8bcaffb4b87ad9 (diff)
downloadlibssh-7b7280e728466f2ce9e9faeb840093224ef5d3e3.tar.gz
libssh-7b7280e728466f2ce9e9faeb840093224ef5d3e3.tar.xz
libssh-7b7280e728466f2ce9e9faeb840093224ef5d3e3.zip
Added option to set log_verbosity in the server.
-rw-r--r--include/libssh/priv.h1
-rw-r--r--include/libssh/server.h4
-rw-r--r--libssh/options.c27
-rw-r--r--libssh/server.c12
4 files changed, 36 insertions, 8 deletions
diff --git a/include/libssh/priv.h b/include/libssh/priv.h
index ec53b5f..764b022 100644
--- a/include/libssh/priv.h
+++ b/include/libssh/priv.h
@@ -107,6 +107,7 @@ struct ssh_bind_struct {
char *bindaddr;
socket_t bindfd;
unsigned int bindport;
+ unsigned int log_verbosity;
int blocking;
int toaccept;
diff --git a/include/libssh/server.h b/include/libssh/server.h
index db7d402..c9cf634 100644
--- a/include/libssh/server.h
+++ b/include/libssh/server.h
@@ -43,7 +43,9 @@ enum ssh_bind_options_e {
SSH_BIND_OPTIONS_HOSTKEY,
SSH_BIND_OPTIONS_DSAKEY,
SSH_BIND_OPTIONS_RSAKEY,
- SSH_BIND_OPTIONS_BANNER
+ SSH_BIND_OPTIONS_BANNER,
+ SSH_BIND_OPTIONS_LOG_VERBOSITY,
+ SSH_BIND_OPTIONS_LOG_VERBOSITY_STR
};
//typedef struct ssh_bind_struct SSH_BIND;
diff --git a/libssh/options.c b/libssh/options.c
index 31a5232..0cc5be7 100644
--- a/libssh/options.c
+++ b/libssh/options.c
@@ -677,6 +677,33 @@ int ssh_bind_options_set(ssh_bind sshbind, enum ssh_bind_options_e type,
sshbind->bindport = i & 0xffff;
}
break;
+ case SSH_BIND_OPTIONS_LOG_VERBOSITY:
+ if (value == NULL) {
+ ssh_set_error_invalid(sshbind, __FUNCTION__);
+ return -1;
+ } else {
+ int *x = (int *) value;
+ sshbind->log_verbosity = *x & 0xffff;
+ }
+ break;
+ case SSH_BIND_OPTIONS_LOG_VERBOSITY_STR:
+ if (value == NULL) {
+ sshbind->log_verbosity = 0;
+ } else {
+ q = strdup(value);
+ if (q == NULL) {
+ ssh_set_error_oom(sshbind);
+ return -1;
+ }
+ i = strtol(q, &p, 10);
+ if (q == p) {
+ SAFE_FREE(q);
+ }
+ SAFE_FREE(q);
+
+ sshbind->log_verbosity = i & 0xffff;
+ }
+ break;
case SSH_BIND_OPTIONS_DSAKEY:
if (value == NULL) {
ssh_set_error_invalid(sshbind, __FUNCTION__);
diff --git a/libssh/server.c b/libssh/server.c
index c992d9a..c4ecff5 100644
--- a/libssh/server.c
+++ b/libssh/server.c
@@ -131,6 +131,8 @@ ssh_bind ssh_bind_new(void) {
ZERO_STRUCTP(ptr);
ptr->bindfd = -1;
ptr->bindport= 22;
+ ptr->log_verbosity = 0;
+
return ptr;
}
@@ -229,10 +231,6 @@ int ssh_bind_accept(ssh_bind sshbind, ssh_session session) {
session->server = 1;
session->version = 2;
- /* TODO: is wanted methods enough? */
-#if 0
- session->options = ssh_options_copy(sshbind->options);
-#endif
/* copy options */
for (i = 0; i < 10; ++i) {
if (sshbind->wanted_methods[i]) {
@@ -255,9 +253,9 @@ int ssh_bind_accept(ssh_bind sshbind, ssh_session session) {
return SSH_ERROR;
}
}
-/* TODO FIXME this doesn't work
- session->log_verbosity = session->options->log_verbosity;
-*/
+
+ session->log_verbosity = sshbind->log_verbosity;
+
ssh_socket_free(session->socket);
session->socket = ssh_socket_new(session);
if (session->socket == NULL) {