From 220f67dfdf577ecda84fe830b16d6fac4008ccec Mon Sep 17 00:00:00 2001 From: Christian Kandeler <christian.kandeler@nokia.com> Date: Fri, 10 Feb 2012 10:39:48 +0100 Subject: [PATCH] SSH: Export information about the underlying TCP connection. Change-Id: I62bce3b563b6aba481642fac0d427c0f0d3b2ddd Reviewed-by: hjk <qthjk@ovi.com> --- src/libs/utils/ssh/sshconnection.cpp | 7 +++++-- src/libs/utils/ssh/sshconnection.h | 17 +++++++++++++++-- src/plugins/remotelinux/remotelinux.pro | 1 + .../remotelinuxusedportsgatherer.cpp | 2 +- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/libs/utils/ssh/sshconnection.cpp b/src/libs/utils/ssh/sshconnection.cpp index 459ce0aa80d..8dbfead8d2b 100644 --- a/src/libs/utils/ssh/sshconnection.cpp +++ b/src/libs/utils/ssh/sshconnection.cpp @@ -167,9 +167,12 @@ SshConnectionParameters SshConnection::connectionParameters() const return d->m_connParams; } -QAbstractSocket::NetworkLayerProtocol SshConnection::ipProtocolVersion() const +SshConnectionInfo SshConnection::connectionInfo() const { - return d->m_socket->localAddress().protocol(); + QTC_ASSERT(state() == Connected, return SshConnectionInfo()); + + return SshConnectionInfo(d->m_socket->localAddress(), d->m_socket->localPort(), + d->m_socket->peerAddress(), d->m_socket->peerPort()); } SshConnection::~SshConnection() diff --git a/src/libs/utils/ssh/sshconnection.h b/src/libs/utils/ssh/sshconnection.h index 083ae67cd01..a9aa532c189 100644 --- a/src/libs/utils/ssh/sshconnection.h +++ b/src/libs/utils/ssh/sshconnection.h @@ -41,7 +41,7 @@ #include <QtCore/QObject> #include <QtCore/QSharedPointer> #include <QtCore/QString> -#include <QtNetwork/QAbstractSocket> +#include <QtNetwork/QHostAddress> namespace Utils { class SftpChannel; @@ -71,6 +71,19 @@ public: QTCREATOR_UTILS_EXPORT bool operator==(const SshConnectionParameters &p1, const SshConnectionParameters &p2); QTCREATOR_UTILS_EXPORT bool operator!=(const SshConnectionParameters &p1, const SshConnectionParameters &p2); +class QTCREATOR_UTILS_EXPORT SshConnectionInfo +{ +public: + SshConnectionInfo() : localPort(0), peerPort(0) {} + SshConnectionInfo(const QHostAddress &la, quint16 lp, const QHostAddress &pa, quint16 pp) + : localAddress(la), localPort(lp), peerAddress(pa), peerPort(pp) {} + + QHostAddress localAddress; + quint16 localPort; + QHostAddress peerAddress; + quint16 peerPort; +}; + class QTCREATOR_UTILS_EXPORT SshConnection : public QObject { Q_OBJECT @@ -87,7 +100,7 @@ public: SshError errorState() const; QString errorString() const; SshConnectionParameters connectionParameters() const; - QAbstractSocket::NetworkLayerProtocol ipProtocolVersion() const; + SshConnectionInfo connectionInfo() const; ~SshConnection(); QSharedPointer<SshRemoteProcess> createRemoteProcess(const QByteArray &command); diff --git a/src/plugins/remotelinux/remotelinux.pro b/src/plugins/remotelinux/remotelinux.pro index 6d2349ea4db..8feab7f75df 100644 --- a/src/plugins/remotelinux/remotelinux.pro +++ b/src/plugins/remotelinux/remotelinux.pro @@ -1,5 +1,6 @@ TEMPLATE = lib TARGET = RemoteLinux +QT += network include(../../qtcreatorplugin.pri) include(remotelinux_dependencies.pri) diff --git a/src/plugins/remotelinux/remotelinuxusedportsgatherer.cpp b/src/plugins/remotelinux/remotelinuxusedportsgatherer.cpp index 4dc6b4339b2..2b7dd0b80bb 100644 --- a/src/plugins/remotelinux/remotelinuxusedportsgatherer.cpp +++ b/src/plugins/remotelinux/remotelinuxusedportsgatherer.cpp @@ -86,7 +86,7 @@ void RemoteLinuxUsedPortsGatherer::start(const Utils::SshConnection::Ptr &connec SLOT(handleRemoteStdErr(QByteArray))); QString procFilePath; int addressLength; - if (connection->ipProtocolVersion() == QAbstractSocket::IPv4Protocol) { + if (connection->connectionInfo().localAddress.protocol() == QAbstractSocket::IPv4Protocol) { procFilePath = QLatin1String("/proc/net/tcp"); addressLength = 8; } else { -- GitLab