File indexing completed on 2024-04-14 03:57:32

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 "bridgeportsetting.h"
0008 #include "bridgeportsetting_p.h"
0009 
0010 #include <QDebug>
0011 
0012 NetworkManager::BridgePortSettingPrivate::BridgePortSettingPrivate()
0013     : name(NM_SETTING_BRIDGE_PORT_SETTING_NAME)
0014     , priority(32)
0015     , pathCost(100)
0016     , hairpinMode(false)
0017 {
0018 }
0019 
0020 NetworkManager::BridgePortSetting::BridgePortSetting()
0021     : Setting(Setting::BridgePort)
0022     , d_ptr(new BridgePortSettingPrivate())
0023 {
0024 }
0025 
0026 NetworkManager::BridgePortSetting::BridgePortSetting(const NetworkManager::BridgePortSetting::Ptr &other)
0027     : Setting(other)
0028     , d_ptr(new BridgePortSettingPrivate())
0029 {
0030     setPriority(other->priority());
0031     setPathCost(other->pathCost());
0032     setHairpinMode(other->hairpinMode());
0033 }
0034 
0035 NetworkManager::BridgePortSetting::~BridgePortSetting()
0036 {
0037     delete d_ptr;
0038 }
0039 
0040 QString NetworkManager::BridgePortSetting::name() const
0041 {
0042     Q_D(const BridgePortSetting);
0043 
0044     return d->name;
0045 }
0046 
0047 void NetworkManager::BridgePortSetting::setPriority(quint32 priority)
0048 {
0049     Q_D(BridgePortSetting);
0050 
0051     d->priority = priority;
0052 }
0053 
0054 quint32 NetworkManager::BridgePortSetting::priority() const
0055 {
0056     Q_D(const BridgePortSetting);
0057 
0058     return d->priority;
0059 }
0060 
0061 void NetworkManager::BridgePortSetting::setPathCost(quint32 cost)
0062 {
0063     Q_D(BridgePortSetting);
0064 
0065     d->pathCost = cost;
0066 }
0067 
0068 quint32 NetworkManager::BridgePortSetting::pathCost() const
0069 {
0070     Q_D(const BridgePortSetting);
0071 
0072     return d->pathCost;
0073 }
0074 
0075 void NetworkManager::BridgePortSetting::setHairpinMode(bool enable)
0076 {
0077     Q_D(BridgePortSetting);
0078 
0079     d->hairpinMode = enable;
0080 }
0081 
0082 bool NetworkManager::BridgePortSetting::hairpinMode() const
0083 {
0084     Q_D(const BridgePortSetting);
0085 
0086     return d->hairpinMode;
0087 }
0088 
0089 void NetworkManager::BridgePortSetting::fromMap(const QVariantMap &setting)
0090 {
0091     if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_PORT_PRIORITY))) {
0092         setPriority(setting.value(QLatin1String(NM_SETTING_BRIDGE_PORT_PRIORITY)).toUInt());
0093     }
0094 
0095     if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_PORT_PATH_COST))) {
0096         setPathCost(setting.value(QLatin1String(NM_SETTING_BRIDGE_PORT_PATH_COST)).toUInt());
0097     }
0098 
0099     if (setting.contains(QLatin1String(NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE))) {
0100         setHairpinMode(setting.value(QLatin1String(NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE)).toBool());
0101     }
0102 }
0103 
0104 QVariantMap NetworkManager::BridgePortSetting::toMap() const
0105 {
0106     QVariantMap setting;
0107 
0108     if (priority() != 32) {
0109         setting.insert(QLatin1String(NM_SETTING_BRIDGE_PORT_PRIORITY), priority());
0110     }
0111 
0112     if (pathCost() != 100) {
0113         setting.insert(QLatin1String(NM_SETTING_BRIDGE_PORT_PATH_COST), pathCost());
0114     }
0115 
0116     if (hairpinMode()) {
0117         setting.insert(QLatin1String(NM_SETTING_BRIDGE_PORT_PATH_COST), hairpinMode());
0118     }
0119 
0120     return setting;
0121 }
0122 
0123 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::BridgePortSetting &setting)
0124 {
0125     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0126     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0127 
0128     dbg.nospace() << NM_SETTING_BRIDGE_PORT_PRIORITY << ": " << setting.priority() << '\n';
0129     dbg.nospace() << NM_SETTING_BRIDGE_PORT_PATH_COST << ": " << setting.pathCost() << '\n';
0130     dbg.nospace() << NM_SETTING_BRIDGE_PORT_PATH_COST << ": " << setting.hairpinMode() << '\n';
0131 
0132     return dbg.maybeSpace();
0133 }