File indexing completed on 2024-07-21 12:16:07

0001 /*
0002     SPDX-FileCopyrightText: 2008, 2010 Will Stephenson <wstephenson@kde.org>
0003     SPDX-FileCopyrightText: 2013 Jan Grulich <jgrulich@redhat.com>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006 */
0007 
0008 #ifndef NETWORKMANAGERQT_NETWORKMANAGER_P_H
0009 #define NETWORKMANAGERQT_NETWORKMANAGER_P_H
0010 
0011 #include <QDBusServiceWatcher>
0012 #include <QMap>
0013 
0014 #include "activeconnection.h"
0015 #include "dbus/networkmanagerinterface.h"
0016 #include "device.h"
0017 
0018 #include "manager.h"
0019 
0020 namespace NetworkManager
0021 {
0022 class Device;
0023 class ActiveConnection;
0024 
0025 class NetworkManagerPrivate : public NetworkManager::Notifier
0026 {
0027     Q_OBJECT
0028 public:
0029     static const QString DBUS_SERVICE;
0030     static const QString DBUS_DAEMON_INTERFACE;
0031     static const QString DBUS_DAEMON_PATH;
0032     static const QString DBUS_SETTINGS_PATH;
0033     static const QString FDO_DBUS_PROPERTIES;
0034     static const QString FDO_DBUS_OBJECT_MANAGER;
0035 
0036     // Functions useful also for other classes
0037     static QVariantMap retrieveInitialProperties(const QString &interfaceName, const QString &path);
0038 
0039     NetworkManagerPrivate();
0040     ~NetworkManagerPrivate() override;
0041     QDBusServiceWatcher watcher;
0042     OrgFreedesktopNetworkManagerInterface iface;
0043     NetworkManager::Status nmState;
0044     Connectivity m_connectivity;
0045     bool m_isNetworkingEnabled;
0046     bool m_isWimaxEnabled;
0047     // TODO: mark it deprecated somehow?
0048     bool m_isWimaxHardwareEnabled;
0049     bool m_isWirelessEnabled;
0050     bool m_isWirelessHardwareEnabled;
0051     bool m_isWwanEnabled;
0052     bool m_isWwanHardwareEnabled;
0053     QString m_activatingConnection;
0054     QString m_primaryConnection;
0055     NetworkManager::ConnectionSettings::ConnectionType m_primaryConnectionType;
0056     NetworkManager::Device::MeteredStatus m_metered;
0057     NetworkManager::DnsConfiguration m_globalDnsConfiguration;
0058     QString m_version;
0059     // to store NetworkManager's version.
0060     int m_x;
0061     int m_y;
0062     int m_z;
0063     void parseVersion(const QString &version);
0064     int compareVersion(const QString &version);
0065     int compareVersion(const int x, const int y, const int z) const;
0066     bool checkVersion(const int x, const int y, const int z) const;
0067     NetworkManager::Device::Types m_supportedInterfaceTypes;
0068     NetworkManager::Device::Types supportedInterfaceTypes() const;
0069 
0070     QMap<QString, ActiveConnection::Ptr> m_activeConnections;
0071     ActiveConnection::Ptr findRegisteredActiveConnection(const QString &);
0072     // manage device children
0073     Device::Ptr findRegisteredNetworkInterface(const QString &uni);
0074     Device::Ptr createNetworkInterface(const QString &uni);
0075     QMap<QString, Device::Ptr> networkInterfaceMap;
0076     // for frontend to call
0077     QString version() const;
0078     NetworkManager::Status status() const;
0079     Device::List networkInterfaces();
0080     Device::Ptr findNetworkInterface(const QString &uni);
0081     Device::Ptr findDeviceByIpIface(const QString &iface);
0082     bool isNetworkingEnabled() const;
0083     bool isWirelessEnabled() const;
0084     bool isWirelessHardwareEnabled() const;
0085     bool isWwanEnabled() const;
0086     bool isWwanHardwareEnabled() const;
0087     bool isWimaxEnabled() const;
0088     // TODO: mark it deprecated somehow?
0089     bool isWimaxHardwareEnabled() const;
0090     QDBusPendingReply<QDBusObjectPath> activateConnection(const QString &connectionUni, const QString &interfaceUni, const QString &connectionParameter);
0091     QDBusPendingReply<QDBusObjectPath, QDBusObjectPath>
0092     addAndActivateConnection(const NMVariantMapMap &connection, const QString &interfaceUni, const QString &connectionParameter);
0093     QDBusPendingReply<QDBusObjectPath, QDBusObjectPath, QVariantMap>
0094     addAndActivateConnection2(const NMVariantMapMap &connection, const QString &interfaceUni, const QString &connectionParameter, const QVariantMap &options);
0095     QDBusPendingReply<> deactivateConnection(const QString &activeConnection);
0096     ActiveConnection::List activeConnections();
0097     QStringList activeConnectionsPaths() const;
0098     QDBusPendingReply<QString, QString> getLogging();
0099     void setNetworkingEnabled(bool enabled);
0100     void setWirelessEnabled(bool enabled);
0101     void setWwanEnabled(bool enabled);
0102     // TODO: mark it deprecated somehow?
0103     void setWimaxEnabled(bool enabled);
0104     void sleep(bool sleep);
0105     void setLogging(NetworkManager::LogLevel, NetworkManager::LogDomains);
0106     NMStringMap permissions();
0107     Connectivity connectivity() const;
0108     QDBusPendingReply<uint> checkConnectivity();
0109     ActiveConnection::Ptr primaryConnection();
0110     ActiveConnection::Ptr activatingConnection();
0111     NetworkManager::ConnectionSettings::ConnectionType primaryConnectionType();
0112     bool isStartingUp() const;
0113     NetworkManager::Device::MeteredStatus metered() const;
0114     NetworkManager::DnsConfiguration globalDnsConfiguration() const;
0115     void setGlobalDnsConfiguration(const NetworkManager::DnsConfiguration &configuration);
0116 protected Q_SLOTS:
0117     void init();
0118     void onDeviceAdded(const QDBusObjectPath &state);
0119     void onDeviceRemoved(const QDBusObjectPath &state);
0120     void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
0121     void propertiesChanged(const QVariantMap &changedProperties);
0122     void dbusInterfacesAdded(const QDBusObjectPath &path, const QVariantMap &addedInterfaces);
0123     void daemonRegistered();
0124     void daemonUnregistered();
0125 
0126 private:
0127     void connectivityChanged(uint connectivity);
0128     void stateChanged(uint state);
0129     static NetworkManager::Connectivity convertConnectivity(uint connectivity);
0130     static NetworkManager::Status convertNMState(uint state);
0131 };
0132 }
0133 #endif