summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabiano FidĂȘncio <fidencio@redhat.com>2015-10-13 19:28:21 +0200
committerFabiano FidĂȘncio <fidencio@redhat.com>2015-12-15 15:08:35 +0100
commit4ce98dd1d4fbe6af4d9b4938f416527f024ef9c7 (patch)
tree88f7e131b382361c5ba4c453fb401700c5107b0b
parent14482a06511a24802f4fe07b28c47dcae43d3c6d (diff)
downloadvirt-viewer-4ce98dd1d4fbe6af4d9b4938f416527f024ef9c7.tar.gz
virt-viewer-4ce98dd1d4fbe6af4d9b4938f416527f024ef9c7.tar.xz
virt-viewer-4ce98dd1d4fbe6af4d9b4938f416527f024ef9c7.zip
session: add virt_viewer_can_forward_ssh_agent()
Functions names say it all, it's only implemented for Spice, checking for channel-ssh presence.
-rw-r--r--src/virt-viewer-session-spice.c9
-rw-r--r--src/virt-viewer-session.c12
-rw-r--r--src/virt-viewer-session.h2
3 files changed, 23 insertions, 0 deletions
diff --git a/src/virt-viewer-session-spice.c b/src/virt-viewer-session-spice.c
index c146e33..f9a1c80 100644
--- a/src/virt-viewer-session-spice.c
+++ b/src/virt-viewer-session-spice.c
@@ -180,6 +180,14 @@ virt_viewer_session_spice_can_retry_auth(VirtViewerSession *session G_GNUC_UNUSE
return TRUE;
}
+static gboolean
+virt_viewer_session_spice_can_forward_ssh_agent(VirtViewerSession *session)
+{
+ VirtViewerSessionSpice *self = VIRT_VIEWER_SESSION_SPICE(session);
+
+ return spice_session_has_channel_type(self->priv->session, SPICE_CHANNEL_SSH);
+}
+
static void
create_spice_session(VirtViewerSessionSpice *self);
@@ -292,6 +300,7 @@ virt_viewer_session_spice_class_init(VirtViewerSessionSpiceClass *klass)
dclass->apply_monitor_geometry = virt_viewer_session_spice_apply_monitor_geometry;
dclass->can_share_folder = virt_viewer_session_spice_can_share_folder;
dclass->can_retry_auth = virt_viewer_session_spice_can_retry_auth;
+ dclass->can_forward_ssh_agent = virt_viewer_session_spice_can_forward_ssh_agent;
g_type_class_add_private(klass, sizeof(VirtViewerSessionSpicePrivate));
diff --git a/src/virt-viewer-session.c b/src/virt-viewer-session.c
index 0c9b564..a99144b 100644
--- a/src/virt-viewer-session.c
+++ b/src/virt-viewer-session.c
@@ -695,6 +695,18 @@ gboolean virt_viewer_session_can_retry_auth(VirtViewerSession *self)
return klass->can_retry_auth ? klass->can_retry_auth(self) : FALSE;
}
+gboolean virt_viewer_session_can_forward_ssh_agent(VirtViewerSession *self)
+
+{
+ VirtViewerSessionClass *klass;
+
+ g_return_val_if_fail(VIRT_VIEWER_IS_SESSION(self), FALSE);
+
+ klass = VIRT_VIEWER_SESSION_GET_CLASS(self);
+
+ return klass->can_forward_ssh_agent ? klass->can_forward_ssh_agent(self) : FALSE;
+}
+
/*
* Local variables:
* c-indent-level: 4
diff --git a/src/virt-viewer-session.h b/src/virt-viewer-session.h
index d3a9ccc..b2201d9 100644
--- a/src/virt-viewer-session.h
+++ b/src/virt-viewer-session.h
@@ -98,6 +98,7 @@ struct _VirtViewerSessionClass {
void (*apply_monitor_geometry)(VirtViewerSession *session, GHashTable* monitors);
gboolean (*can_share_folder)(VirtViewerSession *session);
gboolean (*can_retry_auth)(VirtViewerSession *session);
+ gboolean (*can_forward_ssh_agent)(VirtViewerSession *session);
};
GType virt_viewer_session_get_type(void);
@@ -135,6 +136,7 @@ void virt_viewer_session_set_file(VirtViewerSession *self, VirtViewerFile *file)
VirtViewerFile* virt_viewer_session_get_file(VirtViewerSession *self);
gboolean virt_viewer_session_can_share_folder(VirtViewerSession *self);
gboolean virt_viewer_session_can_retry_auth(VirtViewerSession *self);
+gboolean virt_viewer_session_can_forward_ssh_agent(VirtViewerSession *self);
G_END_DECLS