9#include "connectionsettings.h"
10#include "connectionsettings_p.h"
12#include "adslsetting.h"
13#include "bluetoothsetting.h"
14#include "bondsetting.h"
15#include "bridgeportsetting.h"
16#include "bridgesetting.h"
17#include "cdmasetting.h"
18#include "gsmsetting.h"
19#include "infinibandsetting.h"
20#include "iptunnelsetting.h"
21#include "ipv4setting.h"
22#include "ipv6setting.h"
23#include "olpcmeshsetting.h"
24#include "pppoesetting.h"
25#include "pppsetting.h"
26#include "security8021xsetting.h"
27#include "serialsetting.h"
28#include "tunsetting.h"
29#include "vlansetting.h"
30#include "vpnsetting.h"
31#include "wimaxsetting.h"
32#include "wiredsetting.h"
33#include "wireguardsetting.h"
34#include "wirelesssecuritysetting.h"
35#include "wirelesssetting.h"
39#if !NM_CHECK_VERSION(1, 6, 0)
40#define NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES "autoconnect-retries"
43#if !NM_CHECK_VERSION(1, 12, 0)
44#define NM_SETTING_CONNECTION_MDNS "mdns"
47#if !NM_CHECK_VERSION(1, 16, 0)
48#define NM_SETTING_WIREGUARD_SETTING_NAME "wireguard"
51#include "genericsetting.h"
52#include "teamsetting.h"
58extern bool checkVersion(
const int x,
const int y,
const int z);
61NetworkManager::ConnectionSettingsPrivate::ConnectionSettingsPrivate(ConnectionSettings *q)
62 : name(NM_SETTING_CONNECTION_SETTING_NAME)
64 ,
type(ConnectionSettings::Wired)
67 , gatewayPingTimeout(0)
68 , autoconnectPriority(0)
69 , autoconnectRetries(-1)
70 , autoconnectSlaves(ConnectionSettings::SlavesDefault)
71 , lldp(ConnectionSettings::LldpDefault)
72 ,
metered(ConnectionSettings::MeteredUnknown)
73 , mdns(ConnectionSettings::MdnsDefault)
80 settings.push_back(setting);
83void NetworkManager::ConnectionSettingsPrivate::clearSettings()
88void NetworkManager::ConnectionSettingsPrivate::initSettings(NMBluetoothCapabilities bt_cap)
93 case ConnectionSettings::Adsl:
94 addSetting(Setting::Ptr(
new AdslSetting()));
95 addSetting(Setting::Ptr(
new Ipv4Setting()));
96 addSetting(Setting::Ptr(
new Ipv6Setting()));
98 case ConnectionSettings::Bond:
99 addSetting(Setting::Ptr(
new BondSetting()));
100 addSetting(Setting::Ptr(
new Ipv4Setting()));
101 addSetting(Setting::Ptr(
new Ipv6Setting()));
103 case ConnectionSettings::Bluetooth:
104 addSetting(Setting::Ptr(
new BluetoothSetting()));
105 addSetting(Setting::Ptr(
new Ipv4Setting()));
107 if (bt_cap == NM_BT_CAPABILITY_DUN) {
108 addSetting(Setting::Ptr(
new GsmSetting()));
109 addSetting(Setting::Ptr(
new PppSetting()));
110 addSetting(Setting::Ptr(
new SerialSetting()));
113 case ConnectionSettings::Bridge:
114 addSetting(Setting::Ptr(
new BridgeSetting()));
115 addSetting(Setting::Ptr(
new Ipv4Setting()));
116 addSetting(Setting::Ptr(
new Ipv6Setting()));
118 case ConnectionSettings::Cdma:
119 addSetting(Setting::Ptr(
new CdmaSetting()));
120 addSetting(Setting::Ptr(
new Ipv4Setting()));
122 addSetting(Setting::Ptr(
new Ipv6Setting()));
124 addSetting(Setting::Ptr(
new PppSetting()));
126 case ConnectionSettings::Gsm:
127 addSetting(Setting::Ptr(
new GsmSetting()));
128 addSetting(Setting::Ptr(
new Ipv4Setting()));
130 addSetting(Setting::Ptr(
new Ipv6Setting()));
132 addSetting(Setting::Ptr(
new PppSetting()));
134 case ConnectionSettings::Infiniband:
135 addSetting(Setting::Ptr(
new InfinibandSetting()));
136 addSetting(Setting::Ptr(
new Ipv4Setting()));
137 addSetting(Setting::Ptr(
new Ipv6Setting()));
139 case ConnectionSettings::OLPCMesh:
140 addSetting(Setting::Ptr(
new Ipv4Setting()));
141 addSetting(Setting::Ptr(
new Ipv6Setting()));
142 addSetting(Setting::Ptr(
new OlpcMeshSetting()));
144 case ConnectionSettings::Pppoe:
145 addSetting(Setting::Ptr(
new Ipv4Setting()));
147 addSetting(Setting::Ptr(
new PppSetting()));
148 addSetting(Setting::Ptr(
new PppoeSetting()));
149 addSetting(Setting::Ptr(
new WiredSetting()));
151 case ConnectionSettings::Vlan:
152 addSetting(Setting::Ptr(
new Ipv4Setting()));
153 addSetting(Setting::Ptr(
new Ipv6Setting()));
154 addSetting(Setting::Ptr(
new VlanSetting()));
156 case ConnectionSettings::Vpn:
157 addSetting(Setting::Ptr(
new Ipv4Setting()));
158 addSetting(Setting::Ptr(
new Ipv6Setting()));
159 addSetting(Setting::Ptr(
new VpnSetting()));
161 case ConnectionSettings::Wimax:
162 addSetting(Setting::Ptr(
new Ipv4Setting()));
163 addSetting(Setting::Ptr(
new Ipv6Setting()));
164 addSetting(Setting::Ptr(
new WimaxSetting()));
166 case ConnectionSettings::Wired:
167 addSetting(Setting::Ptr(
new Ipv4Setting()));
168 addSetting(Setting::Ptr(
new Ipv6Setting()));
169 addSetting(Setting::Ptr(
new Security8021xSetting()));
170 addSetting(Setting::Ptr(
new WiredSetting()));
172 case ConnectionSettings::Wireless:
173 addSetting(Setting::Ptr(
new Ipv4Setting()));
174 addSetting(Setting::Ptr(
new Ipv6Setting()));
175 addSetting(Setting::Ptr(
new Security8021xSetting()));
176 addSetting(Setting::Ptr(
new WirelessSetting()));
177 addSetting(Setting::Ptr(
new WirelessSecuritySetting()));
179 case ConnectionSettings::Team:
180 addSetting(Setting::Ptr(
new TeamSetting()));
181 addSetting(Setting::Ptr(
new Ipv4Setting()));
182 addSetting(Setting::Ptr(
new Ipv6Setting()));
184 case ConnectionSettings::Generic:
185 addSetting(Setting::Ptr(
new GenericSetting()));
186 addSetting(Setting::Ptr(
new Ipv4Setting()));
187 addSetting(Setting::Ptr(
new Ipv6Setting()));
189 case ConnectionSettings::Tun:
190 addSetting(Setting::Ptr(
new TunSetting()));
191 addSetting(Setting::Ptr(
new Ipv4Setting()));
192 addSetting(Setting::Ptr(
new Ipv6Setting()));
194 case ConnectionSettings::IpTunnel:
195 addSetting(Setting::Ptr(
new IpTunnelSetting()));
196 addSetting(Setting::Ptr(
new Ipv4Setting()));
197 addSetting(Setting::Ptr(
new Ipv6Setting()));
199 case ConnectionSettings::WireGuard:
200 addSetting(Setting::Ptr(
new WireGuardSetting()));
201 addSetting(Setting::Ptr(
new Ipv4Setting()));
202 addSetting(Setting::Ptr(
new Ipv6Setting()));
204 case ConnectionSettings::Unknown:
212 Q_Q(ConnectionSettings);
217 case ConnectionSettings::Adsl:
218 addSetting(connectionSettings->setting(Setting::Adsl));
219 addSetting(connectionSettings->setting(Setting::Ipv4));
220 addSetting(connectionSettings->setting(Setting::Ipv6));
222 case ConnectionSettings::Bond:
223 addSetting(connectionSettings->setting(Setting::Bond));
224 addSetting(connectionSettings->setting(Setting::Ipv4));
225 addSetting(connectionSettings->setting(Setting::Ipv6));
227 case ConnectionSettings::Bluetooth:
228 addSetting(connectionSettings->setting(Setting::Bluetooth));
229 addSetting(connectionSettings->setting(Setting::Ipv4));
231 addSetting(connectionSettings->setting(Setting::Ipv6));
233 if (q->setting(Setting::Gsm) && q->setting(Setting::Ppp) && q->setting(Setting::Serial)) {
234 addSetting(connectionSettings->setting(Setting::Gsm));
235 addSetting(connectionSettings->setting(Setting::Ppp));
236 addSetting(connectionSettings->setting(Setting::Serial));
239 case ConnectionSettings::Bridge:
240 addSetting(connectionSettings->setting(Setting::Bridge));
241 addSetting(connectionSettings->setting(Setting::Ipv4));
242 addSetting(connectionSettings->setting(Setting::Ipv6));
244 case ConnectionSettings::Cdma:
245 addSetting(connectionSettings->setting(Setting::Cdma));
246 addSetting(connectionSettings->setting(Setting::Ipv4));
248 addSetting(connectionSettings->setting(Setting::Ipv6));
250 addSetting(connectionSettings->setting(Setting::Ppp));
252 case ConnectionSettings::Gsm:
253 addSetting(connectionSettings->setting(Setting::Gsm));
254 addSetting(connectionSettings->setting(Setting::Ipv4));
256 addSetting(connectionSettings->setting(Setting::Ipv6));
258 addSetting(connectionSettings->setting(Setting::Ppp));
260 case ConnectionSettings::Infiniband:
261 addSetting(connectionSettings->setting(Setting::Infiniband));
262 addSetting(connectionSettings->setting(Setting::Ipv4));
263 addSetting(connectionSettings->setting(Setting::Ipv6));
265 case ConnectionSettings::OLPCMesh:
266 addSetting(connectionSettings->setting(Setting::Ipv4));
267 addSetting(connectionSettings->setting(Setting::Ipv6));
268 addSetting(connectionSettings->setting(Setting::OlpcMesh));
270 case ConnectionSettings::Pppoe:
271 addSetting(connectionSettings->setting(Setting::Ipv4));
273 addSetting(connectionSettings->setting(Setting::Ppp));
274 addSetting(connectionSettings->setting(Setting::Pppoe));
275 addSetting(connectionSettings->setting(Setting::Wired));
277 case ConnectionSettings::Vlan:
278 addSetting(connectionSettings->setting(Setting::Ipv4));
279 addSetting(connectionSettings->setting(Setting::Ipv6));
280 addSetting(connectionSettings->setting(Setting::Vlan));
282 case ConnectionSettings::Vpn:
283 addSetting(connectionSettings->setting(Setting::Ipv4));
284 addSetting(connectionSettings->setting(Setting::Ipv6));
285 addSetting(connectionSettings->setting(Setting::Vpn));
287 case ConnectionSettings::Wimax:
288 addSetting(connectionSettings->setting(Setting::Ipv4));
289 addSetting(connectionSettings->setting(Setting::Ipv6));
290 addSetting(connectionSettings->setting(Setting::Wimax));
292 case ConnectionSettings::Wired:
293 addSetting(connectionSettings->setting(Setting::Ipv4));
294 addSetting(connectionSettings->setting(Setting::Ipv6));
295 addSetting(connectionSettings->setting(Setting::Security8021x));
296 addSetting(connectionSettings->setting(Setting::Wired));
298 case ConnectionSettings::Wireless:
299 addSetting(connectionSettings->setting(Setting::Ipv4));
300 addSetting(connectionSettings->setting(Setting::Ipv6));
301 addSetting(connectionSettings->setting(Setting::Security8021x));
302 addSetting(connectionSettings->setting(Setting::Wireless));
303 addSetting(connectionSettings->setting(Setting::WirelessSecurity));
305 case ConnectionSettings::Team:
306 addSetting(connectionSettings->setting(Setting::Team));
307 addSetting(connectionSettings->setting(Setting::Ipv4));
308 addSetting(connectionSettings->setting(Setting::Ipv6));
310 case ConnectionSettings::Generic:
311 addSetting(connectionSettings->setting(Setting::Generic));
312 addSetting(connectionSettings->setting(Setting::Ipv4));
313 addSetting(connectionSettings->setting(Setting::Ipv6));
315 case ConnectionSettings::Tun:
316 addSetting(connectionSettings->setting(Setting::Tun));
317 addSetting(connectionSettings->setting(Setting::Ipv4));
318 addSetting(connectionSettings->setting(Setting::Ipv6));
320 case ConnectionSettings::IpTunnel:
321 addSetting(connectionSettings->setting(Setting::IpTunnel));
322 addSetting(connectionSettings->setting(Setting::Ipv4));
323 addSetting(connectionSettings->setting(Setting::Ipv6));
325 case ConnectionSettings::WireGuard:
326 addSetting(connectionSettings->setting(Setting::WireGuard));
327 addSetting(connectionSettings->setting(Setting::Ipv4));
328 addSetting(connectionSettings->setting(Setting::Ipv6));
330 case ConnectionSettings::Unknown:
336NetworkManager::ConnectionSettings::ConnectionType NetworkManager::ConnectionSettings::typeFromString(
const QString &typeString)
338 ConnectionSettings::ConnectionType
type = Wired;
340 if (typeString ==
QLatin1String(NM_SETTING_ADSL_SETTING_NAME)) {
342 }
else if (typeString ==
QLatin1String(NM_SETTING_BLUETOOTH_SETTING_NAME)) {
344 }
else if (typeString ==
QLatin1String(NM_SETTING_BOND_SETTING_NAME)) {
346 }
else if (typeString ==
QLatin1String(NM_SETTING_BRIDGE_SETTING_NAME)) {
348 }
else if (typeString ==
QLatin1String(NM_SETTING_CDMA_SETTING_NAME)) {
350 }
else if (typeString ==
QLatin1String(NM_SETTING_GSM_SETTING_NAME)) {
352 }
else if (typeString ==
QLatin1String(NM_SETTING_INFINIBAND_SETTING_NAME)) {
354 }
else if (typeString ==
QLatin1String(NM_SETTING_OLPC_MESH_SETTING_NAME)) {
356 }
else if (typeString ==
QLatin1String(NM_SETTING_PPPOE_SETTING_NAME)) {
358 }
else if (typeString ==
QLatin1String(NM_SETTING_VLAN_SETTING_NAME)) {
360 }
else if (typeString ==
QLatin1String(NM_SETTING_VPN_SETTING_NAME)) {
362 }
else if (typeString ==
QLatin1String(NM_SETTING_WIMAX_SETTING_NAME)) {
364 }
else if (typeString ==
QLatin1String(NM_SETTING_WIRED_SETTING_NAME)) {
366 }
else if (typeString ==
QLatin1String(NM_SETTING_WIRELESS_SETTING_NAME)) {
368 }
else if (typeString ==
QLatin1String(NM_SETTING_TEAM_SETTING_NAME)) {
370 }
else if (typeString ==
QLatin1String(NM_SETTING_GENERIC_SETTING_NAME)) {
372 }
else if (typeString ==
QLatin1String(NM_SETTING_TUN_SETTING_NAME)) {
374 }
else if (typeString ==
QLatin1String(NM_SETTING_IP_TUNNEL_SETTING_NAME)) {
376 }
else if (typeString ==
QLatin1String(NM_SETTING_WIREGUARD_SETTING_NAME)) {
383QString NetworkManager::ConnectionSettings::typeAsString(NetworkManager::ConnectionSettings::ConnectionType type)
395 typeString =
QLatin1String(NM_SETTING_BLUETOOTH_SETTING_NAME);
407 typeString =
QLatin1String(NM_SETTING_INFINIBAND_SETTING_NAME);
410 typeString =
QLatin1String(NM_SETTING_OLPC_MESH_SETTING_NAME);
428 typeString =
QLatin1String(NM_SETTING_WIRELESS_SETTING_NAME);
440 typeString =
QLatin1String(NM_SETTING_IP_TUNNEL_SETTING_NAME);
443 typeString =
QLatin1String(NM_SETTING_WIREGUARD_SETTING_NAME);
452QString NetworkManager::ConnectionSettings::createNewUuid()
457NetworkManager::ConnectionSettings::ConnectionSettings()
458 : d_ptr(new ConnectionSettingsPrivate(this))
462NetworkManager::ConnectionSettings::ConnectionSettings(NetworkManager::ConnectionSettings::ConnectionType type, NMBluetoothCapabilities bt_cap)
463 : d_ptr(new ConnectionSettingsPrivate(this))
465 setConnectionType(type, bt_cap);
469 : d_ptr(new ConnectionSettingsPrivate(this))
471 Q_D(ConnectionSettings);
474 setUuid(other->uuid());
475 setInterfaceName(other->interfaceName());
476 setConnectionType(other->connectionType());
477 setPermissions(other->permissions());
478 setAutoconnect(other->autoconnect());
479 setAutoconnectPriority(other->autoconnectPriority());
480 setTimestamp(other->timestamp());
481 setReadOnly(other->readOnly());
482 setZone(other->zone());
483 setMaster(other->master());
484 setSlaveType(other->slaveType());
485 setGatewayPingTimeout(other->gatewayPingTimeout());
486 setAutoconnectRetries(other->autoconnectRetries());
487 setAutoconnectSlaves(other->autoconnectSlaves());
488 setLldp(other->lldp());
489 setMetered(other->metered());
490 setMdns(other->mdns());
491 setStableId(other->stableId());
493 d->initSettings(other);
496NetworkManager::ConnectionSettings::ConnectionSettings(
const NMVariantMapMap &map)
497 : d_ptr(new ConnectionSettingsPrivate(this))
502NetworkManager::ConnectionSettings::~ConnectionSettings()
504 d_ptr->clearSettings();
509void NetworkManager::ConnectionSettings::fromMap(
const NMVariantMapMap &map)
511 QVariantMap connectionSettings =
map.value(
QLatin1String(NM_SETTING_CONNECTION_SETTING_NAME));
515 setConnectionType(typeFromString(connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_TYPE)).
toString()));
517 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_INTERFACE_NAME))) {
518 setInterfaceName(connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_INTERFACE_NAME)).
toString());
520 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_PERMISSIONS))) {
522 for (
const QString &permission : permissions) {
524 addToPermissions(split.
at(1), split.
at(2));
528 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT))) {
529 setAutoconnect(connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT)).toBool());
532 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY))) {
533 setAutoconnectPriority(connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY)).toInt());
536 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_TIMESTAMP))) {
537 const int timestamp = connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_TIMESTAMP)).toInt();
541 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_READ_ONLY))) {
542 setReadOnly(connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_READ_ONLY)).toBool());
545 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_ZONE))) {
549 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_MASTER))) {
553 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_SLAVE_TYPE))) {
557 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_SECONDARIES))) {
558 setSecondaries(connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_SECONDARIES)).toStringList());
561 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT))) {
562 setGatewayPingTimeout(connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT)).toUInt());
565 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES))) {
566 setAutoconnectRetries(connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES)).toInt());
569 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES))) {
570 setAutoconnectSlaves(
571 (NetworkManager::ConnectionSettings::AutoconnectSlaves)connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES)).toInt());
574 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_LLDP))) {
575 setLldp((NetworkManager::ConnectionSettings::Lldp)connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_LLDP)).toInt());
578 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_METERED))) {
579 setMetered((NetworkManager::ConnectionSettings::Metered)connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_METERED)).toInt());
582 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_MDNS))) {
583 setMdns((NetworkManager::ConnectionSettings::Mdns)connectionSettings.value(
QLatin1String(NM_SETTING_CONNECTION_MDNS)).toInt());
586 if (connectionSettings.contains(
QLatin1String(NM_SETTING_CONNECTION_STABLE_ID))) {
590 const auto settingsList = settings();
591 for (
const Setting::Ptr &setting : settingsList) {
592 if (
map.contains(setting->name())) {
593 setting->fromMap(
map.value(setting->name()));
594 setting->setInitialized(
true);
596 setting->setInitialized(
false);
603 NetworkManager::Security8021xSetting::EapMethod method;
604}
constexpr const eap_methods[] = {
605 {
"PEAP", NetworkManager::Security8021xSetting::EapMethodPeap},
606 {
"PWD", NetworkManager::Security8021xSetting::EapMethodPwd},
607 {
"TLS", NetworkManager::Security8021xSetting::EapMethodTls},
608 {
"TTLS", NetworkManager::Security8021xSetting::EapMethodTtls},
613 NetworkManager::Security8021xSetting::AuthMethod method;
614}
constexpr const auth_methods[] = {
615 {
"GTC", NetworkManager::Security8021xSetting::AuthMethodGtc},
616 {
"MSCHAP", NetworkManager::Security8021xSetting::AuthMethodMschap},
617 {
"MSCHAPV2", NetworkManager::Security8021xSetting::AuthMethodMschapv2},
618 {
"PAP", NetworkManager::Security8021xSetting::AuthMethodPap},
621void NetworkManager::ConnectionSettings::fromMeCard(
const QVariantMap &map)
626 auto wifiSetting = setting(Setting::Wireless).
dynamicCast<WirelessSetting>();
627 wifiSetting->setInitialized(
true);
628 wifiSetting->setSsid(ssid.toUtf8());
630 auto wifiSecurity = setting(Setting::WirelessSecurity).
dynamicCast<WirelessSecuritySetting>();
633 if (!securityType.isEmpty() && securityType !=
QLatin1String(
"nopass")) {
634 wifiSecurity->setInitialized(
true);
638 wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaPsk);
640 wifiSecurity->setPskFlags(NetworkManager::Setting::AgentOwned);
642 wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaEap);
643 auto sec8021x = setting(Setting::Security8021x).
dynamicCast<Security8021xSetting>();
649 for (
const auto &method : eap_methods) {
651 sec8021x->setEapMethods({method.method});
656 for (
const auto &method : auth_methods) {
658 sec8021x->setPhase2AuthMethod(method.method);
668 QVariantMap connectionSetting;
670 if (!
id().isEmpty()) {
674 if (!uuid().isEmpty()) {
675 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_UUID), uuid());
678 if (connectionType()) {
679 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_TYPE), typeAsString(connectionType()));
682 if (!interfaceName().isEmpty()) {
683 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_INTERFACE_NAME), interfaceName());
686 if (!permissions().isEmpty()) {
691 const QString tmp =
"user:" + it.key() +
':' + it.value();
696 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_PERMISSIONS), perm);
699 if (!autoconnect()) {
700 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT), autoconnect());
703 if (autoconnectPriority()) {
704 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY), autoconnectPriority());
708 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_TIMESTAMP), timestamp().toSecsSinceEpoch());
712 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_READ_ONLY), readOnly());
715 if (!zone().isEmpty()) {
716 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_ZONE), zone());
719 if (!master().isEmpty()) {
720 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_MASTER), master());
723 if (!slaveType().isEmpty()) {
724 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_SLAVE_TYPE), slaveType());
727 if (!secondaries().isEmpty()) {
728 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_SECONDARIES), secondaries());
731 if (gatewayPingTimeout()) {
732 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT), gatewayPingTimeout());
735 if (autoconnectRetries() >= 0) {
736 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES), autoconnectRetries());
739 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES), autoconnectSlaves());
740 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_LLDP), lldp());
743 if (mdns() != MdnsDefault) {
744 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_MDNS), mdns());
747 if (!stableId().isEmpty()) {
748 connectionSetting.insert(
QLatin1String(NM_SETTING_CONNECTION_STABLE_ID), stableId());
753 const auto settingsList = settings();
754 for (
const Setting::Ptr &setting : settingsList) {
755 QVariantMap
map = setting->toMap();
756 if (!setting->isNull()) {
757 result.
insert(setting->name(), map);
763QString NetworkManager::ConnectionSettings::name()
const
765 Q_D(
const ConnectionSettings);
770void NetworkManager::ConnectionSettings::setId(
const QString &
id)
772 Q_D(ConnectionSettings);
777QString NetworkManager::ConnectionSettings::id()
const
779 Q_D(
const ConnectionSettings);
784void NetworkManager::ConnectionSettings::setUuid(
const QString &uuid)
786 Q_D(ConnectionSettings);
791QString NetworkManager::ConnectionSettings::uuid()
const
793 Q_D(
const ConnectionSettings);
798void NetworkManager::ConnectionSettings::setInterfaceName(
const QString &interfaceName)
800 Q_D(ConnectionSettings);
802 d->interfaceName = interfaceName;
805QString NetworkManager::ConnectionSettings::interfaceName()
const
807 Q_D(
const ConnectionSettings);
809 return d->interfaceName;
812void NetworkManager::ConnectionSettings::setConnectionType(NetworkManager::ConnectionSettings::ConnectionType type, NMBluetoothCapabilities bt_cap)
814 Q_D(ConnectionSettings);
817 d->initSettings(bt_cap);
820NetworkManager::ConnectionSettings::ConnectionType NetworkManager::ConnectionSettings::connectionType()
const
822 Q_D(
const ConnectionSettings);
827void NetworkManager::ConnectionSettings::addToPermissions(
const QString &user,
const QString &type)
829 Q_D(ConnectionSettings);
831 d->permissions.insert(user, type);
836 Q_D(ConnectionSettings);
838 d->permissions = perm;
843 Q_D(
const ConnectionSettings);
845 return d->permissions;
848void NetworkManager::ConnectionSettings::setAutoconnect(
bool autoconnect)
850 Q_D(ConnectionSettings);
852 d->autoconnect = autoconnect;
855bool NetworkManager::ConnectionSettings::autoconnect()
const
857 Q_D(
const ConnectionSettings);
859 return d->autoconnect;
862void NetworkManager::ConnectionSettings::setAutoconnectPriority(
int priority)
864 Q_D(ConnectionSettings);
866 d->autoconnectPriority = priority;
869int NetworkManager::ConnectionSettings::autoconnectPriority()
const
871 Q_D(
const ConnectionSettings);
873 return d->autoconnectPriority;
876void NetworkManager::ConnectionSettings::setTimestamp(
const QDateTime ×tamp)
878 Q_D(ConnectionSettings);
880 d->timestamp = timestamp;
883QDateTime NetworkManager::ConnectionSettings::timestamp()
const
885 Q_D(
const ConnectionSettings);
890void NetworkManager::ConnectionSettings::setReadOnly(
bool readonly)
892 Q_D(ConnectionSettings);
894 d->readOnly = readonly;
897bool NetworkManager::ConnectionSettings::readOnly()
const
899 Q_D(
const ConnectionSettings);
904void NetworkManager::ConnectionSettings::setZone(
const QString &zone)
906 Q_D(ConnectionSettings);
911QString NetworkManager::ConnectionSettings::zone()
const
913 Q_D(
const ConnectionSettings);
918bool NetworkManager::ConnectionSettings::isSlave()
const
920 Q_D(
const ConnectionSettings);
922 return !d->master.isEmpty() && !d->slaveType.isEmpty();
925void NetworkManager::ConnectionSettings::setMaster(
const QString &master)
927 Q_D(ConnectionSettings);
932QString NetworkManager::ConnectionSettings::master()
const
934 Q_D(
const ConnectionSettings);
939void NetworkManager::ConnectionSettings::setSlaveType(
const QString &type)
941 Q_D(ConnectionSettings);
946QString NetworkManager::ConnectionSettings::slaveType()
const
948 Q_D(
const ConnectionSettings);
953void NetworkManager::ConnectionSettings::setSecondaries(
const QStringList &secondaries)
955 Q_D(ConnectionSettings);
957 d->secondaries = secondaries;
960QStringList NetworkManager::ConnectionSettings::secondaries()
const
962 Q_D(
const ConnectionSettings);
964 return d->secondaries;
967void NetworkManager::ConnectionSettings::setGatewayPingTimeout(quint32 timeout)
969 Q_D(ConnectionSettings);
971 d->gatewayPingTimeout = timeout;
974quint32 NetworkManager::ConnectionSettings::gatewayPingTimeout()
const
976 Q_D(
const ConnectionSettings);
978 return d->gatewayPingTimeout;
981int NetworkManager::ConnectionSettings::autoconnectRetries()
const
983 Q_D(
const ConnectionSettings);
985 return d->autoconnectRetries;
988void NetworkManager::ConnectionSettings::setAutoconnectRetries(
int retries)
990 Q_D(ConnectionSettings);
992 d->autoconnectRetries = retries;
995NetworkManager::ConnectionSettings::AutoconnectSlaves NetworkManager::ConnectionSettings::autoconnectSlaves()
const
997 Q_D(
const ConnectionSettings);
999 return d->autoconnectSlaves;
1002void NetworkManager::ConnectionSettings::setAutoconnectSlaves(NetworkManager::ConnectionSettings::AutoconnectSlaves autoconnectSlaves)
1004 Q_D(ConnectionSettings);
1006 d->autoconnectSlaves = autoconnectSlaves;
1009NetworkManager::ConnectionSettings::Lldp NetworkManager::ConnectionSettings::lldp()
const
1011 Q_D(
const ConnectionSettings);
1016void NetworkManager::ConnectionSettings::setLldp(NetworkManager::ConnectionSettings::Lldp lldp)
1018 Q_D(ConnectionSettings);
1023NetworkManager::ConnectionSettings::Metered NetworkManager::ConnectionSettings::metered()
const
1025 Q_D(
const ConnectionSettings);
1030void NetworkManager::ConnectionSettings::setMetered(NetworkManager::ConnectionSettings::Metered
metered)
1032 Q_D(ConnectionSettings);
1037NetworkManager::ConnectionSettings::Mdns NetworkManager::ConnectionSettings::mdns()
const
1039 Q_D(
const ConnectionSettings);
1044void NetworkManager::ConnectionSettings::setMdns(NetworkManager::ConnectionSettings::Mdns mdns)
1046 Q_D(ConnectionSettings);
1051QString NetworkManager::ConnectionSettings::stableId()
const
1053 Q_D(
const ConnectionSettings);
1058void NetworkManager::ConnectionSettings::setStableId(
const QString &stableId)
1060 Q_D(ConnectionSettings);
1062 d->stableId = stableId;
1067 const auto settingsList = settings();
1068 for (
const Setting::Ptr &setting : settingsList) {
1069 if (setting->type() == type) {
1074 return Setting::Ptr();
1079 return setting(Setting::typeFromString(type));
1084 Q_D(
const ConnectionSettings);
1091 dbg.
nospace() <<
"CONNECTION SETTINGS\n";
1092 dbg.
nospace() <<
"===================\n";
1094 dbg.
nospace() << NM_SETTING_CONNECTION_ID <<
": " << setting.id() <<
'\n';
1095 dbg.
nospace() << NM_SETTING_CONNECTION_UUID <<
": " << setting.uuid() <<
'\n';
1096 dbg.
nospace() << NM_SETTING_CONNECTION_INTERFACE_NAME <<
": " << setting.interfaceName() <<
'\n';
1097 dbg.
nospace() << NM_SETTING_CONNECTION_TYPE <<
": " << setting.typeAsString(setting.connectionType()) <<
'\n';
1098 dbg.
nospace() << NM_SETTING_CONNECTION_PERMISSIONS <<
": " << setting.permissions() <<
'\n';
1099 dbg.
nospace() << NM_SETTING_CONNECTION_AUTOCONNECT <<
": " << setting.autoconnect() <<
'\n';
1100 dbg.
nospace() << NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY <<
": " << setting.autoconnectPriority() <<
'\n';
1102 dbg.
nospace() << NM_SETTING_CONNECTION_READ_ONLY <<
": " << setting.readOnly() <<
'\n';
1103 dbg.
nospace() << NM_SETTING_CONNECTION_ZONE <<
": " << setting.zone() <<
'\n';
1104 dbg.
nospace() << NM_SETTING_CONNECTION_MASTER <<
": " << setting.master() <<
'\n';
1105 dbg.
nospace() << NM_SETTING_CONNECTION_SLAVE_TYPE <<
": " << setting.slaveType() <<
'\n';
1106 dbg.
nospace() << NM_SETTING_CONNECTION_SECONDARIES <<
": " << setting.secondaries() <<
'\n';
1107 dbg.
nospace() << NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT <<
": " << setting.gatewayPingTimeout() <<
'\n';
1108 dbg.
nospace() << NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES <<
": " << setting.autoconnectRetries() <<
'\n';
1109 dbg.
nospace() << NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES <<
": " << setting.autoconnectSlaves() <<
'\n';
1110 dbg.
nospace() << NM_SETTING_CONNECTION_LLDP <<
": " << setting.lldp() <<
'\n';
1111 dbg.
nospace() << NM_SETTING_CONNECTION_METERED <<
": " << setting.metered() <<
'\n';
1112 dbg.
nospace() << NM_SETTING_CONNECTION_MDNS <<
": " << setting.mdns() <<
'\n';
1113 dbg.
nospace() << NM_SETTING_CONNECTION_STABLE_ID <<
": " << setting.stableId() <<
'\n';
1114 dbg.
nospace() <<
"===================\n";
1115 const auto settingsList = setting.settings();
1116 for (
const Setting::Ptr &settingPtr : settingsList) {
1117 dbg.
nospace() << settingPtr->typeAsString(settingPtr->type()).toUpper() <<
" SETTINGS\n";
1118 dbg.
nospace() <<
"---------------------------\n";
1119 switch (settingPtr->type()) {
1126 case Setting::Bluetooth:
1129 case Setting::Bridge:
1132 case Setting::BridgePort:
1141 case Setting::Infiniband:
1150 case Setting::OlpcMesh:
1156 case Setting::Pppoe:
1159 case Setting::Security8021x:
1162 case Setting::Serial:
1171 case Setting::Wimax:
1174 case Setting::Wired:
1177 case Setting::Wireless:
1180 case Setting::WirelessSecurity:
1189 case Setting::IpTunnel:
1192 case Setting::WireGuard:
1196 dbg.
nospace() << *settingPtr.data();
Represents bluetooth setting.
Represents bridge port setting.
Represents bridge setting.
Represents collection of all connection settings.
Represents infiniband setting.
Represents IpTunnel setting.
Represents olpc mesh setting.
Represents pppoe setting.
Represents 802.1x wireless security setting.
Represents serial setting.
Represents generic setting.
Represents wimax setting.
Represents generic setting.
Represents wired setting.
Represents wireless security setting.
Represents wireless setting.
Type type(const QSqlDatabase &db)
char * toString(const EngineQuery &query)
bool isValid(QStringView ifopt)
This class allows querying the underlying system to discover the available network interfaces and rea...
NETWORKMANAGERQT_EXPORT NetworkManager::Device::MeteredStatus metered()
NETWORKMANAGERQT_EXPORT bool checkVersion(const int x, const int y, const int z)
Checks if NetworkManager version is at least x.y.z.
QDateTime fromSecsSinceEpoch(qint64 secs)
qint64 toSecsSinceEpoch() const const
const_iterator constBegin() const const
const_iterator constEnd() const const
const_reference at(qsizetype i) const const
iterator insert(const Key &key, const T &value)
T value(const Key &key, const T &defaultValue) const const
QSharedPointer< X > dynamicCast() const const
QString mid(qsizetype position, qsizetype n) const const
QFuture< void > map(Iterator begin, Iterator end, MapFunctor &&function)
QString toString(StringFormat mode) const const