File indexing completed on 2024-04-14 03:57:38
0001 /* 0002 SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "setting.h" 0008 0009 #undef signals 0010 #include <nm-version.h> 0011 #define signals Q_SIGNALS 0012 0013 #include <QDebug> 0014 0015 #if !NM_CHECK_VERSION(1, 16, 0) 0016 #define NM_SETTING_WIREGUARD_SETTING_NAME "wireguard" 0017 #endif 0018 0019 #if !NM_CHECK_VERSION(1, 14, 0) 0020 #define NM_SETTING_MATCH_SETTING_NAME "match" 0021 #endif 0022 0023 #if !NM_CHECK_VERSION(1, 10, 0) 0024 #define NM_SETTING_OVS_BRIDGE_SETTING_NAME "ovs-bridge" 0025 #define NM_SETTING_OVS_INTERFACE_SETTING_NAME "ovs-interface" 0026 #define NM_SETTING_OVS_PATCH_SETTING_NAME "ovs-patch" 0027 #define NM_SETTING_OVS_PORT_SETTING_NAME "ovs-port" 0028 #define NM_SETTING_TC_CONFIG_SETTING_NAME "tc" 0029 #define NM_SETTING_TEAM_PORT_SETTING_NAME "team-port" 0030 #endif 0031 0032 #if !NM_CHECK_VERSION(1, 8, 0) 0033 #define NM_SETTING_USER_SETTING_NAME "user" 0034 #endif 0035 0036 #if !NM_CHECK_VERSION(1, 6, 0) 0037 #define NM_SETTING_MACSEC_SETTING_NAME "macsec" 0038 #define NM_SETTING_PROXY_SETTING_NAME "proxy" 0039 #endif 0040 0041 namespace NetworkManager 0042 { 0043 class SettingPrivate 0044 { 0045 public: 0046 SettingPrivate(); 0047 0048 Setting::SettingType type; 0049 bool initialized; 0050 }; 0051 0052 QDebug operator<<(QDebug dbg, const Setting &setting) 0053 { 0054 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0055 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0056 return dbg.maybeSpace(); 0057 } 0058 0059 } 0060 0061 NetworkManager::SettingPrivate::SettingPrivate() 0062 : type(Setting::Wired) 0063 , initialized(false) 0064 { 0065 } 0066 0067 QString NetworkManager::Setting::typeAsString(NetworkManager::Setting::SettingType type) 0068 { 0069 QString typeString; 0070 0071 switch (type) { 0072 case Cdma: 0073 typeString = QLatin1String(NM_SETTING_CDMA_SETTING_NAME); 0074 break; 0075 case Gsm: 0076 typeString = QLatin1String(NM_SETTING_GSM_SETTING_NAME); 0077 break; 0078 case Bluetooth: 0079 typeString = QLatin1String(NM_SETTING_BLUETOOTH_SETTING_NAME); 0080 break; 0081 case Ipv4: 0082 typeString = QLatin1String(NM_SETTING_IP4_CONFIG_SETTING_NAME); 0083 break; 0084 case Ipv6: 0085 typeString = QLatin1String(NM_SETTING_IP6_CONFIG_SETTING_NAME); 0086 break; 0087 case Ppp: 0088 typeString = QLatin1String(NM_SETTING_PPP_SETTING_NAME); 0089 break; 0090 case Pppoe: 0091 typeString = QLatin1String(NM_SETTING_PPPOE_SETTING_NAME); 0092 break; 0093 case Security8021x: 0094 typeString = QLatin1String(NM_SETTING_802_1X_SETTING_NAME); 0095 break; 0096 case Serial: 0097 typeString = QLatin1String(NM_SETTING_SERIAL_SETTING_NAME); 0098 break; 0099 case Vpn: 0100 typeString = QLatin1String(NM_SETTING_VPN_SETTING_NAME); 0101 break; 0102 case Wired: 0103 typeString = QLatin1String(NM_SETTING_WIRED_SETTING_NAME); 0104 break; 0105 case Wireless: 0106 typeString = QLatin1String(NM_SETTING_WIRELESS_SETTING_NAME); 0107 break; 0108 case WirelessSecurity: 0109 typeString = QLatin1String(NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); 0110 break; 0111 case OlpcMesh: 0112 typeString = QLatin1String(NM_SETTING_OLPC_MESH_SETTING_NAME); 0113 break; 0114 case Vlan: 0115 typeString = QLatin1String(NM_SETTING_VLAN_SETTING_NAME); 0116 break; 0117 case Wimax: 0118 typeString = QLatin1String(NM_SETTING_WIMAX_SETTING_NAME); 0119 break; 0120 case Bond: 0121 typeString = QLatin1String(NM_SETTING_BOND_SETTING_NAME); 0122 break; 0123 case Bridge: 0124 typeString = QLatin1String(NM_SETTING_BRIDGE_SETTING_NAME); 0125 break; 0126 case Team: 0127 typeString = QLatin1String(NM_SETTING_TEAM_SETTING_NAME); 0128 break; 0129 case Vxlan: 0130 typeString = QLatin1String(NM_SETTING_VXLAN_SETTING_NAME); 0131 break; 0132 case IpTunnel: 0133 typeString = QLatin1String(NM_SETTING_IP_TUNNEL_SETTING_NAME); 0134 break; 0135 case Proxy: 0136 typeString = QLatin1String(NM_SETTING_PROXY_SETTING_NAME); 0137 break; 0138 case User: 0139 typeString = QLatin1String(NM_SETTING_USER_SETTING_NAME); 0140 break; 0141 case OvsInterface: 0142 typeString = QLatin1String(NM_SETTING_OVS_INTERFACE_SETTING_NAME); 0143 break; 0144 case OvsBridge: 0145 typeString = QLatin1String(NM_SETTING_OVS_BRIDGE_SETTING_NAME); 0146 break; 0147 case OvsPatch: 0148 typeString = QLatin1String(NM_SETTING_OVS_PATCH_SETTING_NAME); 0149 break; 0150 case OvsPort: 0151 typeString = QLatin1String(NM_SETTING_OVS_PORT_SETTING_NAME); 0152 break; 0153 case Match: 0154 typeString = QLatin1String(NM_SETTING_MATCH_SETTING_NAME); 0155 break; 0156 case Tc: 0157 typeString = QLatin1String(NM_SETTING_TC_CONFIG_SETTING_NAME); 0158 break; 0159 case TeamPort: 0160 typeString = QLatin1String(NM_SETTING_TEAM_PORT_SETTING_NAME); 0161 break; 0162 case Macsec: 0163 typeString = QLatin1String(NM_SETTING_MACSEC_SETTING_NAME); 0164 break; 0165 case Dcb: 0166 typeString = QLatin1String(NM_SETTING_DCB_SETTING_NAME); 0167 break; 0168 case NetworkManager::Setting::WireGuard: 0169 typeString = QLatin1String(NM_SETTING_WIREGUARD_SETTING_NAME); 0170 break; 0171 case NetworkManager::Setting::Generic: 0172 typeString = QLatin1String(NM_SETTING_GENERIC_SETTING_NAME); 0173 break; 0174 default: 0175 break; 0176 } 0177 0178 return typeString; 0179 } 0180 0181 NetworkManager::Setting::SettingType NetworkManager::Setting::typeFromString(const QString &typeString) 0182 { 0183 SettingType type = Wired; 0184 0185 if (typeString == QLatin1String(NM_SETTING_CDMA_SETTING_NAME)) { 0186 type = Cdma; 0187 } else if (typeString == QLatin1String(NM_SETTING_GSM_SETTING_NAME)) { 0188 type = Gsm; 0189 } else if (typeString == QLatin1String(NM_SETTING_BLUETOOTH_SETTING_NAME)) { 0190 type = Bluetooth; 0191 } else if (typeString == QLatin1String(NM_SETTING_IP4_CONFIG_SETTING_NAME)) { 0192 type = Ipv4; 0193 } else if (typeString == QLatin1String(NM_SETTING_IP6_CONFIG_SETTING_NAME)) { 0194 type = Ipv6; 0195 } else if (typeString == QLatin1String(NM_SETTING_PPP_SETTING_NAME)) { 0196 type = Ppp; 0197 } else if (typeString == QLatin1String(NM_SETTING_PPPOE_SETTING_NAME)) { 0198 type = Pppoe; 0199 } else if (typeString == QLatin1String(NM_SETTING_SERIAL_SETTING_NAME)) { 0200 type = Serial; 0201 } else if (typeString == QLatin1String(NM_SETTING_802_1X_SETTING_NAME)) { 0202 type = Security8021x; 0203 } else if (typeString == QLatin1String(NM_SETTING_VPN_SETTING_NAME)) { 0204 type = Vpn; 0205 } else if (typeString == QLatin1String(NM_SETTING_WIRED_SETTING_NAME)) { 0206 type = Wired; 0207 } else if (typeString == QLatin1String(NM_SETTING_WIRELESS_SETTING_NAME)) { 0208 type = Wireless; 0209 } else if (typeString == QLatin1String(NM_SETTING_WIRELESS_SECURITY_SETTING_NAME)) { 0210 type = WirelessSecurity; 0211 } else if (typeString == QLatin1String(NM_SETTING_OLPC_MESH_SETTING_NAME)) { 0212 type = OlpcMesh; 0213 } else if (typeString == QLatin1String(NM_SETTING_VLAN_SETTING_NAME)) { 0214 type = Vlan; 0215 } else if (typeString == QLatin1String(NM_SETTING_WIMAX_SETTING_NAME)) { 0216 type = Wimax; 0217 } else if (typeString == QLatin1String(NM_SETTING_BOND_SETTING_NAME)) { 0218 type = Bond; 0219 } else if (typeString == QLatin1String(NM_SETTING_BRIDGE_SETTING_NAME)) { 0220 type = Bridge; 0221 } else if (typeString == QLatin1String(NM_SETTING_TEAM_SETTING_NAME)) { 0222 type = Team; 0223 } else if (typeString == QLatin1String(NM_SETTING_VXLAN_SETTING_NAME)) { 0224 type = Vxlan; 0225 } else if (typeString == QLatin1String(NM_SETTING_IP_TUNNEL_SETTING_NAME)) { 0226 type = IpTunnel; 0227 } else if (typeString == QLatin1String(NM_SETTING_GENERIC_SETTING_NAME)) { 0228 type = Generic; 0229 } else if (typeString == QLatin1String(NM_SETTING_USER_SETTING_NAME)) { 0230 type = User; 0231 } else if (typeString == QLatin1String(NM_SETTING_PROXY_SETTING_NAME)) { 0232 type = Proxy; 0233 } else if (typeString == QLatin1String(NM_SETTING_OVS_INTERFACE_SETTING_NAME)) { 0234 type = OvsInterface; 0235 } else if (typeString == QLatin1String(NM_SETTING_OVS_BRIDGE_SETTING_NAME)) { 0236 type = OvsBridge; 0237 } else if (typeString == QLatin1String(NM_SETTING_OVS_PATCH_SETTING_NAME)) { 0238 type = OvsPatch; 0239 } else if (typeString == QLatin1String(NM_SETTING_OVS_PORT_SETTING_NAME)) { 0240 type = OvsPort; 0241 } else if (typeString == QLatin1String(NM_SETTING_MATCH_SETTING_NAME)) { 0242 type = Match; 0243 } else if (typeString == QLatin1String(NM_SETTING_TC_CONFIG_SETTING_NAME)) { 0244 type = Tc; 0245 } else if (typeString == QLatin1String(NM_SETTING_TEAM_PORT_SETTING_NAME)) { 0246 type = TeamPort; 0247 } else if (typeString == QLatin1String(NM_SETTING_MACSEC_SETTING_NAME)) { 0248 type = Macsec; 0249 } else if (typeString == QLatin1String(NM_SETTING_DCB_SETTING_NAME)) { 0250 type = Dcb; 0251 } else if (typeString == QLatin1String(NM_SETTING_WIREGUARD_SETTING_NAME)) { 0252 type = WireGuard; 0253 } 0254 0255 return type; 0256 } 0257 0258 NetworkManager::Setting::Setting(SettingType type) 0259 : d_ptr(new SettingPrivate()) 0260 { 0261 setType(type); 0262 } 0263 0264 NetworkManager::Setting::Setting(const NetworkManager::Setting::Ptr &setting) 0265 : d_ptr(new SettingPrivate()) 0266 { 0267 setInitialized(!setting->isNull()); 0268 setType(setting->type()); 0269 } 0270 0271 NetworkManager::Setting::~Setting() 0272 { 0273 delete d_ptr; 0274 } 0275 0276 void NetworkManager::Setting::fromMap(const QVariantMap &map) 0277 { 0278 Q_UNUSED(map); 0279 } 0280 0281 QVariantMap NetworkManager::Setting::toMap() const 0282 { 0283 return QVariantMap(); 0284 } 0285 0286 QStringList NetworkManager::Setting::needSecrets(bool requestNew) const 0287 { 0288 Q_UNUSED(requestNew); 0289 return QStringList(); 0290 } 0291 0292 QString NetworkManager::Setting::name() const 0293 { 0294 return QString(); 0295 } 0296 0297 void NetworkManager::Setting::secretsFromMap(const QVariantMap &map) 0298 { 0299 Q_UNUSED(map); 0300 } 0301 0302 void NetworkManager::Setting::secretsFromStringMap(const NMStringMap &map) 0303 { 0304 QVariantMap secretsMap; 0305 NMStringMap::ConstIterator i = map.constBegin(); 0306 while (i != map.constEnd()) { 0307 secretsMap.insert(i.key(), i.value()); 0308 ++i; 0309 } 0310 secretsFromMap(secretsMap); 0311 } 0312 0313 QVariantMap NetworkManager::Setting::secretsToMap() const 0314 { 0315 return QVariantMap(); 0316 } 0317 0318 NMStringMap NetworkManager::Setting::secretsToStringMap() const 0319 { 0320 NMStringMap ret; 0321 QVariantMap secretsMap = secretsToMap(); 0322 QVariantMap::ConstIterator i = secretsMap.constBegin(); 0323 while (i != secretsMap.constEnd()) { 0324 ret.insert(i.key(), i.value().toString()); 0325 ++i; 0326 } 0327 0328 return ret; 0329 } 0330 0331 void NetworkManager::Setting::setInitialized(bool initialized) 0332 { 0333 Q_D(Setting); 0334 0335 d->initialized = initialized; 0336 } 0337 0338 bool NetworkManager::Setting::isNull() const 0339 { 0340 Q_D(const Setting); 0341 0342 return !d->initialized; 0343 } 0344 0345 void NetworkManager::Setting::setType(NetworkManager::Setting::SettingType type) 0346 { 0347 Q_D(Setting); 0348 0349 d->type = type; 0350 } 0351 0352 NetworkManager::Setting::SettingType NetworkManager::Setting::type() const 0353 { 0354 Q_D(const Setting); 0355 0356 return d->type; 0357 }