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 }