File indexing completed on 2024-04-21 15:06:19

0001 /*
0002     SPDX-FileCopyrightText: Pranav Gade <pranavgade20@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 "ovsbridgesetting.h"
0008 #include "ovsbridgesetting_p.h"
0009 
0010 #include <QDebug>
0011 
0012 #if !NM_CHECK_VERSION(1, 10, 0)
0013 #define NM_SETTING_OVS_BRIDGE_SETTING_NAME "ovs-bridge"
0014 #define NM_SETTING_OVS_BRIDGE_FAIL_MODE "fail-mode"
0015 #define NM_SETTING_OVS_BRIDGE_MCAST_SNOOPING_ENABLE "mcast-snooping-enable"
0016 #define NM_SETTING_OVS_BRIDGE_RSTP_ENABLE "rstp-enable"
0017 #define NM_SETTING_OVS_BRIDGE_STP_ENABLE "stp-enable"
0018 #endif
0019 
0020 NetworkManager::OvsBridgeSettingPrivate::OvsBridgeSettingPrivate()
0021     : name(NM_SETTING_OVS_BRIDGE_SETTING_NAME)
0022     , mcastSnoopingEnable(false)
0023     , rstpEnable(false)
0024     , stpEnable(false)
0025 {
0026 }
0027 
0028 NetworkManager::OvsBridgeSetting::OvsBridgeSetting()
0029     : Setting(Setting::OvsBridge)
0030     , d_ptr(new OvsBridgeSettingPrivate())
0031 {
0032 }
0033 
0034 NetworkManager::OvsBridgeSetting::OvsBridgeSetting(const Ptr &other)
0035     : Setting(other)
0036     , d_ptr(new OvsBridgeSettingPrivate())
0037 {
0038     setFailMode(other->failMode());
0039     setMcastSnoopingEnable(other->mcastSnoopingEnable());
0040     setRstpEnable(other->rstpEnable());
0041     setStpEnable(other->stpEnable());
0042 }
0043 
0044 NetworkManager::OvsBridgeSetting::~OvsBridgeSetting()
0045 {
0046     delete d_ptr;
0047 }
0048 
0049 QString NetworkManager::OvsBridgeSetting::name() const
0050 {
0051     Q_D(const OvsBridgeSetting);
0052 
0053     return d->name;
0054 }
0055 
0056 void NetworkManager::OvsBridgeSetting::setMcastSnoopingEnable(bool mcastSnoopingEnable)
0057 {
0058     Q_D(OvsBridgeSetting);
0059 
0060     d->mcastSnoopingEnable = mcastSnoopingEnable;
0061 }
0062 
0063 bool NetworkManager::OvsBridgeSetting::mcastSnoopingEnable() const
0064 {
0065     Q_D(const OvsBridgeSetting);
0066 
0067     return d->mcastSnoopingEnable;
0068 }
0069 
0070 void NetworkManager::OvsBridgeSetting::setRstpEnable(bool rstpEnable)
0071 {
0072     Q_D(OvsBridgeSetting);
0073 
0074     d->rstpEnable = rstpEnable;
0075 }
0076 
0077 bool NetworkManager::OvsBridgeSetting::rstpEnable() const
0078 {
0079     Q_D(const OvsBridgeSetting);
0080 
0081     return d->rstpEnable;
0082 }
0083 
0084 void NetworkManager::OvsBridgeSetting::setStpEnable(bool stpEnable)
0085 {
0086     Q_D(OvsBridgeSetting);
0087 
0088     d->stpEnable = stpEnable;
0089 }
0090 
0091 bool NetworkManager::OvsBridgeSetting::stpEnable() const
0092 {
0093     Q_D(const OvsBridgeSetting);
0094 
0095     return d->stpEnable;
0096 }
0097 
0098 void NetworkManager::OvsBridgeSetting::setFailMode(const QString &mode)
0099 {
0100     Q_D(OvsBridgeSetting);
0101 
0102     d->failMode = mode;
0103 }
0104 
0105 QString NetworkManager::OvsBridgeSetting::failMode() const
0106 {
0107     Q_D(const OvsBridgeSetting);
0108 
0109     return d->failMode;
0110 }
0111 
0112 void NetworkManager::OvsBridgeSetting::fromMap(const QVariantMap &setting)
0113 {
0114     if (setting.contains(QLatin1String(NM_SETTING_OVS_BRIDGE_MCAST_SNOOPING_ENABLE))) {
0115         setMcastSnoopingEnable(setting.value(QLatin1String(NM_SETTING_OVS_BRIDGE_MCAST_SNOOPING_ENABLE)).toBool());
0116     }
0117 
0118     if (setting.contains(QLatin1String(NM_SETTING_OVS_BRIDGE_RSTP_ENABLE))) {
0119         setRstpEnable(setting.value(QLatin1String(NM_SETTING_OVS_BRIDGE_RSTP_ENABLE)).toBool());
0120     }
0121 
0122     if (setting.contains(QLatin1String(NM_SETTING_OVS_BRIDGE_STP_ENABLE))) {
0123         setStpEnable(setting.value(QLatin1String(NM_SETTING_OVS_BRIDGE_STP_ENABLE)).toBool());
0124     }
0125 
0126     if (setting.contains(QLatin1String(NM_SETTING_OVS_BRIDGE_FAIL_MODE))) {
0127         setFailMode(setting.value(QLatin1String(NM_SETTING_OVS_BRIDGE_FAIL_MODE)).toString());
0128     }
0129 }
0130 
0131 QVariantMap NetworkManager::OvsBridgeSetting::toMap() const
0132 {
0133     QVariantMap setting;
0134 
0135     setting.insert(QLatin1String(NM_SETTING_OVS_BRIDGE_MCAST_SNOOPING_ENABLE), mcastSnoopingEnable());
0136     setting.insert(QLatin1String(NM_SETTING_OVS_BRIDGE_RSTP_ENABLE), rstpEnable());
0137     setting.insert(QLatin1String(NM_SETTING_OVS_BRIDGE_STP_ENABLE), stpEnable());
0138 
0139     if (!failMode().isEmpty()) {
0140         setting.insert(QLatin1String(NM_SETTING_OVS_BRIDGE_FAIL_MODE), failMode());
0141     }
0142 
0143     return setting;
0144 }
0145 
0146 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::OvsBridgeSetting &setting)
0147 {
0148     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0149     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0150 
0151     dbg.nospace() << NM_SETTING_OVS_BRIDGE_MCAST_SNOOPING_ENABLE << ": " << setting.mcastSnoopingEnable() << '\n';
0152     dbg.nospace() << NM_SETTING_OVS_BRIDGE_RSTP_ENABLE << ": " << setting.rstpEnable() << '\n';
0153     dbg.nospace() << NM_SETTING_OVS_BRIDGE_STP_ENABLE << ": " << setting.stpEnable() << '\n';
0154     dbg.nospace() << NM_SETTING_OVS_BRIDGE_FAIL_MODE << ": " << setting.failMode() << '\n';
0155 
0156     return dbg.maybeSpace();
0157 }