diff --git a/src/libs/utils/ssh/sshconnection.cpp b/src/libs/utils/ssh/sshconnection.cpp index 459ce0aa80da107aafc4775885d7a6fd8c672ec8..8dbfead8d2b1f41bc535e32f03a96d284eb6b289 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 083ae67cd01fc4f8d2e0c9266d92157742e381ed..a9aa532c1897a4b5c78deb2837dfd64afb84328d 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 6d2349ea4dbd673ed8438617b841789aa4758733..8feab7f75df713c5bc1f221807c43304a4830eaf 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 4dc6b4339b2bd7b6f9aa783fd029f26a20fa57d8..2b7dd0b80bb804d7d135883a9cf922c1618660e9 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 {