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 }