Warning, file /frameworks/networkmanager-qt/src/manager.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2008, 2010 Will Stephenson <wstephenson@kde.org> 0003 SPDX-FileCopyrightText: 2011-2013 Lamarque Souza <lamarque@kde.org> 0004 SPDX-FileCopyrightText: 2013 Daniel Nicoletti <dantti12@gmail.com> 0005 SPDX-FileCopyrightText: 2013 Jan Grulich <jgrulich@redhat.com> 0006 0007 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0008 */ 0009 0010 #include "manager.h" 0011 #include "manager_p.h" 0012 0013 #include "macros.h" 0014 0015 #undef signals 0016 #include <libnm/NetworkManager.h> 0017 #define signals Q_SIGNALS 0018 0019 #include "adsldevice.h" 0020 #include "bluetoothdevice.h" 0021 #include "bonddevice.h" 0022 #include "bridgedevice.h" 0023 #include "dbus/deviceinterface.h" 0024 #include "device_p.h" 0025 #include "genericdevice.h" 0026 #include "gredevice.h" 0027 #include "infinibanddevice.h" 0028 #include "iptunneldevice.h" 0029 #include "macvlandevice.h" 0030 #include "modemdevice.h" 0031 #include "olpcmeshdevice.h" 0032 #include "settings.h" 0033 #include "settings_p.h" 0034 #include "tundevice.h" 0035 #include "vethdevice.h" 0036 #include "vlandevice.h" 0037 #include "vpnconnection.h" 0038 #include "wimaxdevice.h" 0039 #include "wireddevice.h" 0040 #include "wireguarddevice.h" 0041 #include "wirelessdevice.h" 0042 0043 #include "nmdebug.h" 0044 0045 #define DBUS_OBJECT_MANAGER "org.freedesktop.DBus.ObjectManager" 0046 #define DBUS_PROPERTIES "org.freedesktop.DBus.Properties" 0047 0048 #ifdef NMQT_STATIC 0049 const QString NetworkManager::NetworkManagerPrivate::DBUS_SERVICE(QString::fromLatin1("org.kde.fakenetwork")); 0050 const QString NetworkManager::NetworkManagerPrivate::DBUS_DAEMON_PATH(QString::fromLatin1("/org/kde/fakenetwork")); 0051 const QString NetworkManager::NetworkManagerPrivate::DBUS_DAEMON_INTERFACE(QString::fromLatin1("org.kde.fakenetwork")); 0052 const QString NetworkManager::NetworkManagerPrivate::DBUS_SETTINGS_PATH(QString::fromLatin1("/org/kde/fakenetwork/Settings")); 0053 #else 0054 const QString NetworkManager::NetworkManagerPrivate::DBUS_SERVICE(QString::fromLatin1(NM_DBUS_SERVICE)); 0055 const QString NetworkManager::NetworkManagerPrivate::DBUS_DAEMON_PATH(QString::fromLatin1(NM_DBUS_PATH)); 0056 const QString NetworkManager::NetworkManagerPrivate::DBUS_DAEMON_INTERFACE(QString::fromLatin1(NM_DBUS_INTERFACE)); 0057 const QString NetworkManager::NetworkManagerPrivate::DBUS_SETTINGS_PATH(QString::fromLatin1(NM_DBUS_PATH_SETTINGS)); 0058 #endif 0059 const QString NetworkManager::NetworkManagerPrivate::FDO_DBUS_PROPERTIES(QString::fromLatin1(DBUS_PROPERTIES)); 0060 const QString NetworkManager::NetworkManagerPrivate::FDO_DBUS_OBJECT_MANAGER(QString::fromLatin1(DBUS_OBJECT_MANAGER)); 0061 0062 Q_GLOBAL_STATIC(NetworkManager::NetworkManagerPrivate, globalNetworkManager) 0063 0064 NetworkManager::NetworkManagerPrivate::NetworkManagerPrivate() 0065 #ifdef NMQT_STATIC 0066 : watcher(DBUS_SERVICE, QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForUnregistration, this) 0067 , iface(NetworkManager::NetworkManagerPrivate::DBUS_SERVICE, NetworkManager::NetworkManagerPrivate::DBUS_DAEMON_PATH, QDBusConnection::sessionBus()) 0068 #else 0069 : watcher(DBUS_SERVICE, QDBusConnection::systemBus(), QDBusServiceWatcher::WatchForUnregistration, this) 0070 , iface(NetworkManager::NetworkManagerPrivate::DBUS_SERVICE, NetworkManager::NetworkManagerPrivate::DBUS_DAEMON_PATH, QDBusConnection::systemBus()) 0071 #endif 0072 , nmState(NetworkManager::Unknown) 0073 , m_connectivity(NetworkManager::UnknownConnectivity) 0074 , m_isNetworkingEnabled(false) 0075 , m_isWimaxEnabled(false) 0076 , m_isWimaxHardwareEnabled(false) 0077 , m_isWirelessEnabled(false) 0078 , m_isWirelessHardwareEnabled(false) 0079 , m_isWwanEnabled(false) 0080 , m_isWwanHardwareEnabled(false) 0081 , m_globalDnsConfiguration(NetworkManager::DnsConfiguration()) 0082 , m_supportedInterfaceTypes(NetworkManager::Device::UnknownType) 0083 { 0084 connect(&iface, &OrgFreedesktopNetworkManagerInterface::DeviceAdded, this, &NetworkManagerPrivate::onDeviceAdded); 0085 connect(&iface, &OrgFreedesktopNetworkManagerInterface::DeviceRemoved, this, &NetworkManagerPrivate::onDeviceRemoved); 0086 0087 #ifndef NMQT_STATIC 0088 QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, 0089 NetworkManagerPrivate::DBUS_DAEMON_PATH, 0090 NetworkManagerPrivate::FDO_DBUS_PROPERTIES, 0091 QLatin1String("PropertiesChanged"), 0092 this, 0093 SLOT(dbusPropertiesChanged(QString, QVariantMap, QStringList))); 0094 #else 0095 connect(&iface, &OrgFreedesktopNetworkManagerInterface::PropertiesChanged, this, &NetworkManagerPrivate::propertiesChanged); 0096 #endif 0097 0098 iface.connection().connect(NetworkManagerPrivate::DBUS_SERVICE, 0099 "/org/freedesktop", 0100 NetworkManagerPrivate::FDO_DBUS_OBJECT_MANAGER, 0101 QLatin1String("InterfacesAdded"), 0102 this, 0103 SLOT(dbusInterfacesAdded(QDBusObjectPath, QVariantMap))); 0104 0105 connect(&watcher, &QDBusServiceWatcher::serviceUnregistered, this, &NetworkManagerPrivate::daemonUnregistered); 0106 0107 init(); 0108 } 0109 0110 void NetworkManager::NetworkManagerPrivate::parseVersion(const QString &version) 0111 { 0112 const QStringList sl = version.split('.'); 0113 0114 if (sl.size() > 2) { 0115 m_x = sl[0].toInt(); 0116 m_y = sl[1].toInt(); 0117 m_z = sl[2].toInt(); 0118 } else { 0119 m_x = -1; 0120 m_y = -1; 0121 m_z = -1; 0122 } 0123 } 0124 0125 void NetworkManager::NetworkManagerPrivate::init() 0126 { 0127 qDBusRegisterMetaType<UIntList>(); 0128 qDBusRegisterMetaType<UIntListList>(); 0129 // qDBusRegisterMetaType<IpV6DBusAddress>(); 0130 // qDBusRegisterMetaType<IpV6DBusAddressList>(); 0131 // qDBusRegisterMetaType<IpV6DBusNameservers>(); 0132 // qDBusRegisterMetaType<IpV6DBusRoute>(); 0133 // qDBusRegisterMetaType<IpV6DBusRouteList>(); 0134 qDBusRegisterMetaType<QList<QDBusObjectPath>>(); 0135 qDBusRegisterMetaType<DeviceDBusStateReason>(); 0136 qDBusRegisterMetaType<NMVariantMapMap>(); 0137 qDBusRegisterMetaType<NMVariantMapList>(); 0138 qDBusRegisterMetaType<NMStringMap>(); 0139 0140 m_version = iface.version(); 0141 parseVersion(m_version); 0142 /* clang-format off */ 0143 m_supportedInterfaceTypes = static_cast<NetworkManager::Device::Types>( 0144 NetworkManager::Device::Ethernet 0145 | NetworkManager::Device::Wifi 0146 | NetworkManager::Device::Modem 0147 | (checkVersion(1, 2, 0) ? 0 : NetworkManager::Device::Wimax) 0148 | NetworkManager::Device::Bluetooth 0149 | NetworkManager::Device::OlpcMesh 0150 | NetworkManager::Device::InfiniBand 0151 | NetworkManager::Device::Bond 0152 | NetworkManager::Device::Vlan 0153 | NetworkManager::Device::Adsl 0154 | NetworkManager::Device::Bridge 0155 | NetworkManager::Device::Generic 0156 | NetworkManager::Device::Team 0157 | NetworkManager::Device::MacVlan 0158 | NetworkManager::Device::Tun 0159 | NetworkManager::Device::Veth 0160 | NetworkManager::Device::IpTunnel 0161 | NetworkManager::Device::WireGuard); 0162 /* clang-format on */ 0163 0164 // Get all Manager's properties async 0165 QVariantMap initialProperties = retrieveInitialProperties(iface.staticInterfaceName(), DBUS_DAEMON_PATH); 0166 if (!initialProperties.isEmpty()) { 0167 propertiesChanged(initialProperties); 0168 } 0169 0170 QTimer::singleShot(0, [] { 0171 qobject_cast<SettingsPrivate *>(settingsNotifier())->init(); 0172 }); 0173 0174 if (iface.isValid()) { 0175 const QList<QDBusObjectPath> devices = iface.devices(); 0176 qCDebug(NMQT) << "Device list"; 0177 for (const QDBusObjectPath &op : devices) { 0178 networkInterfaceMap.insert(op.path(), Device::Ptr()); 0179 Q_EMIT deviceAdded(op.path()); 0180 qCDebug(NMQT) << " " << op.path(); 0181 } 0182 } 0183 } 0184 0185 NetworkManager::NetworkManagerPrivate::~NetworkManagerPrivate() 0186 { 0187 } 0188 0189 QString NetworkManager::NetworkManagerPrivate::version() const 0190 { 0191 return m_version; 0192 } 0193 0194 int NetworkManager::NetworkManagerPrivate::compareVersion(const QString &version) 0195 { 0196 int x; 0197 int y; 0198 int z; 0199 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) 0200 const auto sl = QStringView(version).split('.'); 0201 #else 0202 const auto sl = version.splitRef('.'); 0203 #endif 0204 if (sl.size() > 2) { 0205 x = sl[0].toInt(); 0206 y = sl[1].toInt(); 0207 z = sl[2].toInt(); 0208 } else { 0209 x = -1; 0210 y = -1; 0211 z = -1; 0212 } 0213 0214 return compareVersion(x, y, z); 0215 } 0216 0217 int NetworkManager::NetworkManagerPrivate::compareVersion(const int x, const int y, const int z) const 0218 { 0219 if (m_x > x) { 0220 return 1; 0221 } else if (m_x < x) { 0222 return -1; 0223 } else if (m_y > y) { 0224 return 1; 0225 } else if (m_y < y) { 0226 return -1; 0227 } else if (m_z > z) { 0228 return 1; 0229 } else if (m_z < z) { 0230 return -1; 0231 } 0232 return 0; 0233 } 0234 0235 bool NetworkManager::NetworkManagerPrivate::checkVersion(const int x, const int y, const int z) const 0236 { 0237 return 0 <= compareVersion(x, y, z); 0238 } 0239 0240 NetworkManager::Device::Types NetworkManager::NetworkManagerPrivate::supportedInterfaceTypes() const 0241 { 0242 return m_supportedInterfaceTypes; 0243 } 0244 0245 QVariantMap NetworkManager::NetworkManagerPrivate::retrieveInitialProperties(const QString &interfaceName, const QString &path) 0246 { 0247 QDBusMessage message = QDBusMessage::createMethodCall(DBUS_SERVICE, path, FDO_DBUS_PROPERTIES, QLatin1String("GetAll")); 0248 message << interfaceName; 0249 #ifdef NMQT_STATIC 0250 QDBusMessage resultMessage = QDBusConnection::sessionBus().call(message); 0251 #else 0252 QDBusMessage resultMessage = QDBusConnection::systemBus().call(message); 0253 #endif 0254 if (resultMessage.type() == QDBusMessage::ReplyMessage) { 0255 QVariantMap result; 0256 QDBusArgument dbusArgument = resultMessage.arguments().at(0).value<QDBusArgument>(); 0257 while (!dbusArgument.atEnd()) { 0258 dbusArgument >> result; 0259 } 0260 return result; 0261 } 0262 0263 return QVariantMap(); 0264 } 0265 0266 NetworkManager::Device::Ptr NetworkManager::NetworkManagerPrivate::findRegisteredNetworkInterface(const QString &uni) 0267 { 0268 NetworkManager::Device::Ptr networkInterface; 0269 auto it = networkInterfaceMap.constFind(uni); 0270 if (it != networkInterfaceMap.constEnd()) { 0271 if (*it) { 0272 networkInterface = *it; 0273 } else { 0274 networkInterface = createNetworkInterface(uni); 0275 networkInterfaceMap[uni] = networkInterface; 0276 } 0277 } 0278 return networkInterface; 0279 } 0280 0281 NetworkManager::ActiveConnection::Ptr NetworkManager::NetworkManagerPrivate::findRegisteredActiveConnection(const QString &uni) 0282 { 0283 NetworkManager::ActiveConnection::Ptr activeConnection; 0284 if (!uni.isEmpty() && uni != QLatin1String("/")) { 0285 const auto it = m_activeConnections.constFind(uni); 0286 const bool contains = it != m_activeConnections.constEnd(); 0287 if (contains && *it) { 0288 activeConnection = *it; 0289 } else { 0290 activeConnection = NetworkManager::ActiveConnection::Ptr(new NetworkManager::VpnConnection(uni), &QObject::deleteLater); 0291 if (activeConnection->connection()) { 0292 m_activeConnections[uni] = activeConnection; 0293 if (!contains) { 0294 Q_EMIT activeConnectionAdded(uni); 0295 } 0296 } else { 0297 activeConnection.clear(); 0298 } 0299 } 0300 } 0301 return activeConnection; 0302 } 0303 0304 NetworkManager::Device::Ptr NetworkManager::NetworkManagerPrivate::createNetworkInterface(const QString &uni) 0305 { 0306 // qCDebug(NMQT); 0307 auto message = QDBusMessage::createMethodCall(DBUS_SERVICE, uni, FDO_DBUS_PROPERTIES, QStringLiteral("Get")); 0308 message.setArguments({QLatin1String(OrgFreedesktopNetworkManagerDeviceInterface::staticInterfaceName()), QStringLiteral("DeviceType")}); 0309 #ifdef NMQT_STATIC 0310 auto bus = QDBusConnection::sessionBus(); 0311 #else 0312 auto bus = QDBusConnection::systemBus(); 0313 #endif 0314 QDBusReply<QVariant> reply = bus.call(message); 0315 Device::Type type = reply.isValid() ? NetworkManager::DevicePrivate::convertType(reply.value().toInt()) : Device::UnknownType; 0316 switch (type) { 0317 case Device::Ethernet: 0318 return Device::Ptr(new NetworkManager::WiredDevice(uni), &QObject::deleteLater); 0319 case Device::Wifi: 0320 return Device::Ptr(new NetworkManager::WirelessDevice(uni), &QObject::deleteLater); 0321 case Device::Modem: 0322 return Device::Ptr(new NetworkManager::ModemDevice(uni), &QObject::deleteLater); 0323 case Device::Bluetooth: 0324 return Device::Ptr(new NetworkManager::BluetoothDevice(uni), &QObject::deleteLater); 0325 case Device::Wimax: 0326 return Device::Ptr(new NetworkManager::WimaxDevice(uni), &QObject::deleteLater); 0327 case Device::OlpcMesh: 0328 return Device::Ptr(new NetworkManager::OlpcMeshDevice(uni), &QObject::deleteLater); 0329 case Device::InfiniBand: 0330 return Device::Ptr(new NetworkManager::InfinibandDevice(uni), &QObject::deleteLater); 0331 case Device::Bond: 0332 return Device::Ptr(new NetworkManager::BondDevice(uni), &QObject::deleteLater); 0333 case Device::Vlan: 0334 return Device::Ptr(new NetworkManager::VlanDevice(uni), &QObject::deleteLater); 0335 case Device::Adsl: 0336 return Device::Ptr(new NetworkManager::AdslDevice(uni), &QObject::deleteLater); 0337 case Device::Bridge: 0338 return Device::Ptr(new NetworkManager::BridgeDevice(uni), &QObject::deleteLater); 0339 // No need to check checkVersion, because we can't get Generic, Gre, MacVlan, Tun & Veth values in incompatible runtime 0340 case Device::Generic: 0341 return Device::Ptr(new NetworkManager::GenericDevice(uni), &QObject::deleteLater); 0342 case Device::Gre: 0343 return Device::Ptr(new NetworkManager::GreDevice(uni), &QObject::deleteLater); 0344 case Device::MacVlan: 0345 return Device::Ptr(new NetworkManager::MacVlanDevice(uni), &QObject::deleteLater); 0346 case Device::Tun: 0347 return Device::Ptr(new NetworkManager::TunDevice(uni), &QObject::deleteLater); 0348 case Device::Veth: 0349 return Device::Ptr(new NetworkManager::VethDevice(uni), &QObject::deleteLater); 0350 case Device::IpTunnel: 0351 return Device::Ptr(new NetworkManager::IpTunnelDevice(uni), &QObject::deleteLater); 0352 case Device::WireGuard: 0353 return Device::Ptr(new NetworkManager::WireGuardDevice(uni), &QObject::deleteLater); 0354 default: 0355 if (uni != QLatin1String("any")) { // VPN connections use "any" as uni for the network interface. 0356 qCDebug(NMQT) << "Can't create device of type" << type << "for" << uni; 0357 } 0358 } 0359 0360 return Device::Ptr(new Device(uni), &QObject::deleteLater); 0361 } 0362 0363 NetworkManager::Status NetworkManager::NetworkManagerPrivate::status() const 0364 { 0365 return nmState; 0366 } 0367 0368 NetworkManager::Device::List NetworkManager::NetworkManagerPrivate::networkInterfaces() 0369 { 0370 Device::List list; 0371 0372 QMap<QString, Device::Ptr>::const_iterator i; 0373 for (i = networkInterfaceMap.constBegin(); i != networkInterfaceMap.constEnd(); ++i) { 0374 Device::Ptr networkInterface = findRegisteredNetworkInterface(i.key()); 0375 if (!networkInterface.isNull()) { 0376 list.append(networkInterface); 0377 } else { 0378 qCWarning(NMQT) << "warning: null network Interface for" << i.key(); 0379 } 0380 } 0381 0382 return list; 0383 } 0384 0385 NetworkManager::Device::Ptr NetworkManager::NetworkManagerPrivate::findDeviceByIpIface(const QString &iface) 0386 { 0387 QMap<QString, Device::Ptr>::const_iterator i; 0388 for (i = networkInterfaceMap.constBegin(); i != networkInterfaceMap.constEnd(); ++i) { 0389 Device::Ptr networkInterface = findRegisteredNetworkInterface(i.key()); 0390 if (networkInterface && networkInterface->udi() == iface) { 0391 return networkInterface; 0392 } 0393 } 0394 0395 return Device::Ptr(); 0396 } 0397 0398 bool NetworkManager::NetworkManagerPrivate::isNetworkingEnabled() const 0399 { 0400 return m_isNetworkingEnabled; 0401 } 0402 0403 bool NetworkManager::NetworkManagerPrivate::isWirelessEnabled() const 0404 { 0405 return m_isWirelessEnabled; 0406 } 0407 0408 bool NetworkManager::NetworkManagerPrivate::isWirelessHardwareEnabled() const 0409 { 0410 return m_isWirelessHardwareEnabled; 0411 } 0412 0413 bool NetworkManager::NetworkManagerPrivate::isWwanEnabled() const 0414 { 0415 return m_isWwanEnabled; 0416 } 0417 0418 bool NetworkManager::NetworkManagerPrivate::isWwanHardwareEnabled() const 0419 { 0420 return m_isWwanHardwareEnabled; 0421 } 0422 0423 bool NetworkManager::NetworkManagerPrivate::isWimaxEnabled() const 0424 { 0425 return checkVersion(1, 2, 0) ? false : m_isWimaxEnabled; 0426 } 0427 0428 bool NetworkManager::NetworkManagerPrivate::isWimaxHardwareEnabled() const 0429 { 0430 return checkVersion(1, 2, 0) ? false : m_isWimaxHardwareEnabled; 0431 } 0432 0433 QDBusPendingReply<QDBusObjectPath> 0434 NetworkManager::NetworkManagerPrivate::activateConnection(const QString &connectionUni, const QString &interfaceUni, const QString &connectionParameter) 0435 { 0436 QString extra_connection_parameter = connectionParameter; 0437 QString extra_interface_parameter = interfaceUni; 0438 if (extra_connection_parameter.isEmpty()) { 0439 extra_connection_parameter = QLatin1String("/"); 0440 } 0441 if (extra_interface_parameter.isEmpty()) { 0442 extra_interface_parameter = QLatin1String("/"); 0443 } 0444 // TODO store error code 0445 QDBusObjectPath connPath(connectionUni); 0446 QDBusObjectPath interfacePath(interfaceUni); 0447 // qCDebug(NMQT) << "Activating connection" << connPath.path() << "on interface" << interfacePath.path() << "with extra" << extra_connection_parameter; 0448 return iface.ActivateConnection(connPath, QDBusObjectPath(extra_interface_parameter), QDBusObjectPath(extra_connection_parameter)); 0449 } 0450 0451 QDBusPendingReply<QDBusObjectPath, QDBusObjectPath> NetworkManager::NetworkManagerPrivate::addAndActivateConnection(const NMVariantMapMap &connection, 0452 const QString &interfaceUni, 0453 const QString &connectionParameter) 0454 { 0455 QString extra_connection_parameter = connectionParameter; 0456 if (extra_connection_parameter.isEmpty()) { 0457 extra_connection_parameter = QLatin1String("/"); 0458 } 0459 // TODO store error code 0460 QDBusObjectPath interfacePath(interfaceUni); 0461 return iface.AddAndActivateConnection(connection, interfacePath, QDBusObjectPath(extra_connection_parameter)); 0462 } 0463 0464 QDBusPendingReply<QDBusObjectPath, QDBusObjectPath, QVariantMap> 0465 NetworkManager::NetworkManagerPrivate::addAndActivateConnection2(const NMVariantMapMap &connection, 0466 const QString &interfaceUni, 0467 const QString &connectionParameter, 0468 const QVariantMap &options) 0469 { 0470 QString extra_connection_parameter = connectionParameter; 0471 if (extra_connection_parameter.isEmpty()) { 0472 extra_connection_parameter = QLatin1String("/"); 0473 } 0474 // TODO store error code 0475 QDBusObjectPath interfacePath(interfaceUni); 0476 return iface.AddAndActivateConnection2(connection, interfacePath, QDBusObjectPath(extra_connection_parameter), options); 0477 } 0478 0479 QDBusPendingReply<> NetworkManager::NetworkManagerPrivate::deactivateConnection(const QString &activeConnectionPath) 0480 { 0481 return iface.DeactivateConnection(QDBusObjectPath(activeConnectionPath)); 0482 } 0483 0484 void NetworkManager::NetworkManagerPrivate::setNetworkingEnabled(bool enabled) 0485 { 0486 iface.Enable(enabled); 0487 } 0488 0489 void NetworkManager::NetworkManagerPrivate::setWirelessEnabled(bool enabled) 0490 { 0491 iface.setWirelessEnabled(enabled); 0492 } 0493 0494 void NetworkManager::NetworkManagerPrivate::setWwanEnabled(bool enabled) 0495 { 0496 iface.setWwanEnabled(enabled); 0497 } 0498 0499 void NetworkManager::NetworkManagerPrivate::setWimaxEnabled(bool enabled) 0500 { 0501 if (!checkVersion(1, 2, 0)) { 0502 iface.setWimaxEnabled(enabled); 0503 } 0504 } 0505 0506 void NetworkManager::NetworkManagerPrivate::sleep(bool sleep) 0507 { 0508 iface.Sleep(sleep); 0509 } 0510 0511 void NetworkManager::NetworkManagerPrivate::setLogging(NetworkManager::LogLevel level, NetworkManager::LogDomains domains) 0512 { 0513 QString logLevel; 0514 QStringList logDomains; 0515 switch (level) { 0516 case NetworkManager::Error: 0517 logLevel = QLatin1String("ERR"); 0518 break; 0519 case NetworkManager::Warning: 0520 logLevel = QLatin1String("WARN"); 0521 break; 0522 case NetworkManager::Info: 0523 logLevel = QLatin1String("INFO"); 0524 break; 0525 case NetworkManager::Debug: 0526 logLevel = QLatin1String("DEBUG"); 0527 break; 0528 case NetworkManager::Trace: 0529 logLevel = QLatin1String("TRACE"); 0530 break; 0531 } 0532 if (!domains.testFlag(NoChange)) { 0533 if (domains.testFlag(NetworkManager::None)) { 0534 logDomains << QLatin1String("NONE"); 0535 } 0536 if (domains.testFlag(NetworkManager::Hardware)) { 0537 logDomains << QLatin1String("PLATFORM"); 0538 } 0539 if (domains.testFlag(NetworkManager::RFKill)) { 0540 logDomains << QLatin1String("RFKILL"); 0541 } 0542 if (domains.testFlag(NetworkManager::Ethernet)) { 0543 logDomains << QLatin1String("ETHER"); 0544 } 0545 if (domains.testFlag(NetworkManager::WiFi)) { 0546 logDomains << QLatin1String("WIFI"); 0547 } 0548 if (domains.testFlag(NetworkManager::Bluetooth)) { 0549 logDomains << QLatin1String("BT"); 0550 } 0551 if (domains.testFlag(NetworkManager::MobileBroadBand)) { 0552 logDomains << QLatin1String("MB"); 0553 } 0554 if (domains.testFlag(NetworkManager::DHCP4)) { 0555 logDomains << QLatin1String("DHCP4"); 0556 } 0557 if (domains.testFlag(NetworkManager::DHCP6)) { 0558 logDomains << QLatin1String("DHCP6"); 0559 } 0560 if (domains.testFlag(NetworkManager::PPP)) { 0561 logDomains << QLatin1String("PPP"); 0562 } 0563 if (domains.testFlag(NetworkManager::WiFiScan)) { 0564 logDomains << QLatin1String("WIFI_SCAN"); 0565 } 0566 if (domains.testFlag(NetworkManager::IPv4)) { 0567 logDomains << QLatin1String("IP4"); 0568 } 0569 if (domains.testFlag(NetworkManager::IPv6)) { 0570 logDomains << QLatin1String("IP6"); 0571 } 0572 if (domains.testFlag(NetworkManager::AutoIPv4)) { 0573 logDomains << QLatin1String("AUTOIP4"); 0574 } 0575 if (domains.testFlag(NetworkManager::DNS)) { 0576 logDomains << QLatin1String("DNS"); 0577 } 0578 if (domains.testFlag(NetworkManager::VPN)) { 0579 logDomains << QLatin1String("VPN"); 0580 } 0581 if (domains.testFlag(NetworkManager::Sharing)) { 0582 logDomains << QLatin1String("SHARING"); 0583 } 0584 if (domains.testFlag(NetworkManager::Supplicant)) { 0585 logDomains << QLatin1String("SUPPLICANT"); 0586 } 0587 if (domains.testFlag(NetworkManager::UserSet)) { 0588 logDomains << QLatin1String("USER_SET"); 0589 } 0590 if (domains.testFlag(NetworkManager::SysSet)) { 0591 logDomains << QLatin1String("SYS_SET"); 0592 } 0593 if (domains.testFlag(NetworkManager::Suspend)) { 0594 logDomains << QLatin1String("SUSPEND"); 0595 } 0596 if (domains.testFlag(NetworkManager::Core)) { 0597 logDomains << QLatin1String("CORE"); 0598 } 0599 if (domains.testFlag(NetworkManager::Devices)) { 0600 logDomains << QLatin1String("DEVICE"); 0601 } 0602 if (domains.testFlag(NetworkManager::OLPC)) { 0603 logDomains << QLatin1String("OLPC"); 0604 } 0605 if (domains.testFlag(NetworkManager::Wimax)) { 0606 logDomains << QLatin1String("WIMAX"); 0607 } 0608 if (domains.testFlag(NetworkManager::Infiniband)) { 0609 logDomains << QLatin1String("INFINIBAND"); 0610 } 0611 if (domains.testFlag(NetworkManager::Firewall)) { 0612 logDomains << QLatin1String("FIREWALL"); 0613 } 0614 if (domains.testFlag(NetworkManager::Adsl)) { 0615 logDomains << QLatin1String("ADSL"); 0616 } 0617 if (domains.testFlag(NetworkManager::Bond)) { 0618 logDomains << QLatin1String("BOND"); 0619 } 0620 if (domains.testFlag(NetworkManager::Vlan)) { 0621 logDomains << QLatin1String("VLAN"); 0622 } 0623 if (domains.testFlag(NetworkManager::Agents)) { 0624 logDomains << QLatin1String("AGENTS"); 0625 } 0626 if (domains.testFlag(NetworkManager::Settings)) { 0627 logDomains << QLatin1String("SETTINGS"); 0628 } 0629 if (domains.testFlag(NetworkManager::DbusProps)) { 0630 logDomains << QLatin1String("DBUS_PROPS"); 0631 } 0632 if (domains.testFlag(NetworkManager::Team)) { 0633 logDomains << QLatin1String("TEAM"); 0634 } 0635 if (domains.testFlag(NetworkManager::ConCheck)) { 0636 logDomains << QLatin1String("CONCHECK"); 0637 } 0638 if (domains.testFlag(NetworkManager::Dcb)) { 0639 logDomains << QLatin1String("DCB"); 0640 } 0641 if (domains.testFlag(NetworkManager::Dispatch)) { 0642 logDomains << QLatin1String("DISPATCH"); 0643 } 0644 } 0645 iface.SetLogging(logLevel, logDomains.join(QLatin1Char(','))); 0646 } 0647 0648 NMStringMap NetworkManager::NetworkManagerPrivate::permissions() 0649 { 0650 return iface.GetPermissions(); 0651 } 0652 0653 NetworkManager::Connectivity NetworkManager::NetworkManagerPrivate::connectivity() const 0654 { 0655 return m_connectivity; 0656 } 0657 0658 QDBusPendingReply<uint> NetworkManager::NetworkManagerPrivate::checkConnectivity() 0659 { 0660 return iface.CheckConnectivity(); 0661 } 0662 0663 NetworkManager::ActiveConnection::Ptr NetworkManager::NetworkManagerPrivate::primaryConnection() 0664 { 0665 return findRegisteredActiveConnection(m_primaryConnection); 0666 } 0667 0668 NetworkManager::ActiveConnection::Ptr NetworkManager::NetworkManagerPrivate::activatingConnection() 0669 { 0670 return findRegisteredActiveConnection(m_activatingConnection); 0671 } 0672 0673 NetworkManager::ConnectionSettings::ConnectionType NetworkManager::NetworkManagerPrivate::primaryConnectionType() 0674 { 0675 return checkVersion(1, 0, 0) ? m_primaryConnectionType : NetworkManager::ConnectionSettings::Unknown; 0676 } 0677 0678 bool NetworkManager::NetworkManagerPrivate::isStartingUp() const 0679 { 0680 return iface.startup(); 0681 } 0682 0683 NetworkManager::Device::MeteredStatus NetworkManager::NetworkManagerPrivate::metered() const 0684 { 0685 return checkVersion(1, 0, 6) ? m_metered : NetworkManager::Device::UnknownStatus; 0686 } 0687 0688 NetworkManager::DnsConfiguration NetworkManager::NetworkManagerPrivate::globalDnsConfiguration() const 0689 { 0690 return m_globalDnsConfiguration; 0691 } 0692 0693 void NetworkManager::NetworkManagerPrivate::setGlobalDnsConfiguration(const NetworkManager::DnsConfiguration &configuration) 0694 { 0695 m_globalDnsConfiguration = configuration; 0696 iface.setGlobalDnsConfiguration(m_globalDnsConfiguration.toMap()); 0697 } 0698 0699 void NetworkManager::NetworkManagerPrivate::onDeviceAdded(const QDBusObjectPath &objpath) 0700 { 0701 // qCDebug(NMQT); 0702 if (!networkInterfaceMap.contains(objpath.path())) { 0703 networkInterfaceMap.insert(objpath.path(), Device::Ptr()); 0704 Q_EMIT deviceAdded(objpath.path()); 0705 } 0706 } 0707 0708 void NetworkManager::NetworkManagerPrivate::onDeviceRemoved(const QDBusObjectPath &objpath) 0709 { 0710 // qCDebug(NMQT); 0711 networkInterfaceMap.remove(objpath.path()); 0712 Q_EMIT deviceRemoved(objpath.path()); 0713 } 0714 0715 void NetworkManager::NetworkManagerPrivate::connectivityChanged(uint connectivity) 0716 { 0717 NetworkManager::Connectivity newConnectivity = convertConnectivity(connectivity); 0718 if (m_connectivity != newConnectivity) { 0719 m_connectivity = newConnectivity; 0720 Q_EMIT Notifier::connectivityChanged(newConnectivity); 0721 } 0722 } 0723 0724 void NetworkManager::NetworkManagerPrivate::stateChanged(uint state) 0725 { 0726 NetworkManager::Status newStatus = convertNMState(state); 0727 if (nmState != newStatus) { 0728 nmState = newStatus; 0729 Q_EMIT Notifier::statusChanged(newStatus); 0730 } 0731 } 0732 0733 void NetworkManager::NetworkManagerPrivate::dbusPropertiesChanged(const QString &interfaceName, 0734 const QVariantMap &properties, 0735 const QStringList &invalidatedProperties) 0736 { 0737 Q_UNUSED(invalidatedProperties); 0738 if (interfaceName == QLatin1String("org.freedesktop.NetworkManager")) { 0739 propertiesChanged(properties); 0740 } 0741 } 0742 0743 void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap &changedProperties) 0744 { 0745 // qCDebug(NMQT) << Q_FUNC_INFO << changedProperties; 0746 0747 QVariantMap::const_iterator it = changedProperties.constBegin(); 0748 while (it != changedProperties.constEnd()) { 0749 const QString property = it.key(); 0750 if (property == QLatin1String("ActiveConnections")) { 0751 const QList<QDBusObjectPath> activePaths = qdbus_cast<QList<QDBusObjectPath>>(*it); 0752 if (activePaths.isEmpty()) { 0753 QMap<QString, ActiveConnection::Ptr>::const_iterator it = m_activeConnections.constBegin(); 0754 while (it != m_activeConnections.constEnd()) { 0755 Q_EMIT activeConnectionRemoved(it.key()); 0756 ++it; 0757 } 0758 m_activeConnections.clear(); 0759 } else { 0760 QStringList knownConnections = m_activeConnections.keys(); 0761 for (const QDBusObjectPath &ac : activePaths) { 0762 if (!m_activeConnections.contains(ac.path())) { 0763 m_activeConnections.insert(ac.path(), NetworkManager::ActiveConnection::Ptr()); 0764 Q_EMIT activeConnectionAdded(ac.path()); 0765 } else { 0766 knownConnections.removeOne(ac.path()); 0767 } 0768 // qCDebug(NMQT) << " " << ac.path(); 0769 } 0770 for (const QString &path : std::as_const(knownConnections)) { 0771 m_activeConnections.remove(path); 0772 Q_EMIT activeConnectionRemoved(path); 0773 } 0774 } 0775 Q_EMIT activeConnectionsChanged(); 0776 } else if (property == QLatin1String("NetworkingEnabled")) { 0777 m_isNetworkingEnabled = it->toBool(); 0778 qCDebug(NMQT) << property << m_isNetworkingEnabled; 0779 Q_EMIT networkingEnabledChanged(m_isNetworkingEnabled); 0780 } else if (property == QLatin1String("WirelessHardwareEnabled")) { 0781 m_isWirelessHardwareEnabled = it->toBool(); 0782 qCDebug(NMQT) << property << m_isWirelessHardwareEnabled; 0783 Q_EMIT wirelessHardwareEnabledChanged(m_isWirelessHardwareEnabled); 0784 } else if (property == QLatin1String("WirelessEnabled")) { 0785 m_isWirelessEnabled = it->toBool(); 0786 qCDebug(NMQT) << property << m_isWirelessEnabled; 0787 Q_EMIT wirelessEnabledChanged(m_isWirelessEnabled); 0788 } else if (property == QLatin1String("WwanHardwareEnabled")) { 0789 m_isWwanHardwareEnabled = it->toBool(); 0790 qCDebug(NMQT) << property << m_isWwanHardwareEnabled; 0791 Q_EMIT wwanHardwareEnabledChanged(m_isWwanHardwareEnabled); 0792 } else if (property == QLatin1String("WwanEnabled")) { 0793 m_isWwanEnabled = it->toBool(); 0794 qCDebug(NMQT) << property << m_isWwanEnabled; 0795 Q_EMIT wwanEnabledChanged(m_isWwanEnabled); 0796 } else if (property == QLatin1String("WimaxHardwareEnabled")) { 0797 m_isWimaxHardwareEnabled = it->toBool(); 0798 qCDebug(NMQT) << property << m_isWimaxHardwareEnabled; 0799 Q_EMIT wimaxHardwareEnabledChanged(m_isWimaxHardwareEnabled); 0800 } else if (property == QLatin1String("WimaxEnabled")) { 0801 m_isWimaxEnabled = it->toBool(); 0802 qCDebug(NMQT) << property << m_isWimaxEnabled; 0803 Q_EMIT wimaxEnabledChanged(m_isWimaxEnabled); 0804 } else if (property == QLatin1String("Version")) { 0805 m_version = it->toString(); 0806 parseVersion(m_version); 0807 } else if (property == QLatin1String("State")) { 0808 stateChanged(it->toUInt()); 0809 } else if (property == QLatin1String("Connectivity")) { 0810 connectivityChanged(it->toUInt()); 0811 } else if (property == QLatin1String("PrimaryConnection")) { 0812 m_primaryConnection = it->value<QDBusObjectPath>().path(); 0813 Q_EMIT primaryConnectionChanged(m_primaryConnection); 0814 } else if (property == QLatin1String("ActivatingConnection")) { 0815 m_activatingConnection = it->value<QDBusObjectPath>().path(); 0816 Q_EMIT activatingConnectionChanged(m_activatingConnection); 0817 } else if (property == QLatin1String("PrimaryConnectionType")) { 0818 m_primaryConnectionType = NetworkManager::ConnectionSettings::typeFromString(it->toString()); 0819 Q_EMIT primaryConnectionTypeChanged(m_primaryConnectionType); 0820 } else if (property == QLatin1String("Startup")) { 0821 Q_EMIT isStartingUpChanged(); 0822 } else if (property == QLatin1String("Metered")) { 0823 m_metered = (NetworkManager::Device::MeteredStatus)it->toUInt(); 0824 Q_EMIT meteredChanged(m_metered); 0825 } else if (property == QLatin1String("GlobalDnsConfiguration")) { 0826 m_globalDnsConfiguration.fromMap(qdbus_cast<QVariantMap>(*it)); 0827 Q_EMIT globalDnsConfigurationChanged(m_globalDnsConfiguration); 0828 } else { 0829 qCDebug(NMQT) << Q_FUNC_INFO << "Unhandled property" << property; 0830 } 0831 ++it; 0832 } 0833 } 0834 0835 NetworkManager::Connectivity NetworkManager::NetworkManagerPrivate::convertConnectivity(uint connectivity) 0836 { 0837 NetworkManager::Connectivity convertedConnectivity = NetworkManager::UnknownConnectivity; 0838 switch (connectivity) { 0839 case NM_CONNECTIVITY_UNKNOWN: 0840 convertedConnectivity = NetworkManager::UnknownConnectivity; 0841 break; 0842 case NM_CONNECTIVITY_NONE: 0843 convertedConnectivity = NetworkManager::NoConnectivity; 0844 break; 0845 case NM_CONNECTIVITY_PORTAL: 0846 convertedConnectivity = NetworkManager::Portal; 0847 break; 0848 case NM_CONNECTIVITY_LIMITED: 0849 convertedConnectivity = NetworkManager::Limited; 0850 break; 0851 case NM_CONNECTIVITY_FULL: 0852 convertedConnectivity = NetworkManager::Full; 0853 break; 0854 } 0855 return convertedConnectivity; 0856 } 0857 0858 NetworkManager::Status NetworkManager::NetworkManagerPrivate::convertNMState(uint state) 0859 { 0860 NetworkManager::Status status = NetworkManager::Unknown; 0861 switch (state) { 0862 case NM_STATE_UNKNOWN: 0863 status = NetworkManager::Unknown; 0864 break; 0865 case NM_STATE_ASLEEP: 0866 status = NetworkManager::Asleep; 0867 break; 0868 case NM_STATE_DISCONNECTED: 0869 status = NetworkManager::Disconnected; 0870 break; 0871 case NM_STATE_DISCONNECTING: 0872 status = NetworkManager::Disconnecting; 0873 break; 0874 case NM_STATE_CONNECTING: 0875 status = NetworkManager::Connecting; 0876 break; 0877 case NM_STATE_CONNECTED_LOCAL: 0878 status = NetworkManager::ConnectedLinkLocal; 0879 break; 0880 case NM_STATE_CONNECTED_SITE: 0881 status = NetworkManager::ConnectedSiteOnly; 0882 break; 0883 case NM_STATE_CONNECTED_GLOBAL: 0884 status = NetworkManager::Connected; 0885 break; 0886 } 0887 return status; 0888 } 0889 0890 void NetworkManager::NetworkManagerPrivate::dbusInterfacesAdded(const QDBusObjectPath &path, const QVariantMap &addedInterfaces) 0891 { 0892 Q_UNUSED(path); 0893 0894 if (!addedInterfaces.contains(NetworkManagerPrivate::DBUS_DAEMON_INTERFACE)) { 0895 return; 0896 } 0897 0898 init(); 0899 Q_EMIT serviceAppeared(); 0900 } 0901 0902 void NetworkManager::NetworkManagerPrivate::daemonUnregistered() 0903 { 0904 stateChanged(NM_STATE_UNKNOWN); 0905 QMap<QString, Device::Ptr>::const_iterator i = networkInterfaceMap.constBegin(); 0906 while (i != networkInterfaceMap.constEnd()) { 0907 Q_EMIT deviceRemoved(i.key()); 0908 ++i; 0909 } 0910 networkInterfaceMap.clear(); 0911 0912 QMap<QString, ActiveConnection::Ptr>::const_iterator it = m_activeConnections.constBegin(); 0913 while (it != m_activeConnections.constEnd()) { 0914 Q_EMIT activeConnectionRemoved(it.key()); 0915 ++it; 0916 } 0917 m_activeConnections.clear(); 0918 0919 qobject_cast<SettingsPrivate *>(settingsNotifier())->daemonUnregistered(); 0920 0921 Q_EMIT activeConnectionsChanged(); 0922 Q_EMIT serviceDisappeared(); 0923 } 0924 0925 NetworkManager::ActiveConnection::List NetworkManager::NetworkManagerPrivate::activeConnections() 0926 { 0927 NetworkManager::ActiveConnection::List list; 0928 0929 // Take a copy because findRegisteredActiveConnection() may change m_activeConnections. 0930 const QStringList keyList = m_activeConnections.keys(); 0931 for (const QString &key : keyList) { 0932 NetworkManager::ActiveConnection::Ptr activeConnection = findRegisteredActiveConnection(key); 0933 0934 if (activeConnection) { 0935 list << activeConnection; 0936 } 0937 } 0938 return list; 0939 } 0940 0941 QStringList NetworkManager::NetworkManagerPrivate::activeConnectionsPaths() const 0942 { 0943 return m_activeConnections.keys(); 0944 } 0945 0946 QDBusPendingReply<QString, QString> NetworkManager::NetworkManagerPrivate::getLogging() 0947 { 0948 return iface.GetLogging(); 0949 } 0950 0951 QString NetworkManager::version() 0952 { 0953 return globalNetworkManager->version(); 0954 } 0955 0956 int NetworkManager::compareVersion(const QString &version) 0957 { 0958 return globalNetworkManager->compareVersion(version); 0959 } 0960 0961 int NetworkManager::compareVersion(const int x, const int y, const int z) 0962 { 0963 return globalNetworkManager->compareVersion(x, y, z); 0964 } 0965 0966 bool NetworkManager::checkVersion(const int x, const int y, const int z) 0967 { 0968 return globalNetworkManager->checkVersion(x, y, z); 0969 } 0970 0971 NetworkManager::Status NetworkManager::status() 0972 { 0973 return globalNetworkManager->status(); 0974 } 0975 0976 NetworkManager::ActiveConnection::List NetworkManager::activeConnections() 0977 { 0978 return globalNetworkManager->activeConnections(); 0979 } 0980 0981 QStringList NetworkManager::activeConnectionsPaths() 0982 { 0983 return globalNetworkManager->activeConnectionsPaths(); 0984 } 0985 0986 NetworkManager::ActiveConnection::Ptr NetworkManager::findActiveConnection(const QString &uni) 0987 { 0988 return globalNetworkManager->findRegisteredActiveConnection(uni); 0989 } 0990 0991 NetworkManager::Device::List NetworkManager::networkInterfaces() 0992 { 0993 return globalNetworkManager->networkInterfaces(); 0994 } 0995 0996 bool NetworkManager::isNetworkingEnabled() 0997 { 0998 return globalNetworkManager->isNetworkingEnabled(); 0999 } 1000 1001 bool NetworkManager::isWirelessEnabled() 1002 { 1003 return globalNetworkManager->isWirelessEnabled(); 1004 } 1005 1006 bool NetworkManager::isWirelessHardwareEnabled() 1007 { 1008 return globalNetworkManager->isWirelessHardwareEnabled(); 1009 } 1010 1011 NetworkManager::Device::Ptr NetworkManager::findNetworkInterface(const QString &uni) 1012 { 1013 return globalNetworkManager->findRegisteredNetworkInterface(uni); 1014 } 1015 1016 NetworkManager::Device::Ptr NetworkManager::findDeviceByIpFace(const QString &iface) 1017 { 1018 return globalNetworkManager->findDeviceByIpIface(iface); 1019 } 1020 1021 QDBusPendingReply<QDBusObjectPath, QDBusObjectPath> 1022 NetworkManager::addAndActivateConnection(const NMVariantMapMap &connection, const QString &interfaceUni, const QString &connectionParameter) 1023 { 1024 return globalNetworkManager->addAndActivateConnection(connection, interfaceUni, connectionParameter); 1025 } 1026 1027 QDBusPendingReply<QDBusObjectPath, QDBusObjectPath, QVariantMap> NetworkManager::addAndActivateConnection2(const NMVariantMapMap &connection, 1028 const QString &interfaceUni, 1029 const QString &connectionParameter, 1030 const QVariantMap &options) 1031 { 1032 if (checkVersion(1, 16, 0)) { 1033 return globalNetworkManager->addAndActivateConnection2(connection, interfaceUni, connectionParameter, options); 1034 } else { 1035 return globalNetworkManager->addAndActivateConnection(connection, interfaceUni, connectionParameter); 1036 } 1037 } 1038 1039 QDBusPendingReply<QDBusObjectPath> 1040 NetworkManager::activateConnection(const QString &connectionUni, const QString &interfaceUni, const QString &connectionParameter) 1041 { 1042 return globalNetworkManager->activateConnection(connectionUni, interfaceUni, connectionParameter); 1043 } 1044 1045 QDBusPendingReply<> NetworkManager::deactivateConnection(const QString &activeConnectionPath) 1046 { 1047 return globalNetworkManager->deactivateConnection(activeConnectionPath); 1048 } 1049 1050 QDBusPendingReply<QString, QString> NetworkManager::getLogging() 1051 { 1052 return globalNetworkManager->getLogging(); 1053 } 1054 1055 void NetworkManager::setNetworkingEnabled(bool enabled) 1056 { 1057 globalNetworkManager->setNetworkingEnabled(enabled); 1058 } 1059 1060 void NetworkManager::setWirelessEnabled(bool enabled) 1061 { 1062 globalNetworkManager->setWirelessEnabled(enabled); 1063 } 1064 1065 bool NetworkManager::isWwanEnabled() 1066 { 1067 return globalNetworkManager->isWwanEnabled(); 1068 } 1069 1070 bool NetworkManager::isWwanHardwareEnabled() 1071 { 1072 return globalNetworkManager->isWwanHardwareEnabled(); 1073 } 1074 1075 void NetworkManager::setWwanEnabled(bool enabled) 1076 { 1077 globalNetworkManager->setWwanEnabled(enabled); 1078 } 1079 1080 bool NetworkManager::isWimaxEnabled() 1081 { 1082 return globalNetworkManager->isWimaxEnabled(); 1083 } 1084 1085 bool NetworkManager::isWimaxHardwareEnabled() 1086 { 1087 return globalNetworkManager->isWimaxHardwareEnabled(); 1088 } 1089 1090 void NetworkManager::setWimaxEnabled(bool enabled) 1091 { 1092 globalNetworkManager->setWimaxEnabled(enabled); 1093 } 1094 1095 void NetworkManager::sleep(bool sleep) 1096 { 1097 globalNetworkManager->sleep(sleep); 1098 } 1099 1100 void NetworkManager::setLogging(NetworkManager::LogLevel level, NetworkManager::LogDomains domains) 1101 { 1102 globalNetworkManager->setLogging(level, domains); 1103 } 1104 1105 NMStringMap NetworkManager::permissions() 1106 { 1107 return globalNetworkManager->permissions(); 1108 } 1109 1110 NetworkManager::Device::Types NetworkManager::supportedInterfaceTypes() 1111 { 1112 return globalNetworkManager->supportedInterfaceTypes(); 1113 } 1114 1115 NetworkManager::Connectivity NetworkManager::connectivity() 1116 { 1117 return globalNetworkManager->connectivity(); 1118 } 1119 1120 QDBusPendingReply<uint> NetworkManager::checkConnectivity() 1121 { 1122 return globalNetworkManager->checkConnectivity(); 1123 } 1124 1125 NetworkManager::ActiveConnection::Ptr NetworkManager::primaryConnection() 1126 { 1127 return globalNetworkManager->primaryConnection(); 1128 } 1129 1130 NetworkManager::ActiveConnection::Ptr NetworkManager::activatingConnection() 1131 { 1132 return globalNetworkManager->activatingConnection(); 1133 } 1134 1135 NetworkManager::ConnectionSettings::ConnectionType NetworkManager::primaryConnectionType() 1136 { 1137 return globalNetworkManager->primaryConnectionType(); 1138 } 1139 1140 bool NetworkManager::isStartingUp() 1141 { 1142 return globalNetworkManager->isStartingUp(); 1143 } 1144 1145 NetworkManager::Device::MeteredStatus NetworkManager::metered() 1146 { 1147 return globalNetworkManager->metered(); 1148 } 1149 1150 NetworkManager::DnsConfiguration NetworkManager::globalDnsConfiguration() 1151 { 1152 return globalNetworkManager->globalDnsConfiguration(); 1153 } 1154 1155 void NetworkManager::setGlobalDnsConfiguration(const NetworkManager::DnsConfiguration &configuration) 1156 { 1157 globalNetworkManager->setGlobalDnsConfiguration(configuration); 1158 } 1159 1160 NetworkManager::Notifier *NetworkManager::notifier() 1161 { 1162 return globalNetworkManager; 1163 }