File indexing completed on 2024-04-21 04:00:07
0001 /* 0002 SPDX-FileCopyrightText: 2018 Billy Laws <blaws05@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "vxlansetting.h" 0008 #include "vxlansetting_p.h" 0009 0010 #include <QDebug> 0011 0012 NetworkManager::VxlanSettingPrivate::VxlanSettingPrivate() 0013 : name(NM_SETTING_VXLAN_SETTING_NAME) 0014 , ageing(32) 0015 , destinationPort(8472) 0016 , id(0) 0017 , l2Miss(false) 0018 , l3Miss(false) 0019 , learning(true) 0020 , limit(0) 0021 , proxy(false) 0022 , rsc(false) 0023 , sourcePortMax(0) 0024 , sourcePortMin(0) 0025 , tos(0) 0026 , ttl(0) 0027 { 0028 } 0029 0030 NetworkManager::VxlanSetting::VxlanSetting() 0031 : Setting(Setting::Vxlan) 0032 , d_ptr(new VxlanSettingPrivate()) 0033 { 0034 } 0035 0036 NetworkManager::VxlanSetting::VxlanSetting(const NetworkManager::VxlanSetting::Ptr &other) 0037 : Setting(other) 0038 , d_ptr(new VxlanSettingPrivate()) 0039 { 0040 setAgeing(other->ageing()); 0041 setDestinationPort(other->destinationPort()); 0042 setId(other->id()); 0043 setL2Miss(other->l2Miss()); 0044 setL3Miss(other->l3Miss()); 0045 setLearning(other->learning()); 0046 setLimit(other->limit()); 0047 setLocal(other->local()); 0048 setParent(other->parent()); 0049 setProxy(other->proxy()); 0050 setRemote(other->remote()); 0051 setRsc(other->rsc()); 0052 setSourcePortMax(other->sourcePortMax()); 0053 setSourcePortMin(other->sourcePortMin()); 0054 setTos(other->tos()); 0055 setTtl(other->ttl()); 0056 } 0057 0058 NetworkManager::VxlanSetting::~VxlanSetting() 0059 { 0060 delete d_ptr; 0061 } 0062 0063 QString NetworkManager::VxlanSetting::name() const 0064 { 0065 Q_D(const VxlanSetting); 0066 0067 return d->name; 0068 } 0069 0070 void NetworkManager::VxlanSetting::setAgeing(quint32 ageing) 0071 { 0072 Q_D(VxlanSetting); 0073 0074 d->ageing = ageing; 0075 } 0076 0077 quint32 NetworkManager::VxlanSetting::ageing() const 0078 { 0079 Q_D(const VxlanSetting); 0080 0081 return d->ageing; 0082 } 0083 0084 void NetworkManager::VxlanSetting::setDestinationPort(quint32 port) 0085 { 0086 Q_D(VxlanSetting); 0087 0088 d->destinationPort = port; 0089 } 0090 0091 quint32 NetworkManager::VxlanSetting::destinationPort() const 0092 { 0093 Q_D(const VxlanSetting); 0094 0095 return d->destinationPort; 0096 } 0097 0098 void NetworkManager::VxlanSetting::setId(quint32 id) 0099 { 0100 Q_D(VxlanSetting); 0101 0102 d->id = id; 0103 } 0104 0105 quint32 NetworkManager::VxlanSetting::id() const 0106 { 0107 Q_D(const VxlanSetting); 0108 0109 return d->id; 0110 } 0111 0112 void NetworkManager::VxlanSetting::setL2Miss(bool enable) 0113 { 0114 Q_D(VxlanSetting); 0115 0116 d->l2Miss = enable; 0117 } 0118 0119 bool NetworkManager::VxlanSetting::l2Miss() const 0120 { 0121 Q_D(const VxlanSetting); 0122 0123 return d->l2Miss; 0124 } 0125 0126 void NetworkManager::VxlanSetting::setL3Miss(bool enable) 0127 { 0128 Q_D(VxlanSetting); 0129 0130 d->l3Miss = enable; 0131 } 0132 0133 bool NetworkManager::VxlanSetting::l3Miss() const 0134 { 0135 Q_D(const VxlanSetting); 0136 0137 return d->l3Miss; 0138 } 0139 0140 void NetworkManager::VxlanSetting::setLearning(bool enable) 0141 { 0142 Q_D(VxlanSetting); 0143 0144 d->learning = enable; 0145 } 0146 0147 bool NetworkManager::VxlanSetting::learning() const 0148 { 0149 Q_D(const VxlanSetting); 0150 0151 return d->learning; 0152 } 0153 0154 void NetworkManager::VxlanSetting::setLimit(quint32 limit) 0155 { 0156 Q_D(VxlanSetting); 0157 0158 d->limit = limit; 0159 } 0160 0161 quint32 NetworkManager::VxlanSetting::limit() const 0162 { 0163 Q_D(const VxlanSetting); 0164 0165 return d->limit; 0166 } 0167 0168 void NetworkManager::VxlanSetting::setLocal(QString local) 0169 { 0170 Q_D(VxlanSetting); 0171 0172 d->local = local; 0173 } 0174 0175 QString NetworkManager::VxlanSetting::local() const 0176 { 0177 Q_D(const VxlanSetting); 0178 0179 return d->local; 0180 } 0181 0182 void NetworkManager::VxlanSetting::setParent(QString parent) 0183 { 0184 Q_D(VxlanSetting); 0185 0186 d->parent = parent; 0187 } 0188 0189 QString NetworkManager::VxlanSetting::parent() const 0190 { 0191 Q_D(const VxlanSetting); 0192 0193 return d->parent; 0194 } 0195 0196 void NetworkManager::VxlanSetting::setProxy(bool enable) 0197 { 0198 Q_D(VxlanSetting); 0199 0200 d->proxy = enable; 0201 } 0202 0203 bool NetworkManager::VxlanSetting::proxy() const 0204 { 0205 Q_D(const VxlanSetting); 0206 0207 return d->proxy; 0208 } 0209 0210 void NetworkManager::VxlanSetting::setRemote(QString remote) 0211 { 0212 Q_D(VxlanSetting); 0213 0214 d->remote = remote; 0215 } 0216 0217 QString NetworkManager::VxlanSetting::remote() const 0218 { 0219 Q_D(const VxlanSetting); 0220 0221 return d->remote; 0222 } 0223 0224 void NetworkManager::VxlanSetting::setRsc(bool enable) 0225 { 0226 Q_D(VxlanSetting); 0227 0228 d->rsc = enable; 0229 } 0230 0231 bool NetworkManager::VxlanSetting::rsc() const 0232 { 0233 Q_D(const VxlanSetting); 0234 0235 return d->rsc; 0236 } 0237 0238 void NetworkManager::VxlanSetting::setSourcePortMax(quint32 maxPort) 0239 { 0240 Q_D(VxlanSetting); 0241 0242 d->sourcePortMax = maxPort; 0243 } 0244 0245 quint32 NetworkManager::VxlanSetting::sourcePortMax() const 0246 { 0247 Q_D(const VxlanSetting); 0248 0249 return d->sourcePortMax; 0250 } 0251 0252 void NetworkManager::VxlanSetting::setSourcePortMin(quint32 minPort) 0253 { 0254 Q_D(VxlanSetting); 0255 0256 d->sourcePortMin = minPort; 0257 } 0258 0259 quint32 NetworkManager::VxlanSetting::sourcePortMin() const 0260 { 0261 Q_D(const VxlanSetting); 0262 0263 return d->sourcePortMin; 0264 } 0265 0266 void NetworkManager::VxlanSetting::setTos(quint32 tos) 0267 { 0268 Q_D(VxlanSetting); 0269 0270 d->tos = tos; 0271 } 0272 0273 quint32 NetworkManager::VxlanSetting::tos() const 0274 { 0275 Q_D(const VxlanSetting); 0276 0277 return d->tos; 0278 } 0279 0280 void NetworkManager::VxlanSetting::setTtl(quint32 ttl) 0281 { 0282 Q_D(VxlanSetting); 0283 0284 d->ttl = ttl; 0285 } 0286 0287 quint32 NetworkManager::VxlanSetting::ttl() const 0288 { 0289 Q_D(const VxlanSetting); 0290 0291 return d->ttl; 0292 } 0293 void NetworkManager::VxlanSetting::fromMap(const QVariantMap &setting) 0294 { 0295 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_AGEING))) { 0296 setAgeing(setting.value(QLatin1String(NM_SETTING_VXLAN_AGEING)).toUInt()); 0297 } 0298 0299 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_DESTINATION_PORT))) { 0300 setDestinationPort(setting.value(QLatin1String(NM_SETTING_VXLAN_DESTINATION_PORT)).toUInt()); 0301 } 0302 0303 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_ID))) { 0304 setId(setting.value(QLatin1String(NM_SETTING_VXLAN_ID)).toUInt()); 0305 } 0306 0307 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_L2_MISS))) { 0308 setL2Miss(setting.value(QLatin1String(NM_SETTING_VXLAN_L2_MISS)).toBool()); 0309 } 0310 0311 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_L3_MISS))) { 0312 setL3Miss(setting.value(QLatin1String(NM_SETTING_VXLAN_L3_MISS)).toBool()); 0313 } 0314 0315 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_LEARNING))) { 0316 setLearning(setting.value(QLatin1String(NM_SETTING_VXLAN_LEARNING)).toBool()); 0317 } 0318 0319 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_LIMIT))) { 0320 setLimit(setting.value(QLatin1String(NM_SETTING_VXLAN_LIMIT)).toUInt()); 0321 } 0322 0323 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_LOCAL))) { 0324 setLocal(setting.value(QLatin1String(NM_SETTING_VXLAN_LOCAL)).toString()); 0325 } 0326 0327 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_PARENT))) { 0328 setParent(setting.value(QLatin1String(NM_SETTING_VXLAN_PARENT)).toString()); 0329 } 0330 0331 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_PROXY))) { 0332 setProxy(setting.value(QLatin1String(NM_SETTING_VXLAN_PROXY)).toBool()); 0333 } 0334 0335 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_REMOTE))) { 0336 setRemote(setting.value(QLatin1String(NM_SETTING_VXLAN_REMOTE)).toString()); 0337 } 0338 0339 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_RSC))) { 0340 setRsc(setting.value(QLatin1String(NM_SETTING_VXLAN_RSC)).toBool()); 0341 } 0342 0343 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_SOURCE_PORT_MAX))) { 0344 setSourcePortMax(setting.value(QLatin1String(NM_SETTING_VXLAN_SOURCE_PORT_MAX)).toUInt()); 0345 } 0346 0347 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_SOURCE_PORT_MIN))) { 0348 setSourcePortMin(setting.value(QLatin1String(NM_SETTING_VXLAN_SOURCE_PORT_MIN)).toUInt()); 0349 } 0350 0351 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_TOS))) { 0352 setTos(setting.value(QLatin1String(NM_SETTING_VXLAN_TOS)).toUInt()); 0353 } 0354 0355 if (setting.contains(QLatin1String(NM_SETTING_VXLAN_TTL))) { 0356 setTtl(setting.value(QLatin1String(NM_SETTING_VXLAN_TTL)).toUInt()); 0357 } 0358 } 0359 0360 QVariantMap NetworkManager::VxlanSetting::toMap() const 0361 { 0362 QVariantMap setting; 0363 0364 if (ageing() != 32) { 0365 setting.insert(QLatin1String(NM_SETTING_VXLAN_AGEING), ageing()); 0366 } 0367 0368 if (destinationPort() != 8472) { 0369 setting.insert(QLatin1String(NM_SETTING_VXLAN_DESTINATION_PORT), destinationPort()); 0370 } 0371 0372 if (id()) { 0373 setting.insert(QLatin1String(NM_SETTING_VXLAN_ID), id()); 0374 } 0375 0376 if (l2Miss()) { 0377 setting.insert(QLatin1String(NM_SETTING_VXLAN_L2_MISS), l2Miss()); 0378 } 0379 0380 if (l3Miss()) { 0381 setting.insert(QLatin1String(NM_SETTING_VXLAN_L3_MISS), l3Miss()); 0382 } 0383 0384 if (!learning()) { 0385 setting.insert(QLatin1String(NM_SETTING_VXLAN_LEARNING), learning()); 0386 } 0387 0388 if (limit()) { 0389 setting.insert(QLatin1String(NM_SETTING_VXLAN_LIMIT), limit()); 0390 } 0391 0392 if (!local().isEmpty()) { 0393 setting.insert(QLatin1String(NM_SETTING_VXLAN_LOCAL), local()); 0394 } 0395 0396 if (!parent().isEmpty()) { 0397 setting.insert(QLatin1String(NM_SETTING_VXLAN_PARENT), parent()); 0398 } 0399 0400 if (proxy()) { 0401 setting.insert(QLatin1String(NM_SETTING_VXLAN_PROXY), proxy()); 0402 } 0403 0404 if (!remote().isEmpty()) { 0405 setting.insert(QLatin1String(NM_SETTING_VXLAN_REMOTE), remote()); 0406 } 0407 0408 if (rsc()) { 0409 setting.insert(QLatin1String(NM_SETTING_VXLAN_RSC), rsc()); 0410 } 0411 0412 if (sourcePortMax()) { 0413 setting.insert(QLatin1String(NM_SETTING_VXLAN_SOURCE_PORT_MAX), sourcePortMax()); 0414 } 0415 0416 if (sourcePortMin()) { 0417 setting.insert(QLatin1String(NM_SETTING_VXLAN_SOURCE_PORT_MIN), sourcePortMin()); 0418 } 0419 0420 if (tos()) { 0421 setting.insert(QLatin1String(NM_SETTING_VXLAN_TOS), tos()); 0422 } 0423 0424 if (ttl()) { 0425 setting.insert(QLatin1String(NM_SETTING_VXLAN_TTL), ttl()); 0426 } 0427 0428 return setting; 0429 } 0430 0431 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::VxlanSetting &setting) 0432 { 0433 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0434 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0435 0436 dbg.nospace() << NM_SETTING_VXLAN_AGEING << ": " << setting.ageing() << '\n'; 0437 dbg.nospace() << NM_SETTING_VXLAN_DESTINATION_PORT << ": " << setting.destinationPort() << '\n'; 0438 dbg.nospace() << NM_SETTING_VXLAN_ID << ": " << setting.id() << '\n'; 0439 dbg.nospace() << NM_SETTING_VXLAN_L2_MISS << ": " << setting.l2Miss() << '\n'; 0440 dbg.nospace() << NM_SETTING_VXLAN_L3_MISS << ": " << setting.l3Miss() << '\n'; 0441 dbg.nospace() << NM_SETTING_VXLAN_LEARNING << ": " << setting.learning() << '\n'; 0442 dbg.nospace() << NM_SETTING_VXLAN_LIMIT << ": " << setting.limit() << '\n'; 0443 dbg.nospace() << NM_SETTING_VXLAN_LOCAL << ": " << setting.local() << '\n'; 0444 dbg.nospace() << NM_SETTING_VXLAN_PARENT << ": " << setting.parent() << '\n'; 0445 dbg.nospace() << NM_SETTING_VXLAN_PROXY << ": " << setting.proxy() << '\n'; 0446 dbg.nospace() << NM_SETTING_VXLAN_REMOTE << ": " << setting.remote() << '\n'; 0447 dbg.nospace() << NM_SETTING_VXLAN_RSC << ": " << setting.rsc() << '\n'; 0448 dbg.nospace() << NM_SETTING_VXLAN_SOURCE_PORT_MAX << ": " << setting.sourcePortMax() << '\n'; 0449 dbg.nospace() << NM_SETTING_VXLAN_SOURCE_PORT_MIN << ": " << setting.sourcePortMin() << '\n'; 0450 dbg.nospace() << NM_SETTING_VXLAN_TOS << ": " << setting.tos() << '\n'; 0451 dbg.nospace() << NM_SETTING_VXLAN_TTL << ": " << setting.ttl() << '\n'; 0452 0453 return dbg.maybeSpace(); 0454 }