File indexing completed on 2024-04-14 03:57:38
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 "tcsetting.h" 0008 #include "tcsetting_p.h" 0009 0010 #include <QDebug> 0011 0012 #if !NM_CHECK_VERSION(1, 10, 0) 0013 #define NM_SETTING_TC_CONFIG_SETTING_NAME "tc" 0014 0015 #define NM_SETTING_TC_CONFIG_QDISCS "qdiscs" 0016 #define NM_SETTING_TC_CONFIG_TFILTERS "tfilters" 0017 #endif 0018 0019 NetworkManager::TcSettingPrivate::TcSettingPrivate() 0020 : name(NM_SETTING_TC_CONFIG_SETTING_NAME) 0021 { 0022 } 0023 0024 NetworkManager::TcSetting::TcSetting() 0025 : Setting(Setting::Tc) 0026 , d_ptr(new TcSettingPrivate()) 0027 { 0028 } 0029 0030 NetworkManager::TcSetting::TcSetting(const Ptr &other) 0031 : Setting(other) 0032 , d_ptr(new TcSettingPrivate()) 0033 { 0034 setQdiscs(other->qdiscs()); 0035 setTfilters(other->tfilters()); 0036 } 0037 0038 NetworkManager::TcSetting::~TcSetting() 0039 { 0040 delete d_ptr; 0041 } 0042 0043 QString NetworkManager::TcSetting::name() const 0044 { 0045 Q_D(const TcSetting); 0046 0047 return d->name; 0048 } 0049 0050 void NetworkManager::TcSetting::setQdiscs(const NMVariantMapList &qdiscs) 0051 { 0052 Q_D(TcSetting); 0053 0054 d->qdiscs = qdiscs; 0055 } 0056 0057 NMVariantMapList NetworkManager::TcSetting::qdiscs() const 0058 { 0059 Q_D(const TcSetting); 0060 0061 return d->qdiscs; 0062 } 0063 0064 void NetworkManager::TcSetting::setTfilters(const NMVariantMapList &tfilters) 0065 { 0066 Q_D(TcSetting); 0067 0068 d->tfilters = tfilters; 0069 } 0070 0071 NMVariantMapList NetworkManager::TcSetting::tfilters() const 0072 { 0073 Q_D(const TcSetting); 0074 0075 return d->tfilters; 0076 } 0077 0078 void NetworkManager::TcSetting::fromMap(const QVariantMap &setting) 0079 { 0080 if (setting.contains(QLatin1String(NM_SETTING_TC_CONFIG_QDISCS))) { 0081 setQdiscs(qdbus_cast<NMVariantMapList>(setting.value(QLatin1String(NM_SETTING_TC_CONFIG_QDISCS)))); 0082 } 0083 0084 if (setting.contains(QLatin1String(NM_SETTING_TC_CONFIG_TFILTERS))) { 0085 setTfilters(qdbus_cast<NMVariantMapList>(setting.value(QLatin1String(NM_SETTING_TC_CONFIG_TFILTERS)))); 0086 } 0087 } 0088 0089 QVariantMap NetworkManager::TcSetting::toMap() const 0090 { 0091 QVariantMap setting; 0092 0093 if (!qdiscs().empty()) { 0094 setting.insert(QLatin1String(NM_SETTING_TC_CONFIG_QDISCS), QVariant::fromValue(qdiscs())); 0095 } 0096 0097 if (!tfilters().empty()) { 0098 setting.insert(QLatin1String(NM_SETTING_TC_CONFIG_TFILTERS), QVariant::fromValue(tfilters())); 0099 } 0100 0101 return setting; 0102 } 0103 0104 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::TcSetting &setting) 0105 { 0106 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0107 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0108 0109 dbg.nospace() << NM_SETTING_TC_CONFIG_QDISCS << ": " << '\n'; 0110 const NMVariantMapList qdiscList = setting.qdiscs(); 0111 for (const QVariantMap &qdisc : qdiscList) { 0112 QVariantMap::const_iterator i = qdisc.constBegin(); 0113 while (i != qdisc.constEnd()) { 0114 dbg.nospace() << i.key() << ": " << i.value() << '\n'; 0115 } 0116 } 0117 dbg.nospace() << NM_SETTING_TC_CONFIG_TFILTERS << ": " << '\n'; 0118 const NMVariantMapList tfiltersList = setting.tfilters(); 0119 for (const QVariantMap &tfilter : tfiltersList) { 0120 QVariantMap::const_iterator i = tfilter.constBegin(); 0121 while (i != tfilter.constEnd()) { 0122 dbg.nospace() << i.key() << ": " << i.value() << '\n'; 0123 } 0124 } 0125 0126 return dbg.maybeSpace(); 0127 }