File indexing completed on 2024-04-28 15:33:16
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 "teamportsetting.h" 0008 #include "teamportsetting_p.h" 0009 0010 #include <QDebug> 0011 0012 #if !NM_CHECK_VERSION(1, 10, 0) 0013 #define NM_SETTING_TEAM_PORT_SETTING_NAME "team-port" 0014 0015 #define NM_SETTING_TEAM_PORT_CONFIG "config" 0016 #define NM_SETTING_TEAM_PORT_QUEUE_ID "queue-id" 0017 #define NM_SETTING_TEAM_PORT_PRIO "prio" 0018 #define NM_SETTING_TEAM_PORT_STICKY "sticky" 0019 #define NM_SETTING_TEAM_PORT_LACP_PRIO "lacp-prio" 0020 #define NM_SETTING_TEAM_PORT_LACP_KEY "lacp-key" 0021 #define NM_SETTING_TEAM_PORT_LINK_WATCHERS "link-watchers" 0022 #endif 0023 0024 NetworkManager::TeamPortSettingPrivate::TeamPortSettingPrivate() 0025 : name(NM_SETTING_TEAM_PORT_SETTING_NAME) 0026 , lacpKey(0) 0027 , lacpPrio(255) 0028 , prio(0) 0029 , queueId(-1) 0030 , sticky(false) 0031 { 0032 } 0033 0034 NetworkManager::TeamPortSetting::TeamPortSetting() 0035 : Setting(Setting::TeamPort) 0036 , d_ptr(new TeamPortSettingPrivate()) 0037 { 0038 } 0039 0040 NetworkManager::TeamPortSetting::TeamPortSetting(const Ptr &other) 0041 : Setting(other) 0042 , d_ptr(new TeamPortSettingPrivate()) 0043 { 0044 config(other->config()); 0045 lacpKey(other->lacpKey()); 0046 lacpPrio(other->lacpPrio()); 0047 prio(other->prio()); 0048 queueId(other->queueId()); 0049 sticky(other->sticky()); 0050 setLinkWatchers(other->linkWatchers()); 0051 } 0052 0053 NetworkManager::TeamPortSetting::~TeamPortSetting() 0054 { 0055 delete d_ptr; 0056 } 0057 0058 QString NetworkManager::TeamPortSetting::name() const 0059 { 0060 Q_D(const TeamPortSetting); 0061 0062 return d->name; 0063 } 0064 0065 void NetworkManager::TeamPortSetting::config(const QString &config) 0066 { 0067 Q_D(TeamPortSetting); 0068 0069 d->config = config; 0070 } 0071 0072 QString NetworkManager::TeamPortSetting::config() const 0073 { 0074 Q_D(const TeamPortSetting); 0075 0076 return d->config; 0077 } 0078 0079 void NetworkManager::TeamPortSetting::lacpKey(qint32 key) 0080 { 0081 Q_D(TeamPortSetting); 0082 0083 d->lacpKey = key; 0084 } 0085 0086 qint32 NetworkManager::TeamPortSetting::lacpKey() const 0087 { 0088 Q_D(const TeamPortSetting); 0089 0090 return d->lacpKey; 0091 } 0092 0093 void NetworkManager::TeamPortSetting::lacpPrio(qint32 priority) 0094 { 0095 Q_D(TeamPortSetting); 0096 0097 d->lacpPrio = priority; 0098 } 0099 0100 qint32 NetworkManager::TeamPortSetting::lacpPrio() const 0101 { 0102 Q_D(const TeamPortSetting); 0103 0104 return d->lacpPrio; 0105 } 0106 0107 void NetworkManager::TeamPortSetting::prio(qint32 prio) 0108 { 0109 Q_D(TeamPortSetting); 0110 0111 d->prio = prio; 0112 } 0113 0114 qint32 NetworkManager::TeamPortSetting::prio() const 0115 { 0116 Q_D(const TeamPortSetting); 0117 0118 return d->prio; 0119 } 0120 0121 void NetworkManager::TeamPortSetting::queueId(qint32 id) 0122 { 0123 Q_D(TeamPortSetting); 0124 0125 d->queueId = id; 0126 } 0127 0128 qint32 NetworkManager::TeamPortSetting::queueId() const 0129 { 0130 Q_D(const TeamPortSetting); 0131 0132 return d->queueId; 0133 } 0134 0135 void NetworkManager::TeamPortSetting::sticky(bool sticky) 0136 { 0137 Q_D(TeamPortSetting); 0138 0139 d->sticky = sticky; 0140 } 0141 0142 bool NetworkManager::TeamPortSetting::sticky() const 0143 { 0144 Q_D(const TeamPortSetting); 0145 0146 return d->sticky; 0147 } 0148 0149 void NetworkManager::TeamPortSetting::setLinkWatchers(const NMVariantMapList &linkWatchers) 0150 { 0151 Q_D(TeamPortSetting); 0152 0153 d->linkWatchers = linkWatchers; 0154 } 0155 0156 NMVariantMapList NetworkManager::TeamPortSetting::linkWatchers() const 0157 { 0158 Q_D(const TeamPortSetting); 0159 0160 return d->linkWatchers; 0161 } 0162 0163 void NetworkManager::TeamPortSetting::fromMap(const QVariantMap &setting) 0164 { 0165 if (setting.contains(QLatin1String(NM_SETTING_TEAM_PORT_CONFIG))) { 0166 config(setting.value(QLatin1String(NM_SETTING_TEAM_PORT_CONFIG)).toString()); 0167 } 0168 0169 if (setting.contains(QLatin1String(NM_SETTING_TEAM_PORT_LACP_KEY))) { 0170 lacpKey(setting.value(QLatin1String(NM_SETTING_TEAM_PORT_LACP_KEY)).toUInt()); 0171 } 0172 0173 if (setting.contains(QLatin1String(NM_SETTING_TEAM_PORT_LACP_PRIO))) { 0174 lacpPrio(setting.value(QLatin1String(NM_SETTING_TEAM_PORT_LACP_PRIO)).toUInt()); 0175 } 0176 0177 if (setting.contains(QLatin1String(NM_SETTING_TEAM_PORT_PRIO))) { 0178 prio(setting.value(QLatin1String(NM_SETTING_TEAM_PORT_PRIO)).toUInt()); 0179 } 0180 0181 if (setting.contains(QLatin1String(NM_SETTING_TEAM_PORT_QUEUE_ID))) { 0182 queueId(setting.value(QLatin1String(NM_SETTING_TEAM_PORT_QUEUE_ID)).toUInt()); 0183 } 0184 0185 if (setting.contains(QLatin1String(NM_SETTING_TEAM_PORT_STICKY))) { 0186 sticky(setting.value(QLatin1String(NM_SETTING_TEAM_PORT_STICKY)).toBool()); 0187 } 0188 0189 if (setting.contains(QLatin1String(NM_SETTING_TEAM_PORT_LINK_WATCHERS))) { 0190 setLinkWatchers(qdbus_cast<NMVariantMapList>(setting.value(QLatin1String(NM_SETTING_TEAM_PORT_LINK_WATCHERS)))); 0191 } 0192 } 0193 0194 QVariantMap NetworkManager::TeamPortSetting::toMap() const 0195 { 0196 QVariantMap setting; 0197 0198 if (!config().isEmpty()) { 0199 setting.insert(QLatin1String(NM_SETTING_TEAM_PORT_CONFIG), config()); 0200 } 0201 0202 if (lacpKey() != 0) { 0203 setting.insert(QLatin1String(NM_SETTING_TEAM_PORT_LACP_KEY), lacpKey()); 0204 } 0205 0206 if (lacpPrio() != 255) { 0207 setting.insert(QLatin1String(NM_SETTING_TEAM_PORT_LACP_PRIO), lacpPrio()); 0208 } 0209 0210 if (prio() != 0) { 0211 setting.insert(QLatin1String(NM_SETTING_TEAM_PORT_PRIO), prio()); 0212 } 0213 0214 if (queueId() != -1) { 0215 setting.insert(QLatin1String(NM_SETTING_TEAM_PORT_QUEUE_ID), queueId()); 0216 } 0217 0218 if (sticky()) { 0219 setting.insert(QLatin1String(NM_SETTING_TEAM_PORT_STICKY), sticky()); 0220 } 0221 0222 if (!linkWatchers().empty()) { 0223 setting.insert(QLatin1String(NM_SETTING_TEAM_PORT_LINK_WATCHERS), QVariant::fromValue(linkWatchers())); 0224 } 0225 0226 return setting; 0227 } 0228 0229 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::TeamPortSetting &setting) 0230 { 0231 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0232 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0233 0234 dbg.nospace() << NM_SETTING_TEAM_PORT_CONFIG << ": " << setting.config() << '\n'; 0235 dbg.nospace() << NM_SETTING_TEAM_PORT_LACP_KEY << ": " << setting.lacpKey() << '\n'; 0236 dbg.nospace() << NM_SETTING_TEAM_PORT_LACP_PRIO << ": " << setting.lacpPrio() << '\n'; 0237 dbg.nospace() << NM_SETTING_TEAM_PORT_PRIO << ": " << setting.prio() << '\n'; 0238 dbg.nospace() << NM_SETTING_TEAM_PORT_QUEUE_ID << ": " << setting.queueId() << '\n'; 0239 dbg.nospace() << NM_SETTING_TEAM_PORT_STICKY << ": " << setting.sticky() << '\n'; 0240 0241 dbg.nospace() << NM_SETTING_TEAM_PORT_LINK_WATCHERS << ": " << '\n'; 0242 const NMVariantMapList variantMapList = setting.linkWatchers(); 0243 for (const QVariantMap &linkWatcher : variantMapList) { 0244 QVariantMap::const_iterator i = linkWatcher.constBegin(); 0245 while (i != linkWatcher.constEnd()) { 0246 dbg.nospace() << i.key() << ": " << i.value() << '\n'; 0247 } 0248 } 0249 0250 return dbg.maybeSpace(); 0251 }