Things seem to work...
[matches/swarm.git] / src / ssh.h
diff --git a/src/ssh.h b/src/ssh.h
new file mode 100644 (file)
index 0000000..6d12e99
--- /dev/null
+++ b/src/ssh.h
@@ -0,0 +1,57 @@
+#ifndef _SSH_H
+#define _SSH_H
+
+#include "network.h"
+#include "master.h"
+#include "options.h"
+
+#define SSH_DIR "~/.ssh/"
+#define SSH_KNOWN_HOSTS "~/.ssh/known_hosts"
+
+#include <libssh2.h>
+#include <pthread.h>
+#include <sys/select.h>
+#include <sys/fcntl.h>
+
+typedef struct
+{
+       int forward_sock;
+       LIBSSH2_CHANNEL * channel;
+       int port;
+       
+} ssh_tunnel;
+
+typedef struct
+{
+       ssh_tunnel * tunnel;
+       int nTunnels;
+       int reserved_tunnels;
+
+       int socket;
+       LIBSSH2_SESSION *session;
+       char * fingerprint;
+
+       char * user;
+       char * addr;
+} ssh;
+
+extern ssh * ssh_new(char * username, char * addr, int port);
+extern void ssh_destroy(ssh * s);
+
+extern void ssh_exec_swarm(ssh * s, int * port, int * socket, int np);
+extern LIBSSH2_LISTENER * ssh_get_listener(ssh * s, int * port);
+extern void ssh_add_tunnel(ssh * s, LIBSSH2_LISTENER * listener, int socket);
+
+extern void * ssh_thread(void * args);
+extern void ssh_thread_add(ssh * s);
+extern void ssh_thread_del(ssh * s);
+
+
+extern pthread_mutex_t ssh_thread_mutex;
+
+extern pthread_t ssh_pthread;
+
+
+#endif //_SSH_H
+
+//EOF

UCC git Repository :: git.ucc.asn.au