File indexing completed on 2024-04-21 04:00:00
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 "bridgesetting.h" 0008 #include "bridgesetting_p.h" 0009 0010 #define NM_SETTING_BRIDGE_INTERFACE_NAME "interface-name" 0011 0012 #include <QDebug> 0013 0014 NetworkManager::BridgeSettingPrivate::BridgeSettingPrivate() 0015 : name(NM_SETTING_BRIDGE_SETTING_NAME) 0016 , multicastSnooping(true) 0017 , stp(true) 0018 , priority(128) 0019 , forwardDelay(15) 0020 , helloTime(2) 0021 , maxAge(20) 0022 , agingTime(300) 0023 { 0024 } 0025 0026 NetworkManager::BridgeSetting::BridgeSetting() 0027 : Setting(Setting::Bridge) 0028 , d_ptr(new BridgeSettingPrivate()) 0029 { 0030 } 0031 0032 NetworkManager::BridgeSetting::BridgeSetting(const Ptr &other) 0033 : Setting(other) 0034 , d_ptr(new BridgeSettingPrivate()) 0035 { 0036 setInterfaceName(other->interfaceName()); 0037 setStp(other->stp()); 0038 setPriority(other->priority()); 0039 setForwardDelay(other->forwardDelay()); 0040 setHelloTime(other->helloTime()); 0041 setMaxAge(other->maxAge()); 0042 setAgingTime(other->agingTime()); 0043 setMulticastSnooping(other->multicastSnooping()); 0044 setMacAddress(other->macAddress()); 0045 } 0046 0047 NetworkManager::BridgeSetting::~BridgeSetting() 0048 { 0049 delete d_ptr; 0050 } 0051 0052 QString NetworkManager::BridgeSetting::name() const 0053 { 0054 Q_D(const BridgeSetting); 0055 0056 return d->name; 0057 } 0058 0059 void NetworkManager::BridgeSetting::setInterfaceName(const QString &name) 0060 { 0061 Q_D(BridgeSetting); 0062 0063 d->interfaceName = name; 0064 } 0065 0066 QString NetworkManager::BridgeSetting::interfaceName() const 0067 { 0068 Q_D(const BridgeSetting); 0069 0070 return d->interfaceName; 0071 } 0072 0073 void NetworkManager::BridgeSetting::setStp(bool enabled) 0074 { 0075 Q_D(BridgeSetting); 0076 0077 d->stp = enabled; 0078 } 0079 0080 bool NetworkManager::BridgeSetting::stp() const 0081 { 0082 Q_D(const BridgeSetting); 0083 0084 return d->stp; 0085 } 0086 0087 void NetworkManager::BridgeSetting::setPriority(quint32 priority) 0088 { 0089 Q_D(BridgeSetting); 0090 0091 d->priority = priority; 0092 } 0093 0094 quint32 NetworkManager::BridgeSetting::priority() const 0095 { 0096 Q_D(const BridgeSetting); 0097 0098 return d->priority; 0099 } 0100 0101 void NetworkManager::BridgeSetting::setForwardDelay(quint32 delay) 0102 { 0103 Q_D(BridgeSetting); 0104 0105 d->forwardDelay = delay; 0106 } 0107 0108 quint32 NetworkManager::BridgeSetting::forwardDelay() const 0109 { 0110 Q_D(const BridgeSetting); 0111 0112 return d->forwardDelay; 0113 } 0114 0115 void NetworkManager::BridgeSetting::setHelloTime(quint32 time) 0116 { 0117 Q_D(BridgeSetting); 0118 0119 d->helloTime = time; 0120 } 0121 0122 quint32 NetworkManager::BridgeSetting::helloTime() const 0123 { 0124 Q_D(const BridgeSetting); 0125 0126 return d->helloTime; 0127 } 0128 0129 void NetworkManager::BridgeSetting::setMaxAge(quint32 age) 0130 { 0131 Q_D(BridgeSetting); 0132 0133 d->maxAge = age; 0134 } 0135 0136 quint32 NetworkManager::BridgeSetting::maxAge() const 0137 { 0138 Q_D(const BridgeSetting); 0139 0140 return d->maxAge; 0141 } 0142 0143 void NetworkManager::BridgeSetting::setAgingTime(quint32 time) 0144 { 0145 Q_D(BridgeSetting); 0146 0147 d->agingTime = time; 0148 } 0149 0150 quint32 NetworkManager::BridgeSetting::agingTime() const 0151 { 0152 Q_D(const BridgeSetting); 0153 0154 return d->agingTime; 0155 } 0156 0157 void NetworkManager::BridgeSetting::setMulticastSnooping(bool snooping) 0158 { 0159 Q_D(BridgeSetting); 0160 0161 d->multicastSnooping = snooping; 0162 } 0163 0164 bool NetworkManager::BridgeSetting::multicastSnooping() const 0165 { 0166 Q_D(const BridgeSetting); 0167 0168 return d->multicastSnooping; 0169 } 0170 0171 void NetworkManager::BridgeSetting::setMacAddress(const QByteArray &address) 0172 { 0173 Q_D(BridgeSetting); 0174 0175 d->macAddress = address; 0176 } 0177 0178 QByteArray NetworkManager::BridgeSetting::macAddress() const 0179 { 0180 Q_D(const BridgeSetting); 0181 0182 return d->macAddress; 0183 } 0184 0185 void NetworkManager::BridgeSetting::fromMap(const QVariantMap &setting) 0186 { 0187 if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_INTERFACE_NAME))) { 0188 setInterfaceName(setting.value(QLatin1String(NM_SETTING_BRIDGE_INTERFACE_NAME)).toString()); 0189 } 0190 if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_STP))) { 0191 setStp(setting.value(QLatin1String(NM_SETTING_BRIDGE_STP)).toBool()); 0192 } 0193 0194 if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_PRIORITY))) { 0195 setPriority(setting.value(QLatin1String(NM_SETTING_BRIDGE_PRIORITY)).toUInt()); 0196 } 0197 0198 if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_FORWARD_DELAY))) { 0199 setForwardDelay(setting.value(QLatin1String(NM_SETTING_BRIDGE_FORWARD_DELAY)).toUInt()); 0200 } 0201 0202 if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_HELLO_TIME))) { 0203 setHelloTime(setting.value(QLatin1String(NM_SETTING_BRIDGE_HELLO_TIME)).toUInt()); 0204 } 0205 0206 if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_MAX_AGE))) { 0207 setMaxAge(setting.value(QLatin1String(NM_SETTING_BRIDGE_MAX_AGE)).toUInt()); 0208 } 0209 0210 if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_AGEING_TIME))) { 0211 setAgingTime(setting.value(QLatin1String(NM_SETTING_BRIDGE_AGEING_TIME)).toUInt()); 0212 } 0213 0214 if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_MULTICAST_SNOOPING))) { 0215 setMulticastSnooping(setting.value(QLatin1String(NM_SETTING_BRIDGE_MULTICAST_SNOOPING)).toBool()); 0216 } 0217 0218 if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_MAC_ADDRESS))) { 0219 setMacAddress(setting.value(QLatin1String(NM_SETTING_BRIDGE_MAC_ADDRESS)).toByteArray()); 0220 } 0221 } 0222 0223 QVariantMap NetworkManager::BridgeSetting::toMap() const 0224 { 0225 QVariantMap setting; 0226 0227 if (!interfaceName().isEmpty()) { 0228 setting.insert(QLatin1String(NM_SETTING_BRIDGE_INTERFACE_NAME), interfaceName()); 0229 } 0230 if (!stp()) { 0231 setting.insert(QLatin1String(NM_SETTING_BRIDGE_STP), stp()); 0232 } 0233 0234 if (priority() != 128) { 0235 setting.insert(QLatin1String(NM_SETTING_BRIDGE_PRIORITY), priority()); 0236 } 0237 0238 if (forwardDelay() != 15) { 0239 setting.insert(QLatin1String(NM_SETTING_BRIDGE_FORWARD_DELAY), forwardDelay()); 0240 } 0241 0242 if (helloTime() != 2) { 0243 setting.insert(QLatin1String(NM_SETTING_BRIDGE_HELLO_TIME), helloTime()); 0244 } 0245 0246 if (maxAge() != 20) { 0247 setting.insert(QLatin1String(NM_SETTING_BRIDGE_MAX_AGE), maxAge()); 0248 } 0249 0250 if (agingTime() != 300) { 0251 setting.insert(QLatin1String(NM_SETTING_BRIDGE_AGEING_TIME), agingTime()); 0252 } 0253 0254 if (!multicastSnooping()) { 0255 setting.insert(QLatin1String(NM_SETTING_BRIDGE_MULTICAST_SNOOPING), multicastSnooping()); 0256 } 0257 0258 if (!macAddress().isEmpty()) { 0259 setting.insert(QLatin1String(NM_SETTING_BRIDGE_MAC_ADDRESS), macAddress()); 0260 } 0261 0262 return setting; 0263 } 0264 0265 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::BridgeSetting &setting) 0266 { 0267 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0268 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0269 0270 dbg.nospace() << NM_SETTING_BRIDGE_INTERFACE_NAME << ": " << setting.interfaceName() << '\n'; 0271 dbg.nospace() << NM_SETTING_BRIDGE_STP << ": " << setting.stp() << '\n'; 0272 dbg.nospace() << NM_SETTING_BRIDGE_PRIORITY << ": " << setting.priority() << '\n'; 0273 dbg.nospace() << NM_SETTING_BRIDGE_FORWARD_DELAY << ": " << setting.forwardDelay() << '\n'; 0274 dbg.nospace() << NM_SETTING_BRIDGE_HELLO_TIME << ": " << setting.helloTime() << '\n'; 0275 dbg.nospace() << NM_SETTING_BRIDGE_MAX_AGE << ": " << setting.maxAge() << '\n'; 0276 dbg.nospace() << NM_SETTING_BRIDGE_AGEING_TIME << ": " << setting.agingTime() << '\n'; 0277 dbg.nospace() << NM_SETTING_BRIDGE_MULTICAST_SNOOPING << ": " << setting.multicastSnooping() << '\n'; 0278 dbg.nospace() << NM_SETTING_BRIDGE_MAC_ADDRESS << ": " << setting.macAddress() << '\n'; 0279 0280 return dbg.maybeSpace(); 0281 }