File indexing completed on 2024-04-21 04:00:04

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 "ovsportsetting.h"
0008 #include "ovsportsetting_p.h"
0009 
0010 #include <QDebug>
0011 
0012 #if !NM_CHECK_VERSION(1, 10, 0)
0013 #define NM_SETTING_OVS_PORT_SETTING_NAME "ovs-port"
0014 #define NM_SETTING_OVS_PORT_VLAN_MODE "vlan-mode"
0015 #define NM_SETTING_OVS_PORT_TAG "tag"
0016 #define NM_SETTING_OVS_PORT_LACP "lacp"
0017 #define NM_SETTING_OVS_PORT_BOND_MODE "bond-mode"
0018 #define NM_SETTING_OVS_PORT_BOND_UPDELAY "bond-updelay"
0019 #define NM_SETTING_OVS_PORT_BOND_DOWNDELAY "bond-downdelay"
0020 #endif
0021 
0022 NetworkManager::OvsPortSettingPrivate::OvsPortSettingPrivate()
0023     : name(NM_SETTING_OVS_PORT_SETTING_NAME)
0024     , bondDowndelay(0)
0025     , bondUpdelay(0)
0026     , tag(0)
0027 {
0028 }
0029 
0030 NetworkManager::OvsPortSetting::OvsPortSetting()
0031     : Setting(Setting::OvsPort)
0032     , d_ptr(new OvsPortSettingPrivate())
0033 {
0034 }
0035 
0036 NetworkManager::OvsPortSetting::OvsPortSetting(const Ptr &other)
0037     : Setting(other)
0038     , d_ptr(new OvsPortSettingPrivate())
0039 {
0040     setBondDowndelay(other->bondDowndelay());
0041     setBondUpdelay(other->bondUpdelay());
0042     setTag(other->tag());
0043     setBondMode(other->bondMode());
0044     setLacp(other->lacp());
0045     setVlanMode(other->vlanMode());
0046 }
0047 
0048 NetworkManager::OvsPortSetting::~OvsPortSetting()
0049 {
0050     delete d_ptr;
0051 }
0052 
0053 QString NetworkManager::OvsPortSetting::name() const
0054 {
0055     Q_D(const OvsPortSetting);
0056 
0057     return d->name;
0058 }
0059 
0060 void NetworkManager::OvsPortSetting::setBondDowndelay(quint32 delay)
0061 {
0062     Q_D(OvsPortSetting);
0063 
0064     d->bondDowndelay = delay;
0065 }
0066 
0067 quint32 NetworkManager::OvsPortSetting::bondDowndelay() const
0068 {
0069     Q_D(const OvsPortSetting);
0070 
0071     return d->bondDowndelay;
0072 }
0073 
0074 void NetworkManager::OvsPortSetting::setBondUpdelay(quint32 delay)
0075 {
0076     Q_D(OvsPortSetting);
0077 
0078     d->bondUpdelay = delay;
0079 }
0080 
0081 quint32 NetworkManager::OvsPortSetting::bondUpdelay() const
0082 {
0083     Q_D(const OvsPortSetting);
0084 
0085     return d->bondUpdelay;
0086 }
0087 
0088 void NetworkManager::OvsPortSetting::setTag(quint32 tag)
0089 {
0090     Q_D(OvsPortSetting);
0091 
0092     d->tag = tag;
0093 }
0094 
0095 quint32 NetworkManager::OvsPortSetting::tag() const
0096 {
0097     Q_D(const OvsPortSetting);
0098 
0099     return d->tag;
0100 }
0101 
0102 void NetworkManager::OvsPortSetting::setBondMode(const QString &mode)
0103 {
0104     Q_D(OvsPortSetting);
0105 
0106     d->bondMode = mode;
0107 }
0108 
0109 QString NetworkManager::OvsPortSetting::bondMode() const
0110 {
0111     Q_D(const OvsPortSetting);
0112 
0113     return d->bondMode;
0114 }
0115 
0116 void NetworkManager::OvsPortSetting::setLacp(const QString &lacp)
0117 {
0118     Q_D(OvsPortSetting);
0119 
0120     d->lacp = lacp;
0121 }
0122 
0123 QString NetworkManager::OvsPortSetting::lacp() const
0124 {
0125     Q_D(const OvsPortSetting);
0126 
0127     return d->lacp;
0128 }
0129 
0130 void NetworkManager::OvsPortSetting::setVlanMode(const QString &mode)
0131 {
0132     Q_D(OvsPortSetting);
0133 
0134     d->vlanMode = mode;
0135 }
0136 
0137 QString NetworkManager::OvsPortSetting::vlanMode() const
0138 {
0139     Q_D(const OvsPortSetting);
0140 
0141     return d->vlanMode;
0142 }
0143 
0144 void NetworkManager::OvsPortSetting::fromMap(const QVariantMap &setting)
0145 {
0146     if (setting.contains(QLatin1String(NM_SETTING_OVS_PORT_BOND_UPDELAY))) {
0147         setBondUpdelay(setting.value(QLatin1String(NM_SETTING_OVS_PORT_BOND_UPDELAY)).toUInt());
0148     }
0149 
0150     if (setting.contains(QLatin1String(NM_SETTING_OVS_PORT_BOND_DOWNDELAY))) {
0151         setBondDowndelay(setting.value(QLatin1String(NM_SETTING_OVS_PORT_BOND_DOWNDELAY)).toUInt());
0152     }
0153 
0154     if (setting.contains(QLatin1String(NM_SETTING_OVS_PORT_TAG))) {
0155         setTag(setting.value(QLatin1String(NM_SETTING_OVS_PORT_TAG)).toUInt());
0156     }
0157 
0158     if (setting.contains(QLatin1String(NM_SETTING_OVS_PORT_BOND_MODE))) {
0159         setBondMode(setting.value(QLatin1String(NM_SETTING_OVS_PORT_BOND_MODE)).toString());
0160     }
0161 
0162     if (setting.contains(QLatin1String(NM_SETTING_OVS_PORT_LACP))) {
0163         setLacp(setting.value(QLatin1String(NM_SETTING_OVS_PORT_LACP)).toString());
0164     }
0165 
0166     if (setting.contains(QLatin1String(NM_SETTING_OVS_PORT_VLAN_MODE))) {
0167         setVlanMode(setting.value(QLatin1String(NM_SETTING_OVS_PORT_VLAN_MODE)).toString());
0168     }
0169 }
0170 
0171 QVariantMap NetworkManager::OvsPortSetting::toMap() const
0172 {
0173     QVariantMap setting;
0174 
0175     if (bondUpdelay() > 0) {
0176         setting.insert(QLatin1String(NM_SETTING_OVS_PORT_BOND_UPDELAY), bondUpdelay());
0177     }
0178 
0179     if (bondDowndelay() > 0) {
0180         setting.insert(QLatin1String(NM_SETTING_OVS_PORT_BOND_DOWNDELAY), bondDowndelay());
0181     }
0182 
0183     if (tag() > 0) {
0184         setting.insert(QLatin1String(NM_SETTING_OVS_PORT_TAG), tag());
0185     }
0186 
0187     if (!bondMode().isEmpty()) {
0188         setting.insert(QLatin1String(NM_SETTING_OVS_PORT_BOND_MODE), bondMode());
0189     }
0190 
0191     if (!lacp().isEmpty()) {
0192         setting.insert(QLatin1String(NM_SETTING_OVS_PORT_LACP), lacp());
0193     }
0194 
0195     if (!vlanMode().isEmpty()) {
0196         setting.insert(QLatin1String(NM_SETTING_OVS_PORT_VLAN_MODE), vlanMode());
0197     }
0198 
0199     return setting;
0200 }
0201 
0202 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::OvsPortSetting &setting)
0203 {
0204     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0205     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0206 
0207     dbg.nospace() << NM_SETTING_OVS_PORT_BOND_UPDELAY << ": " << setting.bondUpdelay() << '\n';
0208     dbg.nospace() << NM_SETTING_OVS_PORT_BOND_DOWNDELAY << ": " << setting.bondDowndelay() << '\n';
0209     dbg.nospace() << NM_SETTING_OVS_PORT_TAG << ": " << setting.tag() << '\n';
0210     dbg.nospace() << NM_SETTING_OVS_PORT_BOND_MODE << ": " << setting.bondMode() << '\n';
0211     dbg.nospace() << NM_SETTING_OVS_PORT_LACP << ": " << setting.lacp() << '\n';
0212     dbg.nospace() << NM_SETTING_OVS_PORT_VLAN_MODE << ": " << setting.vlanMode() << '\n';
0213 
0214     return dbg.maybeSpace();
0215 }