File indexing completed on 2024-04-28 15:33:10
0001 /* 0002 SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com> 0003 SPDX-FileCopyrightText: 2013 Daniel Nicoletti <dantti12@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 #include "connectionsettings.h" 0009 #include "connectionsettings_p.h" 0010 0011 #include "adslsetting.h" 0012 #include "bluetoothsetting.h" 0013 #include "bondsetting.h" 0014 #include "bridgeportsetting.h" 0015 #include "bridgesetting.h" 0016 #include "cdmasetting.h" 0017 #include "gsmsetting.h" 0018 #include "infinibandsetting.h" 0019 #include "iptunnelsetting.h" 0020 #include "ipv4setting.h" 0021 #include "ipv6setting.h" 0022 #include "olpcmeshsetting.h" 0023 #include "pppoesetting.h" 0024 #include "pppsetting.h" 0025 #include "security8021xsetting.h" 0026 #include "serialsetting.h" 0027 #include "tunsetting.h" 0028 #include "vlansetting.h" 0029 #include "vpnsetting.h" 0030 #include "wimaxsetting.h" 0031 #include "wiredsetting.h" 0032 #include "wireguardsetting.h" 0033 #include "wirelesssecuritysetting.h" 0034 #include "wirelesssetting.h" 0035 0036 #undef signals 0037 0038 #if !NM_CHECK_VERSION(1, 6, 0) 0039 #define NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES "autoconnect-retries" 0040 #endif 0041 0042 #if !NM_CHECK_VERSION(1, 12, 0) 0043 #define NM_SETTING_CONNECTION_MDNS "mdns" 0044 #endif 0045 0046 #if !NM_CHECK_VERSION(1, 16, 0) 0047 #define NM_SETTING_WIREGUARD_SETTING_NAME "wireguard" 0048 #endif 0049 0050 #include "genericsetting.h" 0051 #include "teamsetting.h" 0052 0053 #include <QUuid> 0054 0055 namespace NetworkManager 0056 { 0057 extern bool checkVersion(const int x, const int y, const int z); 0058 } 0059 0060 NetworkManager::ConnectionSettingsPrivate::ConnectionSettingsPrivate(ConnectionSettings *q) 0061 : name(NM_SETTING_CONNECTION_SETTING_NAME) 0062 , uuid(QUuid().toString()) 0063 , type(ConnectionSettings::Wired) 0064 , autoconnect(true) 0065 , readOnly(false) 0066 , gatewayPingTimeout(0) 0067 , autoconnectPriority(0) 0068 , autoconnectRetries(-1) 0069 , autoconnectSlaves(ConnectionSettings::SlavesDefault) 0070 , lldp(ConnectionSettings::LldpDefault) 0071 , metered(ConnectionSettings::MeteredUnknown) 0072 , mdns(ConnectionSettings::MdnsDefault) 0073 , q_ptr(q) 0074 { 0075 } 0076 0077 void NetworkManager::ConnectionSettingsPrivate::addSetting(const NetworkManager::Setting::Ptr &setting) 0078 { 0079 settings.push_back(setting); 0080 } 0081 0082 void NetworkManager::ConnectionSettingsPrivate::clearSettings() 0083 { 0084 settings.clear(); 0085 } 0086 0087 void NetworkManager::ConnectionSettingsPrivate::initSettings(NMBluetoothCapabilities bt_cap) 0088 { 0089 clearSettings(); 0090 0091 switch (type) { 0092 case ConnectionSettings::Adsl: 0093 addSetting(Setting::Ptr(new AdslSetting())); 0094 addSetting(Setting::Ptr(new Ipv4Setting())); 0095 addSetting(Setting::Ptr(new Ipv6Setting())); 0096 break; 0097 case ConnectionSettings::Bond: 0098 addSetting(Setting::Ptr(new BondSetting())); 0099 addSetting(Setting::Ptr(new Ipv4Setting())); 0100 addSetting(Setting::Ptr(new Ipv6Setting())); 0101 break; 0102 case ConnectionSettings::Bluetooth: 0103 addSetting(Setting::Ptr(new BluetoothSetting())); 0104 addSetting(Setting::Ptr(new Ipv4Setting())); 0105 // addSetting(Setting::Ptr(new Ipv6Setting())); 0106 if (bt_cap == NM_BT_CAPABILITY_DUN) { 0107 addSetting(Setting::Ptr(new GsmSetting())); 0108 addSetting(Setting::Ptr(new PppSetting())); 0109 addSetting(Setting::Ptr(new SerialSetting())); 0110 } 0111 break; 0112 case ConnectionSettings::Bridge: 0113 addSetting(Setting::Ptr(new BridgeSetting())); 0114 addSetting(Setting::Ptr(new Ipv4Setting())); 0115 addSetting(Setting::Ptr(new Ipv6Setting())); 0116 break; 0117 case ConnectionSettings::Cdma: 0118 addSetting(Setting::Ptr(new CdmaSetting())); 0119 addSetting(Setting::Ptr(new Ipv4Setting())); 0120 if (NetworkManager::checkVersion(1, 0, 0)) { 0121 addSetting(Setting::Ptr(new Ipv6Setting())); 0122 } 0123 addSetting(Setting::Ptr(new PppSetting())); 0124 break; 0125 case ConnectionSettings::Gsm: 0126 addSetting(Setting::Ptr(new GsmSetting())); 0127 addSetting(Setting::Ptr(new Ipv4Setting())); 0128 if (NetworkManager::checkVersion(1, 0, 0)) { 0129 addSetting(Setting::Ptr(new Ipv6Setting())); 0130 } 0131 addSetting(Setting::Ptr(new PppSetting())); 0132 break; 0133 case ConnectionSettings::Infiniband: 0134 addSetting(Setting::Ptr(new InfinibandSetting())); 0135 addSetting(Setting::Ptr(new Ipv4Setting())); 0136 addSetting(Setting::Ptr(new Ipv6Setting())); 0137 break; 0138 case ConnectionSettings::OLPCMesh: 0139 addSetting(Setting::Ptr(new Ipv4Setting())); 0140 addSetting(Setting::Ptr(new Ipv6Setting())); 0141 addSetting(Setting::Ptr(new OlpcMeshSetting())); 0142 break; 0143 case ConnectionSettings::Pppoe: 0144 addSetting(Setting::Ptr(new Ipv4Setting())); 0145 // addSetting(new Ipv6Setting())); 0146 addSetting(Setting::Ptr(new PppSetting())); 0147 addSetting(Setting::Ptr(new PppoeSetting())); 0148 addSetting(Setting::Ptr(new WiredSetting())); 0149 break; 0150 case ConnectionSettings::Vlan: 0151 addSetting(Setting::Ptr(new Ipv4Setting())); 0152 addSetting(Setting::Ptr(new Ipv6Setting())); 0153 addSetting(Setting::Ptr(new VlanSetting())); 0154 break; 0155 case ConnectionSettings::Vpn: 0156 addSetting(Setting::Ptr(new Ipv4Setting())); 0157 addSetting(Setting::Ptr(new Ipv6Setting())); 0158 addSetting(Setting::Ptr(new VpnSetting())); 0159 break; 0160 case ConnectionSettings::Wimax: 0161 addSetting(Setting::Ptr(new Ipv4Setting())); 0162 addSetting(Setting::Ptr(new Ipv6Setting())); 0163 addSetting(Setting::Ptr(new WimaxSetting())); 0164 break; 0165 case ConnectionSettings::Wired: 0166 addSetting(Setting::Ptr(new Ipv4Setting())); 0167 addSetting(Setting::Ptr(new Ipv6Setting())); 0168 addSetting(Setting::Ptr(new Security8021xSetting())); 0169 addSetting(Setting::Ptr(new WiredSetting())); 0170 break; 0171 case ConnectionSettings::Wireless: 0172 addSetting(Setting::Ptr(new Ipv4Setting())); 0173 addSetting(Setting::Ptr(new Ipv6Setting())); 0174 addSetting(Setting::Ptr(new Security8021xSetting())); 0175 addSetting(Setting::Ptr(new WirelessSetting())); 0176 addSetting(Setting::Ptr(new WirelessSecuritySetting())); 0177 break; 0178 case ConnectionSettings::Team: 0179 addSetting(Setting::Ptr(new TeamSetting())); 0180 addSetting(Setting::Ptr(new Ipv4Setting())); 0181 addSetting(Setting::Ptr(new Ipv6Setting())); 0182 break; 0183 case ConnectionSettings::Generic: 0184 addSetting(Setting::Ptr(new GenericSetting())); 0185 addSetting(Setting::Ptr(new Ipv4Setting())); 0186 addSetting(Setting::Ptr(new Ipv6Setting())); 0187 break; 0188 case ConnectionSettings::Tun: 0189 addSetting(Setting::Ptr(new TunSetting())); 0190 addSetting(Setting::Ptr(new Ipv4Setting())); 0191 addSetting(Setting::Ptr(new Ipv6Setting())); 0192 break; 0193 case ConnectionSettings::IpTunnel: 0194 addSetting(Setting::Ptr(new IpTunnelSetting())); 0195 addSetting(Setting::Ptr(new Ipv4Setting())); 0196 addSetting(Setting::Ptr(new Ipv6Setting())); 0197 break; 0198 case ConnectionSettings::WireGuard: 0199 addSetting(Setting::Ptr(new WireGuardSetting())); 0200 addSetting(Setting::Ptr(new Ipv4Setting())); 0201 addSetting(Setting::Ptr(new Ipv6Setting())); 0202 break; 0203 case ConnectionSettings::Unknown: 0204 default: 0205 break; 0206 } 0207 } 0208 0209 void NetworkManager::ConnectionSettingsPrivate::initSettings(const NetworkManager::ConnectionSettings::Ptr &connectionSettings) 0210 { 0211 Q_Q(ConnectionSettings); 0212 0213 clearSettings(); 0214 0215 switch (type) { 0216 case ConnectionSettings::Adsl: 0217 addSetting(connectionSettings->setting(Setting::Adsl)); 0218 addSetting(connectionSettings->setting(Setting::Ipv4)); 0219 addSetting(connectionSettings->setting(Setting::Ipv6)); 0220 break; 0221 case ConnectionSettings::Bond: 0222 addSetting(connectionSettings->setting(Setting::Bond)); 0223 addSetting(connectionSettings->setting(Setting::Ipv4)); 0224 addSetting(connectionSettings->setting(Setting::Ipv6)); 0225 break; 0226 case ConnectionSettings::Bluetooth: 0227 addSetting(connectionSettings->setting(Setting::Bluetooth)); 0228 addSetting(connectionSettings->setting(Setting::Ipv4)); 0229 if (NetworkManager::checkVersion(1, 0, 0)) { 0230 addSetting(connectionSettings->setting(Setting::Ipv6)); 0231 } 0232 if (q->setting(Setting::Gsm) && q->setting(Setting::Ppp) && q->setting(Setting::Serial)) { 0233 addSetting(connectionSettings->setting(Setting::Gsm)); 0234 addSetting(connectionSettings->setting(Setting::Ppp)); 0235 addSetting(connectionSettings->setting(Setting::Serial)); 0236 } 0237 break; 0238 case ConnectionSettings::Bridge: 0239 addSetting(connectionSettings->setting(Setting::Bridge)); 0240 addSetting(connectionSettings->setting(Setting::Ipv4)); 0241 addSetting(connectionSettings->setting(Setting::Ipv6)); 0242 break; 0243 case ConnectionSettings::Cdma: 0244 addSetting(connectionSettings->setting(Setting::Cdma)); 0245 addSetting(connectionSettings->setting(Setting::Ipv4)); 0246 if (NetworkManager::checkVersion(1, 0, 0)) { 0247 addSetting(connectionSettings->setting(Setting::Ipv6)); 0248 } 0249 addSetting(connectionSettings->setting(Setting::Ppp)); 0250 break; 0251 case ConnectionSettings::Gsm: 0252 addSetting(connectionSettings->setting(Setting::Gsm)); 0253 addSetting(connectionSettings->setting(Setting::Ipv4)); 0254 if (NetworkManager::checkVersion(1, 0, 0)) { 0255 addSetting(connectionSettings->setting(Setting::Ipv6)); 0256 } 0257 addSetting(connectionSettings->setting(Setting::Ppp)); 0258 break; 0259 case ConnectionSettings::Infiniband: 0260 addSetting(connectionSettings->setting(Setting::Infiniband)); 0261 addSetting(connectionSettings->setting(Setting::Ipv4)); 0262 addSetting(connectionSettings->setting(Setting::Ipv6)); 0263 break; 0264 case ConnectionSettings::OLPCMesh: 0265 addSetting(connectionSettings->setting(Setting::Ipv4)); 0266 addSetting(connectionSettings->setting(Setting::Ipv6)); 0267 addSetting(connectionSettings->setting(Setting::OlpcMesh)); 0268 break; 0269 case ConnectionSettings::Pppoe: 0270 addSetting(connectionSettings->setting(Setting::Ipv4)); 0271 // addSetting(Ipv6Setting(connectionSettings->setting(Setting::Ipv6)); 0272 addSetting(connectionSettings->setting(Setting::Ppp)); 0273 addSetting(connectionSettings->setting(Setting::Pppoe)); 0274 addSetting(connectionSettings->setting(Setting::Wired)); 0275 break; 0276 case ConnectionSettings::Vlan: 0277 addSetting(connectionSettings->setting(Setting::Ipv4)); 0278 addSetting(connectionSettings->setting(Setting::Ipv6)); 0279 addSetting(connectionSettings->setting(Setting::Vlan)); 0280 break; 0281 case ConnectionSettings::Vpn: 0282 addSetting(connectionSettings->setting(Setting::Ipv4)); 0283 addSetting(connectionSettings->setting(Setting::Ipv6)); 0284 addSetting(connectionSettings->setting(Setting::Vpn)); 0285 break; 0286 case ConnectionSettings::Wimax: 0287 addSetting(connectionSettings->setting(Setting::Ipv4)); 0288 addSetting(connectionSettings->setting(Setting::Ipv6)); 0289 addSetting(connectionSettings->setting(Setting::Wimax)); 0290 break; 0291 case ConnectionSettings::Wired: 0292 addSetting(connectionSettings->setting(Setting::Ipv4)); 0293 addSetting(connectionSettings->setting(Setting::Ipv6)); 0294 addSetting(connectionSettings->setting(Setting::Security8021x)); 0295 addSetting(connectionSettings->setting(Setting::Wired)); 0296 break; 0297 case ConnectionSettings::Wireless: 0298 addSetting(connectionSettings->setting(Setting::Ipv4)); 0299 addSetting(connectionSettings->setting(Setting::Ipv6)); 0300 addSetting(connectionSettings->setting(Setting::Security8021x)); 0301 addSetting(connectionSettings->setting(Setting::Wireless)); 0302 addSetting(connectionSettings->setting(Setting::WirelessSecurity)); 0303 break; 0304 case ConnectionSettings::Team: 0305 addSetting(connectionSettings->setting(Setting::Team)); 0306 addSetting(connectionSettings->setting(Setting::Ipv4)); 0307 addSetting(connectionSettings->setting(Setting::Ipv6)); 0308 break; 0309 case ConnectionSettings::Generic: 0310 addSetting(connectionSettings->setting(Setting::Generic)); 0311 addSetting(connectionSettings->setting(Setting::Ipv4)); 0312 addSetting(connectionSettings->setting(Setting::Ipv6)); 0313 break; 0314 case ConnectionSettings::Tun: 0315 addSetting(connectionSettings->setting(Setting::Tun)); 0316 addSetting(connectionSettings->setting(Setting::Ipv4)); 0317 addSetting(connectionSettings->setting(Setting::Ipv6)); 0318 break; 0319 case ConnectionSettings::IpTunnel: 0320 addSetting(connectionSettings->setting(Setting::IpTunnel)); 0321 addSetting(connectionSettings->setting(Setting::Ipv4)); 0322 addSetting(connectionSettings->setting(Setting::Ipv6)); 0323 break; 0324 case ConnectionSettings::WireGuard: 0325 addSetting(connectionSettings->setting(Setting::WireGuard)); 0326 addSetting(connectionSettings->setting(Setting::Ipv4)); 0327 addSetting(connectionSettings->setting(Setting::Ipv6)); 0328 break; 0329 case ConnectionSettings::Unknown: 0330 default: 0331 break; 0332 } 0333 } 0334 0335 NetworkManager::ConnectionSettings::ConnectionType NetworkManager::ConnectionSettings::typeFromString(const QString &typeString) 0336 { 0337 ConnectionSettings::ConnectionType type = Wired; 0338 0339 if (typeString == QLatin1String(NM_SETTING_ADSL_SETTING_NAME)) { 0340 type = Adsl; 0341 } else if (typeString == QLatin1String(NM_SETTING_BLUETOOTH_SETTING_NAME)) { 0342 type = Bluetooth; 0343 } else if (typeString == QLatin1String(NM_SETTING_BOND_SETTING_NAME)) { 0344 type = Bond; 0345 } else if (typeString == QLatin1String(NM_SETTING_BRIDGE_SETTING_NAME)) { 0346 type = Bridge; 0347 } else if (typeString == QLatin1String(NM_SETTING_CDMA_SETTING_NAME)) { 0348 type = Cdma; 0349 } else if (typeString == QLatin1String(NM_SETTING_GSM_SETTING_NAME)) { 0350 type = Gsm; 0351 } else if (typeString == QLatin1String(NM_SETTING_INFINIBAND_SETTING_NAME)) { 0352 type = Infiniband; 0353 } else if (typeString == QLatin1String(NM_SETTING_OLPC_MESH_SETTING_NAME)) { 0354 type = OLPCMesh; 0355 } else if (typeString == QLatin1String(NM_SETTING_PPPOE_SETTING_NAME)) { 0356 type = Pppoe; 0357 } else if (typeString == QLatin1String(NM_SETTING_VLAN_SETTING_NAME)) { 0358 type = Vlan; 0359 } else if (typeString == QLatin1String(NM_SETTING_VPN_SETTING_NAME)) { 0360 type = Vpn; 0361 } else if (typeString == QLatin1String(NM_SETTING_WIMAX_SETTING_NAME)) { 0362 type = Wimax; 0363 } else if (typeString == QLatin1String(NM_SETTING_WIRED_SETTING_NAME)) { 0364 type = Wired; 0365 } else if (typeString == QLatin1String(NM_SETTING_WIRELESS_SETTING_NAME)) { 0366 type = Wireless; 0367 } else if (typeString == QLatin1String(NM_SETTING_TEAM_SETTING_NAME)) { 0368 type = Team; 0369 } else if (typeString == QLatin1String(NM_SETTING_GENERIC_SETTING_NAME)) { 0370 type = Generic; 0371 } else if (typeString == QLatin1String(NM_SETTING_TUN_SETTING_NAME)) { 0372 type = Tun; 0373 } else if (typeString == QLatin1String(NM_SETTING_IP_TUNNEL_SETTING_NAME)) { 0374 type = IpTunnel; 0375 } else if (typeString == QLatin1String(NM_SETTING_WIREGUARD_SETTING_NAME)) { 0376 type = WireGuard; 0377 } 0378 0379 return type; 0380 } 0381 0382 QString NetworkManager::ConnectionSettings::typeAsString(NetworkManager::ConnectionSettings::ConnectionType type) 0383 { 0384 QString typeString; 0385 0386 switch (type) { 0387 case Adsl: 0388 typeString = QLatin1String(NM_SETTING_ADSL_SETTING_NAME); 0389 break; 0390 case Bond: 0391 typeString = QLatin1String(NM_SETTING_BOND_SETTING_NAME); 0392 break; 0393 case Bluetooth: 0394 typeString = QLatin1String(NM_SETTING_BLUETOOTH_SETTING_NAME); 0395 break; 0396 case Bridge: 0397 typeString = QLatin1String(NM_SETTING_BRIDGE_SETTING_NAME); 0398 break; 0399 case Cdma: 0400 typeString = QLatin1String(NM_SETTING_CDMA_SETTING_NAME); 0401 break; 0402 case Gsm: 0403 typeString = QLatin1String(NM_SETTING_GSM_SETTING_NAME); 0404 break; 0405 case Infiniband: 0406 typeString = QLatin1String(NM_SETTING_INFINIBAND_SETTING_NAME); 0407 break; 0408 case OLPCMesh: 0409 typeString = QLatin1String(NM_SETTING_OLPC_MESH_SETTING_NAME); 0410 break; 0411 case Pppoe: 0412 typeString = QLatin1String(NM_SETTING_PPPOE_SETTING_NAME); 0413 break; 0414 case Vlan: 0415 typeString = QLatin1String(NM_SETTING_VLAN_SETTING_NAME); 0416 break; 0417 case Vpn: 0418 typeString = QLatin1String(NM_SETTING_VPN_SETTING_NAME); 0419 break; 0420 case Wimax: 0421 typeString = QLatin1String(NM_SETTING_WIMAX_SETTING_NAME); 0422 break; 0423 case Wired: 0424 typeString = QLatin1String(NM_SETTING_WIRED_SETTING_NAME); 0425 break; 0426 case Wireless: 0427 typeString = QLatin1String(NM_SETTING_WIRELESS_SETTING_NAME); 0428 break; 0429 case Team: 0430 typeString = QLatin1String(NM_SETTING_TEAM_SETTING_NAME); 0431 break; 0432 case Generic: 0433 typeString = QLatin1String(NM_SETTING_GENERIC_SETTING_NAME); 0434 break; 0435 case Tun: 0436 typeString = QLatin1String(NM_SETTING_TUN_SETTING_NAME); 0437 break; 0438 case IpTunnel: 0439 typeString = QLatin1String(NM_SETTING_IP_TUNNEL_SETTING_NAME); 0440 break; 0441 case WireGuard: 0442 typeString = QLatin1String(NM_SETTING_WIREGUARD_SETTING_NAME); 0443 break; 0444 default: 0445 break; 0446 }; 0447 0448 return typeString; 0449 } 0450 0451 QString NetworkManager::ConnectionSettings::createNewUuid() 0452 { 0453 return QUuid::createUuid().toString().mid(1, QUuid::createUuid().toString().length() - 2); 0454 } 0455 0456 NetworkManager::ConnectionSettings::ConnectionSettings() 0457 : d_ptr(new ConnectionSettingsPrivate(this)) 0458 { 0459 } 0460 0461 NetworkManager::ConnectionSettings::ConnectionSettings(NetworkManager::ConnectionSettings::ConnectionType type, NMBluetoothCapabilities bt_cap) 0462 : d_ptr(new ConnectionSettingsPrivate(this)) 0463 { 0464 setConnectionType(type, bt_cap); 0465 } 0466 0467 NetworkManager::ConnectionSettings::ConnectionSettings(const NetworkManager::ConnectionSettings::Ptr &other) 0468 : d_ptr(new ConnectionSettingsPrivate(this)) 0469 { 0470 Q_D(ConnectionSettings); 0471 0472 setId(other->id()); 0473 setUuid(other->uuid()); 0474 setInterfaceName(other->interfaceName()); 0475 setConnectionType(other->connectionType()); 0476 setPermissions(other->permissions()); 0477 setAutoconnect(other->autoconnect()); 0478 setAutoconnectPriority(other->autoconnectPriority()); 0479 setTimestamp(other->timestamp()); 0480 setReadOnly(other->readOnly()); 0481 setZone(other->zone()); 0482 setMaster(other->master()); 0483 setSlaveType(other->slaveType()); 0484 setGatewayPingTimeout(other->gatewayPingTimeout()); 0485 setAutoconnectRetries(other->autoconnectRetries()); 0486 setAutoconnectSlaves(other->autoconnectSlaves()); 0487 setLldp(other->lldp()); 0488 setMetered(other->metered()); 0489 setMdns(other->mdns()); 0490 setStableId(other->stableId()); 0491 0492 d->initSettings(other); 0493 } 0494 0495 NetworkManager::ConnectionSettings::ConnectionSettings(const NMVariantMapMap &map) 0496 : d_ptr(new ConnectionSettingsPrivate(this)) 0497 { 0498 fromMap(map); 0499 } 0500 0501 NetworkManager::ConnectionSettings::~ConnectionSettings() 0502 { 0503 d_ptr->clearSettings(); 0504 0505 delete d_ptr; 0506 } 0507 0508 void NetworkManager::ConnectionSettings::fromMap(const NMVariantMapMap &map) 0509 { 0510 QVariantMap connectionSettings = map.value(QLatin1String(NM_SETTING_CONNECTION_SETTING_NAME)); 0511 0512 setId(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_ID)).toString()); 0513 setUuid(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_UUID)).toString()); 0514 setConnectionType(typeFromString(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_TYPE)).toString())); 0515 0516 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_INTERFACE_NAME))) { 0517 setInterfaceName(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_INTERFACE_NAME)).toString()); 0518 } 0519 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_PERMISSIONS))) { 0520 const QStringList permissions = connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_PERMISSIONS)).toStringList(); 0521 for (const QString &permission : permissions) { 0522 const QStringList split = permission.split(QLatin1Char(':'), Qt::KeepEmptyParts); 0523 addToPermissions(split.at(1), split.at(2)); 0524 } 0525 } 0526 0527 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT))) { 0528 setAutoconnect(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT)).toBool()); 0529 } 0530 0531 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY))) { 0532 setAutoconnectPriority(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY)).toInt()); 0533 } 0534 0535 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_TIMESTAMP))) { 0536 const int timestamp = connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_TIMESTAMP)).toInt(); 0537 setTimestamp(QDateTime::fromSecsSinceEpoch(timestamp)); 0538 } 0539 0540 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_READ_ONLY))) { 0541 setReadOnly(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_READ_ONLY)).toBool()); 0542 } 0543 0544 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_ZONE))) { 0545 setZone(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_ZONE)).toString()); 0546 } 0547 0548 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_MASTER))) { 0549 setMaster(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_MASTER)).toString()); 0550 } 0551 0552 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_SLAVE_TYPE))) { 0553 setSlaveType(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_SLAVE_TYPE)).toString()); 0554 } 0555 0556 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_SECONDARIES))) { 0557 setSecondaries(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_SECONDARIES)).toStringList()); 0558 } 0559 0560 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT))) { 0561 setGatewayPingTimeout(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT)).toUInt()); 0562 } 0563 0564 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES))) { 0565 setAutoconnectRetries(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES)).toInt()); 0566 } 0567 0568 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES))) { 0569 setAutoconnectSlaves( 0570 (NetworkManager::ConnectionSettings::AutoconnectSlaves)connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES)).toInt()); 0571 } 0572 0573 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_LLDP))) { 0574 setLldp((NetworkManager::ConnectionSettings::Lldp)connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_LLDP)).toInt()); 0575 } 0576 0577 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_METERED))) { 0578 setMetered((NetworkManager::ConnectionSettings::Metered)connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_METERED)).toInt()); 0579 } 0580 0581 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_MDNS))) { 0582 setMdns((NetworkManager::ConnectionSettings::Mdns)connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_MDNS)).toInt()); 0583 } 0584 0585 if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_STABLE_ID))) { 0586 setStableId(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_STABLE_ID)).toString()); 0587 } 0588 0589 const auto settingsList = settings(); 0590 for (const Setting::Ptr &setting : settingsList) { 0591 if (map.contains(setting->name())) { 0592 setting->fromMap(map.value(setting->name())); 0593 setting->setInitialized(true); 0594 } else { 0595 setting->setInitialized(false); 0596 } 0597 } 0598 } 0599 0600 NMVariantMapMap NetworkManager::ConnectionSettings::toMap() const 0601 { 0602 NMVariantMapMap result; 0603 QVariantMap connectionSetting; 0604 0605 if (!id().isEmpty()) { 0606 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_ID), id()); 0607 } 0608 0609 if (!uuid().isEmpty()) { 0610 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_UUID), uuid()); 0611 } 0612 0613 if (connectionType()) { 0614 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_TYPE), typeAsString(connectionType())); 0615 } 0616 0617 if (!interfaceName().isEmpty()) { 0618 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_INTERFACE_NAME), interfaceName()); 0619 } 0620 0621 if (!permissions().isEmpty()) { 0622 QStringList perm; 0623 QHash<QString, QString> perms = permissions(); 0624 QHash<QString, QString>::const_iterator it = perms.constBegin(); 0625 while (it != perms.constEnd()) { 0626 const QString tmp = "user:" + it.key() + ':' + it.value(); 0627 perm << tmp; 0628 ++it; 0629 } 0630 0631 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_PERMISSIONS), perm); 0632 } 0633 0634 if (!autoconnect()) { 0635 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT), autoconnect()); 0636 } 0637 0638 if (autoconnectPriority()) { 0639 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY), autoconnectPriority()); 0640 } 0641 0642 if (timestamp().isValid()) { 0643 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_TIMESTAMP), timestamp().toSecsSinceEpoch()); 0644 } 0645 0646 if (readOnly()) { 0647 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_READ_ONLY), readOnly()); 0648 } 0649 0650 if (!zone().isEmpty()) { 0651 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_ZONE), zone()); 0652 } 0653 0654 if (!master().isEmpty()) { 0655 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_MASTER), master()); 0656 } 0657 0658 if (!slaveType().isEmpty()) { 0659 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_SLAVE_TYPE), slaveType()); 0660 } 0661 0662 if (!secondaries().isEmpty()) { 0663 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_SECONDARIES), secondaries()); 0664 } 0665 0666 if (gatewayPingTimeout()) { 0667 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT), gatewayPingTimeout()); 0668 } 0669 0670 if (autoconnectRetries() >= 0) { 0671 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES), autoconnectRetries()); 0672 } 0673 0674 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES), autoconnectSlaves()); 0675 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_LLDP), lldp()); 0676 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_METERED), metered()); 0677 0678 if (mdns() != MdnsDefault) { 0679 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_MDNS), mdns()); 0680 } 0681 0682 if (!stableId().isEmpty()) { 0683 connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_STABLE_ID), stableId()); 0684 } 0685 0686 result.insert(QLatin1String(NM_SETTING_CONNECTION_SETTING_NAME), connectionSetting); 0687 0688 const auto settingsList = settings(); 0689 for (const Setting::Ptr &setting : settingsList) { 0690 QVariantMap map = setting->toMap(); 0691 if (!setting->isNull()) { 0692 result.insert(setting->name(), map); 0693 } 0694 } 0695 return result; 0696 } 0697 0698 QString NetworkManager::ConnectionSettings::name() const 0699 { 0700 Q_D(const ConnectionSettings); 0701 0702 return d->name; 0703 } 0704 0705 void NetworkManager::ConnectionSettings::setId(const QString &id) 0706 { 0707 Q_D(ConnectionSettings); 0708 0709 d->id = id; 0710 } 0711 0712 QString NetworkManager::ConnectionSettings::id() const 0713 { 0714 Q_D(const ConnectionSettings); 0715 0716 return d->id; 0717 } 0718 0719 void NetworkManager::ConnectionSettings::setUuid(const QString &uuid) 0720 { 0721 Q_D(ConnectionSettings); 0722 0723 d->uuid = uuid; 0724 } 0725 0726 QString NetworkManager::ConnectionSettings::uuid() const 0727 { 0728 Q_D(const ConnectionSettings); 0729 0730 return d->uuid; 0731 } 0732 0733 void NetworkManager::ConnectionSettings::setInterfaceName(const QString &interfaceName) 0734 { 0735 Q_D(ConnectionSettings); 0736 0737 d->interfaceName = interfaceName; 0738 } 0739 0740 QString NetworkManager::ConnectionSettings::interfaceName() const 0741 { 0742 Q_D(const ConnectionSettings); 0743 0744 return d->interfaceName; 0745 } 0746 0747 void NetworkManager::ConnectionSettings::setConnectionType(NetworkManager::ConnectionSettings::ConnectionType type, NMBluetoothCapabilities bt_cap) 0748 { 0749 Q_D(ConnectionSettings); 0750 0751 d->type = type; 0752 d->initSettings(bt_cap); 0753 } 0754 0755 NetworkManager::ConnectionSettings::ConnectionType NetworkManager::ConnectionSettings::connectionType() const 0756 { 0757 Q_D(const ConnectionSettings); 0758 0759 return d->type; 0760 } 0761 0762 void NetworkManager::ConnectionSettings::addToPermissions(const QString &user, const QString &type) 0763 { 0764 Q_D(ConnectionSettings); 0765 0766 d->permissions.insert(user, type); 0767 } 0768 0769 void NetworkManager::ConnectionSettings::setPermissions(const QHash<QString, QString> &perm) 0770 { 0771 Q_D(ConnectionSettings); 0772 0773 d->permissions = perm; 0774 } 0775 0776 QHash<QString, QString> NetworkManager::ConnectionSettings::permissions() const 0777 { 0778 Q_D(const ConnectionSettings); 0779 0780 return d->permissions; 0781 } 0782 0783 void NetworkManager::ConnectionSettings::setAutoconnect(bool autoconnect) 0784 { 0785 Q_D(ConnectionSettings); 0786 0787 d->autoconnect = autoconnect; 0788 } 0789 0790 bool NetworkManager::ConnectionSettings::autoconnect() const 0791 { 0792 Q_D(const ConnectionSettings); 0793 0794 return d->autoconnect; 0795 } 0796 0797 void NetworkManager::ConnectionSettings::setAutoconnectPriority(int priority) 0798 { 0799 Q_D(ConnectionSettings); 0800 0801 d->autoconnectPriority = priority; 0802 } 0803 0804 int NetworkManager::ConnectionSettings::autoconnectPriority() const 0805 { 0806 Q_D(const ConnectionSettings); 0807 0808 return d->autoconnectPriority; 0809 } 0810 0811 void NetworkManager::ConnectionSettings::setTimestamp(const QDateTime ×tamp) 0812 { 0813 Q_D(ConnectionSettings); 0814 0815 d->timestamp = timestamp; 0816 } 0817 0818 QDateTime NetworkManager::ConnectionSettings::timestamp() const 0819 { 0820 Q_D(const ConnectionSettings); 0821 0822 return d->timestamp; 0823 } 0824 0825 void NetworkManager::ConnectionSettings::setReadOnly(bool readonly) 0826 { 0827 Q_D(ConnectionSettings); 0828 0829 d->readOnly = readonly; 0830 } 0831 0832 bool NetworkManager::ConnectionSettings::readOnly() const 0833 { 0834 Q_D(const ConnectionSettings); 0835 0836 return d->readOnly; 0837 } 0838 0839 void NetworkManager::ConnectionSettings::setZone(const QString &zone) 0840 { 0841 Q_D(ConnectionSettings); 0842 0843 d->zone = zone; 0844 } 0845 0846 QString NetworkManager::ConnectionSettings::zone() const 0847 { 0848 Q_D(const ConnectionSettings); 0849 0850 return d->zone; 0851 } 0852 0853 bool NetworkManager::ConnectionSettings::isSlave() const 0854 { 0855 Q_D(const ConnectionSettings); 0856 0857 return !d->master.isEmpty() && !d->slaveType.isEmpty(); 0858 } 0859 0860 void NetworkManager::ConnectionSettings::setMaster(const QString &master) 0861 { 0862 Q_D(ConnectionSettings); 0863 0864 d->master = master; 0865 } 0866 0867 QString NetworkManager::ConnectionSettings::master() const 0868 { 0869 Q_D(const ConnectionSettings); 0870 0871 return d->master; 0872 } 0873 0874 void NetworkManager::ConnectionSettings::setSlaveType(const QString &type) 0875 { 0876 Q_D(ConnectionSettings); 0877 0878 d->slaveType = type; 0879 } 0880 0881 QString NetworkManager::ConnectionSettings::slaveType() const 0882 { 0883 Q_D(const ConnectionSettings); 0884 0885 return d->slaveType; 0886 } 0887 0888 void NetworkManager::ConnectionSettings::setSecondaries(const QStringList &secondaries) 0889 { 0890 Q_D(ConnectionSettings); 0891 0892 d->secondaries = secondaries; 0893 } 0894 0895 QStringList NetworkManager::ConnectionSettings::secondaries() const 0896 { 0897 Q_D(const ConnectionSettings); 0898 0899 return d->secondaries; 0900 } 0901 0902 void NetworkManager::ConnectionSettings::setGatewayPingTimeout(quint32 timeout) 0903 { 0904 Q_D(ConnectionSettings); 0905 0906 d->gatewayPingTimeout = timeout; 0907 } 0908 0909 quint32 NetworkManager::ConnectionSettings::gatewayPingTimeout() const 0910 { 0911 Q_D(const ConnectionSettings); 0912 0913 return d->gatewayPingTimeout; 0914 } 0915 0916 int NetworkManager::ConnectionSettings::autoconnectRetries() const 0917 { 0918 Q_D(const ConnectionSettings); 0919 0920 return d->autoconnectRetries; 0921 } 0922 0923 void NetworkManager::ConnectionSettings::setAutoconnectRetries(int retries) 0924 { 0925 Q_D(ConnectionSettings); 0926 0927 d->autoconnectRetries = retries; 0928 } 0929 0930 NetworkManager::ConnectionSettings::AutoconnectSlaves NetworkManager::ConnectionSettings::autoconnectSlaves() const 0931 { 0932 Q_D(const ConnectionSettings); 0933 0934 return d->autoconnectSlaves; 0935 } 0936 0937 void NetworkManager::ConnectionSettings::setAutoconnectSlaves(NetworkManager::ConnectionSettings::AutoconnectSlaves autoconnectSlaves) 0938 { 0939 Q_D(ConnectionSettings); 0940 0941 d->autoconnectSlaves = autoconnectSlaves; 0942 } 0943 0944 NetworkManager::ConnectionSettings::Lldp NetworkManager::ConnectionSettings::lldp() const 0945 { 0946 Q_D(const ConnectionSettings); 0947 0948 return d->lldp; 0949 } 0950 0951 void NetworkManager::ConnectionSettings::setLldp(NetworkManager::ConnectionSettings::Lldp lldp) 0952 { 0953 Q_D(ConnectionSettings); 0954 0955 d->lldp = lldp; 0956 } 0957 0958 NetworkManager::ConnectionSettings::Metered NetworkManager::ConnectionSettings::metered() const 0959 { 0960 Q_D(const ConnectionSettings); 0961 0962 return d->metered; 0963 } 0964 0965 void NetworkManager::ConnectionSettings::setMetered(NetworkManager::ConnectionSettings::Metered metered) 0966 { 0967 Q_D(ConnectionSettings); 0968 0969 d->metered = metered; 0970 } 0971 0972 NetworkManager::ConnectionSettings::Mdns NetworkManager::ConnectionSettings::mdns() const 0973 { 0974 Q_D(const ConnectionSettings); 0975 0976 return d->mdns; 0977 } 0978 0979 void NetworkManager::ConnectionSettings::setMdns(NetworkManager::ConnectionSettings::Mdns mdns) 0980 { 0981 Q_D(ConnectionSettings); 0982 0983 d->mdns = mdns; 0984 } 0985 0986 QString NetworkManager::ConnectionSettings::stableId() const 0987 { 0988 Q_D(const ConnectionSettings); 0989 0990 return d->stableId; 0991 } 0992 0993 void NetworkManager::ConnectionSettings::setStableId(const QString &stableId) 0994 { 0995 Q_D(ConnectionSettings); 0996 0997 d->stableId = stableId; 0998 } 0999 1000 NetworkManager::Setting::Ptr NetworkManager::ConnectionSettings::setting(Setting::SettingType type) const 1001 { 1002 const auto settingsList = settings(); 1003 for (const Setting::Ptr &setting : settingsList) { 1004 if (setting->type() == type) { 1005 return setting; 1006 } 1007 } 1008 1009 return Setting::Ptr(); 1010 } 1011 1012 NetworkManager::Setting::Ptr NetworkManager::ConnectionSettings::setting(const QString &type) const 1013 { 1014 return setting(Setting::typeFromString(type)); 1015 } 1016 1017 NetworkManager::Setting::List NetworkManager::ConnectionSettings::settings() const 1018 { 1019 Q_D(const ConnectionSettings); 1020 1021 return d->settings; 1022 } 1023 1024 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::ConnectionSettings &setting) 1025 { 1026 dbg.nospace() << "CONNECTION SETTINGS\n"; 1027 dbg.nospace() << "===================\n"; 1028 1029 dbg.nospace() << NM_SETTING_CONNECTION_ID << ": " << setting.id() << '\n'; 1030 dbg.nospace() << NM_SETTING_CONNECTION_UUID << ": " << setting.uuid() << '\n'; 1031 dbg.nospace() << NM_SETTING_CONNECTION_INTERFACE_NAME << ": " << setting.interfaceName() << '\n'; 1032 dbg.nospace() << NM_SETTING_CONNECTION_TYPE << ": " << setting.typeAsString(setting.connectionType()) << '\n'; 1033 dbg.nospace() << NM_SETTING_CONNECTION_PERMISSIONS << ": " << setting.permissions() << '\n'; 1034 dbg.nospace() << NM_SETTING_CONNECTION_AUTOCONNECT << ": " << setting.autoconnect() << '\n'; 1035 dbg.nospace() << NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY << ": " << setting.autoconnectPriority() << '\n'; 1036 dbg.nospace() << NM_SETTING_CONNECTION_TIMESTAMP << ": " << setting.timestamp().toSecsSinceEpoch() << '\n'; 1037 dbg.nospace() << NM_SETTING_CONNECTION_READ_ONLY << ": " << setting.readOnly() << '\n'; 1038 dbg.nospace() << NM_SETTING_CONNECTION_ZONE << ": " << setting.zone() << '\n'; 1039 dbg.nospace() << NM_SETTING_CONNECTION_MASTER << ": " << setting.master() << '\n'; 1040 dbg.nospace() << NM_SETTING_CONNECTION_SLAVE_TYPE << ": " << setting.slaveType() << '\n'; 1041 dbg.nospace() << NM_SETTING_CONNECTION_SECONDARIES << ": " << setting.secondaries() << '\n'; 1042 dbg.nospace() << NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT << ": " << setting.gatewayPingTimeout() << '\n'; 1043 dbg.nospace() << NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES << ": " << setting.autoconnectRetries() << '\n'; 1044 dbg.nospace() << NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES << ": " << setting.autoconnectSlaves() << '\n'; 1045 dbg.nospace() << NM_SETTING_CONNECTION_LLDP << ": " << setting.lldp() << '\n'; 1046 dbg.nospace() << NM_SETTING_CONNECTION_METERED << ": " << setting.metered() << '\n'; 1047 dbg.nospace() << NM_SETTING_CONNECTION_MDNS << ": " << setting.mdns() << '\n'; 1048 dbg.nospace() << NM_SETTING_CONNECTION_STABLE_ID << ": " << setting.stableId() << '\n'; 1049 dbg.nospace() << "===================\n"; 1050 const auto settingsList = setting.settings(); 1051 for (const Setting::Ptr &settingPtr : settingsList) { 1052 dbg.nospace() << settingPtr->typeAsString(settingPtr->type()).toUpper() << " SETTINGS\n"; 1053 dbg.nospace() << "---------------------------\n"; 1054 switch (settingPtr->type()) { 1055 case Setting::Adsl: 1056 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::AdslSetting>().data()); 1057 break; 1058 case Setting::Bond: 1059 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::BondSetting>().data()); 1060 break; 1061 case Setting::Bluetooth: 1062 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::BluetoothSetting>().data()); 1063 break; 1064 case Setting::Bridge: 1065 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::BridgeSetting>().data()); 1066 break; 1067 case Setting::BridgePort: 1068 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::BridgePortSetting>().data()); 1069 break; 1070 case Setting::Cdma: 1071 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::CdmaSetting>().data()); 1072 break; 1073 case Setting::Gsm: 1074 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::GsmSetting>().data()); 1075 break; 1076 case Setting::Infiniband: 1077 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::InfinibandSetting>().data()); 1078 break; 1079 case Setting::Ipv4: 1080 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::Ipv4Setting>().data()); 1081 break; 1082 case Setting::Ipv6: 1083 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::Ipv6Setting>().data()); 1084 break; 1085 case Setting::OlpcMesh: 1086 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::OlpcMeshSetting>().data()); 1087 break; 1088 case Setting::Ppp: 1089 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::PppSetting>().data()); 1090 break; 1091 case Setting::Pppoe: 1092 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::PppoeSetting>().data()); 1093 break; 1094 case Setting::Security8021x: 1095 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::Security8021xSetting>().data()); 1096 break; 1097 case Setting::Serial: 1098 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::SerialSetting>().data()); 1099 break; 1100 case Setting::Vlan: 1101 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::VlanSetting>().data()); 1102 break; 1103 case Setting::Vpn: 1104 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::VpnSetting>().data()); 1105 break; 1106 case Setting::Wimax: 1107 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::WimaxSetting>().data()); 1108 break; 1109 case Setting::Wired: 1110 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::WiredSetting>().data()); 1111 break; 1112 case Setting::Wireless: 1113 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::WirelessSetting>().data()); 1114 break; 1115 case Setting::WirelessSecurity: 1116 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::WirelessSecuritySetting>().data()); 1117 break; 1118 case Setting::Team: 1119 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::TeamSetting>().data()); 1120 break; 1121 case Setting::Tun: 1122 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::TunSetting>().data()); 1123 break; 1124 case Setting::IpTunnel: 1125 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::IpTunnelSetting>().data()); 1126 break; 1127 case Setting::WireGuard: 1128 dbg.nospace() << *(settingPtr.staticCast<NetworkManager::WireGuardSetting>().data()); 1129 break; 1130 default: 1131 dbg.nospace() << *settingPtr.data(); 1132 } 1133 1134 dbg.nospace() << '\n'; 1135 } 1136 return dbg.maybeSpace(); 1137 }