Index: autotests/settings/CMakeLists.txt =================================================================== --- autotests/settings/CMakeLists.txt +++ autotests/settings/CMakeLists.txt @@ -18,6 +18,7 @@ iptunnelsettingtest ipv4settingtest ipv6settingtest + matchsettingtest olpcmeshsettingtest ovsbridgesettingtest ovsinterfacesettingtest @@ -28,6 +29,7 @@ proxysettingtest serialsettingtest tunsettingtest + tcsettingtest usersettingtest vlansettingtest vxlansettingtest Index: autotests/settings/matchsettingtest.h =================================================================== --- /dev/null +++ autotests/settings/matchsettingtest.h @@ -0,0 +1,36 @@ +/* + Copyright 2018 Pranav Gade + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef NETWORKMANAGERQT_MATCHSETTING_TEST_H +#define NETWORKMANAGERQT_MATCHSETTING_TEST_H + +#include + +class MatchSettingTest : public QObject +{ + Q_OBJECT + +private Q_SLOTS: + void testSetting_data(); + void testSetting(); +}; + +#endif // NETWORKMANAGERQT_MATCHSETTING_TEST_H + Index: autotests/settings/matchsettingtest.cpp =================================================================== --- /dev/null +++ autotests/settings/matchsettingtest.cpp @@ -0,0 +1,63 @@ +/* + Copyright 2018 Pranav Gade + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "matchsettingtest.h" + +#include "settings/matchsetting.h" + +#include + +#include + +#if !NM_CHECK_VERSION(1, 14, 0) +#define NM_SETTING_MATCH_INTERFACE_NAME "interface-name" +#endif + +void MatchSettingTest::testSetting_data() +{ + QTest::addColumn("interfaceName"); + + QTest::newRow("setting1") + << QStringList {QString("name1"), QString("name2")}; // interfaceName +} + +void MatchSettingTest::testSetting() +{ + QFETCH(QStringList, interfaceName); + + QVariantMap map; + + map.insert(QLatin1String(NM_SETTING_MATCH_INTERFACE_NAME), interfaceName); + + NetworkManager::MatchSetting setting; + setting.fromMap(map); + + QVariantMap map1 = setting.toMap(); + + // Will fail if set some default values, because they are skipped in toMap() method + QVariantMap::const_iterator it = map.constBegin(); + while (it != map.constEnd()) { + QCOMPARE(it.value(), map1.value(it.key())); + ++it; + } +} + +QTEST_MAIN(MatchSettingTest) + Index: autotests/settings/tcsettingtest.h =================================================================== --- /dev/null +++ autotests/settings/tcsettingtest.h @@ -0,0 +1,36 @@ +/* + Copyright 2018 Pranav Gade + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef NETWORKMANAGERQT_TC_SETTING_TEST_H +#define NETWORKMANAGERQT_TC_SETTING_TEST_H + +#include + +class TcSettingTest : public QObject +{ + Q_OBJECT + +private Q_SLOTS: + void testSetting_data(); + void testSetting(); +}; + +#endif // NETWORKMANAGERQT_TC_SETTING_TEST_H + Index: autotests/settings/tcsettingtest.cpp =================================================================== --- /dev/null +++ autotests/settings/tcsettingtest.cpp @@ -0,0 +1,104 @@ +/* + Copyright 2018 Pranav Gade + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "tcsettingtest.h" + +#include "settings/tcsetting.h" + +#include + +#include + +#if !NM_CHECK_VERSION(1, 10, 0) +#define NM_SETTING_TC_CONFIG_QDISCS "qdiscs" +#define NM_SETTING_TC_CONFIG_TFILTERS "tfilters" +#endif + +void TcSettingTest::testSetting_data() +{ + QTest::addColumn("qdiscs"); + QTest::addColumn("tfilters"); + + NMVariantMapList qdiscs; + QVariantMap qdisc; + qdisc["one"] = "1"; + qdisc["two"] = 2; + qdiscs.append(qdisc); + + NMVariantMapList tfilters; + QVariantMap tfilter; + tfilter["three"] = "3"; + tfilter["four"] = 4; + tfilters.append(tfilter); + + QTest::newRow("setting1") + << qdiscs // qdiscs + << tfilters; // tfilters +} + +void TcSettingTest::testSetting() +{ + QFETCH(NMVariantMapList, tfilters); + QFETCH(NMVariantMapList, qdiscs); + + QVariantMap map; + + map.insert(QLatin1String(NM_SETTING_TC_CONFIG_TFILTERS), QVariant::fromValue(tfilters)); + map.insert(QLatin1String(NM_SETTING_TC_CONFIG_QDISCS), QVariant::fromValue(qdiscs)); + + NetworkManager::TcSetting setting; + setting.fromMap(map); + + QVariantMap map1 = setting.toMap(); + + // Will fail if set some default values, because they are skipped in toMap() method + QVariantMap::const_iterator it = map.constBegin(); + while (it != map.constEnd()) { + NMVariantMapList list = it.value().value(); + NMVariantMapList list1 = map1.value(it.key()).value(); + QCOMPARE(list.count(), list1.count()); + + int comparedMaps = 0; + NMVariantMapList::const_iterator listIt = list.constBegin(); + while (listIt != list.constEnd()) { + NMVariantMapList::const_iterator list1It = list1.constBegin(); + while (list1It != list1.constEnd()) { + QVariantMap listMap = *listIt; + QVariantMap listMap1 = *list1It; + // Test if keys do match, because the list can be in different order + QStringList listMapKeys = listMap.keys(); + QStringList listMapKeys1 = listMap1.keys(); + listMapKeys.sort(); + listMapKeys1.sort(); + if (listMapKeys.join(QChar(' ')) == listMapKeys1.join(QChar(' '))) { + // Here the maps should have same keys so compare QVariantMaps as we do now + QCOMPARE(listMap, listMap1); + ++comparedMaps; + } + ++list1It; + } + ++listIt; + } + ++it; + QCOMPARE(comparedMaps, list.count()); + } +} + +QTEST_MAIN(TcSettingTest) Index: src/CMakeLists.txt =================================================================== --- src/CMakeLists.txt +++ src/CMakeLists.txt @@ -63,6 +63,7 @@ settings/ipv4setting.cpp settings/ipv6setting.cpp settings/infinibandsetting.cpp + settings/matchsetting.cpp settings/olpcmeshsetting.cpp settings/ovsbridgesetting.cpp settings/ovsinterfacesetting.cpp @@ -82,6 +83,7 @@ settings/wirelesssetting.cpp settings/wirelesssecuritysetting.cpp settings/teamsetting.cpp + settings/tcsetting.cpp settings/genericsetting.cpp settings/tunsetting.cpp settings/usersetting.cpp Index: src/settings/matchsetting.h =================================================================== --- /dev/null +++ src/settings/matchsetting.h @@ -0,0 +1,66 @@ +/* + Copyright 2018 Pranav Gade + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef NETWORKMANAGERQT_MATCH_SETTING_H +#define NETWORKMANAGERQT_MATCH_SETTING_H + +#include +#include "setting.h" + +namespace NetworkManager +{ + +class MatchSettingPrivate; + +/** + * Represents Match setting + */ +class NETWORKMANAGERQT_EXPORT MatchSetting : public Setting +{ +public: + typedef QSharedPointer Ptr; + typedef QList List; + + MatchSetting(); + explicit MatchSetting(const Ptr &other); + ~MatchSetting() override; + + QString name() const override; + + void setInterfaceName(const QStringList &name); + QStringList interfaceName() const; + + void fromMap(const QVariantMap &setting) override; + + QVariantMap toMap() const override; + +protected: + MatchSettingPrivate *d_ptr; + +private: + Q_DECLARE_PRIVATE(MatchSetting) +}; + +NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const MatchSetting &setting); + +} + +#endif // NETWORKMANAGERQT_MATCH_SETTING_H + Index: src/settings/matchsetting.cpp =================================================================== --- /dev/null +++ src/settings/matchsetting.cpp @@ -0,0 +1,99 @@ +/* + Copyright Pranav Gade + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "matchsetting.h" +#include "matchsetting_p.h" + +#include + +#if !NM_CHECK_VERSION(1, 14, 0) +#define NM_SETTING_MATCH_SETTING_NAME "match" +#define NM_SETTING_MATCH_INTERFACE_NAME "interface-name" +#endif + +NetworkManager::MatchSettingPrivate::MatchSettingPrivate() + : name(NM_SETTING_MATCH_SETTING_NAME) +{ } + +NetworkManager::MatchSetting::MatchSetting() + : Setting(Setting::Match) + , d_ptr(new MatchSettingPrivate()) +{ } + +NetworkManager::MatchSetting::MatchSetting(const Ptr &other) + : Setting(other) + , d_ptr(new MatchSettingPrivate()) +{ + setInterfaceName(other->interfaceName()); +} + +NetworkManager::MatchSetting::~MatchSetting() +{ + delete d_ptr; +} + +QString NetworkManager::MatchSetting::name() const +{ + Q_D(const MatchSetting); + + return d->name; +} + +void NetworkManager::MatchSetting::setInterfaceName(const QStringList &name) +{ + Q_D(MatchSetting); + + d->interfaceName = name; +} + +QStringList NetworkManager::MatchSetting::interfaceName() const +{ + Q_D(const MatchSetting); + + return d->interfaceName; +} + +void NetworkManager::MatchSetting::fromMap(const QVariantMap &setting) +{ + if (setting.contains(QLatin1String(NM_SETTING_MATCH_INTERFACE_NAME))) { + setInterfaceName(setting.value(QLatin1String(NM_SETTING_MATCH_INTERFACE_NAME)).toStringList()); + } +} + +QVariantMap NetworkManager::MatchSetting::toMap() const +{ + QVariantMap setting; + + if (!interfaceName().isEmpty()) { + setting.insert(QLatin1String(NM_SETTING_MATCH_INTERFACE_NAME), interfaceName()); + } + + return setting; +} + +QDebug NetworkManager::operator <<(QDebug dbg, const NetworkManager::MatchSetting &setting) +{ + dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; + dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; + + dbg.nospace() << NM_SETTING_MATCH_INTERFACE_NAME << ": " << setting.interfaceName() << '\n'; + + return dbg.maybeSpace(); +} Index: src/settings/matchsetting_p.h =================================================================== --- /dev/null +++ src/settings/matchsetting_p.h @@ -0,0 +1,42 @@ +/* + Copyright 2018 Pranav Gade + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef NETWORKMANAGERQT_MATCH_SETTING_P_H +#define NETWORKMANAGERQT_MATCH_SETTING_P_H + +#include + +namespace NetworkManager +{ + +class MatchSettingPrivate +{ +public: + MatchSettingPrivate(); + + QString name; + + QStringList interfaceName; +}; + +} + +#endif // NETWORKMANAGERQT_MATCH_SETTING_P_H + Index: src/settings/setting.h =================================================================== --- src/settings/setting.h +++ src/settings/setting.h @@ -79,7 +79,9 @@ OvsBridge, OvsInterface, OvsPatch, - OvsPort + OvsPort, + Match, + Tc }; enum SecretFlagType { Index: src/settings/setting.cpp =================================================================== --- src/settings/setting.cpp +++ src/settings/setting.cpp @@ -27,6 +27,13 @@ #include +#if !NM_CHECK_VERSION(1, 10, 0) +#define NM_SETTING_TC_CONFIG_SETTING_NAME "tc" +#endif +#if !NM_CHECK_VERSION(1, 14, 0) +#define NM_SETTING_MATCH_SETTING_NAME "match" +#endif + namespace NetworkManager { @@ -139,6 +146,12 @@ case OvsPort: typeString = QLatin1String(NM_SETTING_OVS_PORT_SETTING_NAME); break; + case Match: + typeString = QLatin1String(NM_SETTING_MATCH_SETTING_NAME); + break; + case Tc: + typeString = QLatin1String(NM_SETTING_TC_CONFIG_SETTING_NAME); + break; case NetworkManager::Setting::Generic: typeString = QLatin1String(NM_SETTING_GENERIC_SETTING_NAME); break; @@ -209,6 +222,10 @@ type = OvsPatch; } else if (typeString == QLatin1String(NM_SETTING_OVS_PORT_SETTING_NAME)) { type = OvsPort; + } else if (typeString == QLatin1String(NM_SETTING_MATCH_SETTING_NAME)) { + type = Match; + } else if (typeString == QLatin1String(NM_SETTING_TC_CONFIG_SETTING_NAME)) { + type = Tc; } return type; Index: src/settings/tcsetting.h =================================================================== --- /dev/null +++ src/settings/tcsetting.h @@ -0,0 +1,69 @@ +/* + Copyright 2018 Pranav Gade + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef NETWORKMANAGERQT_TC_SETTING_H +#define NETWORKMANAGERQT_TC_SETTING_H + +#include +#include "setting.h" + +namespace NetworkManager +{ + +class TcSettingPrivate; + +/** + * Represents Tc setting + */ +class NETWORKMANAGERQT_EXPORT TcSetting : public Setting +{ +public: + typedef QSharedPointer Ptr; + typedef QList List; + + TcSetting(); + explicit TcSetting(const Ptr &other); + ~TcSetting() override; + + QString name() const override; + + void setQdiscs(const NMVariantMapList &qdiscs); + NMVariantMapList qdiscs() const; + + void setTfilters(const NMVariantMapList &tfilters); + NMVariantMapList tfilters() const; + + void fromMap(const QVariantMap &setting) override; + + QVariantMap toMap() const override; + +protected: + TcSettingPrivate *d_ptr; + +private: + Q_DECLARE_PRIVATE(TcSetting) +}; + +NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const TcSetting &setting); + +} + +#endif // NETWORKMANAGERQT_TC_SETTING_H + Index: src/settings/tcsetting.cpp =================================================================== --- /dev/null +++ src/settings/tcsetting.cpp @@ -0,0 +1,138 @@ +/* + Copyright Pranav Gade + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "tcsetting.h" +#include "tcsetting_p.h" + +#include + +#if !NM_CHECK_VERSION(1, 10, 0) +#define NM_SETTING_TC_CONFIG_SETTING_NAME "tc" + +#define NM_SETTING_TC_CONFIG_QDISCS "qdiscs" +#define NM_SETTING_TC_CONFIG_TFILTERS "tfilters" +#endif + +NetworkManager::TcSettingPrivate::TcSettingPrivate() + : name(NM_SETTING_TC_CONFIG_SETTING_NAME) +{ } + +NetworkManager::TcSetting::TcSetting() + : Setting(Setting::Tc) + , d_ptr(new TcSettingPrivate()) +{ } + +NetworkManager::TcSetting::TcSetting(const Ptr &other) + : Setting(other) + , d_ptr(new TcSettingPrivate()) +{ + setQdiscs(other->qdiscs()); + setTfilters(other->tfilters()); +} + +NetworkManager::TcSetting::~TcSetting() +{ + delete d_ptr; +} + +QString NetworkManager::TcSetting::name() const +{ + Q_D(const TcSetting); + + return d->name; +} + +void NetworkManager::TcSetting::setQdiscs(const NMVariantMapList &qdiscs) +{ + Q_D(TcSetting); + + d->qdiscs = qdiscs; +} + +NMVariantMapList NetworkManager::TcSetting::qdiscs() const +{ + Q_D(const TcSetting); + + return d->qdiscs; +} + +void NetworkManager::TcSetting::setTfilters(const NMVariantMapList &tfilters) +{ + Q_D(TcSetting); + + d->tfilters = tfilters; +} + +NMVariantMapList NetworkManager::TcSetting::tfilters() const +{ + Q_D(const TcSetting); + + return d->tfilters; +} + +void NetworkManager::TcSetting::fromMap(const QVariantMap &setting) +{ + if (setting.contains(QLatin1String(NM_SETTING_TC_CONFIG_QDISCS))) { + setQdiscs(qdbus_cast(setting.value(QLatin1String(NM_SETTING_TC_CONFIG_QDISCS)))); + } + + if (setting.contains(QLatin1String(NM_SETTING_TC_CONFIG_TFILTERS))) { + setTfilters(qdbus_cast(setting.value(QLatin1String(NM_SETTING_TC_CONFIG_TFILTERS)))); + } +} + +QVariantMap NetworkManager::TcSetting::toMap() const +{ + QVariantMap setting; + + if (!qdiscs().empty()) { + setting.insert(QLatin1String(NM_SETTING_TC_CONFIG_QDISCS), QVariant::fromValue(qdiscs())); + } + + if (!tfilters().empty()) { + setting.insert(QLatin1String(NM_SETTING_TC_CONFIG_TFILTERS), QVariant::fromValue(tfilters())); + } + + return setting; +} + +QDebug NetworkManager::operator <<(QDebug dbg, const NetworkManager::TcSetting &setting) +{ + dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; + dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; + + dbg.nospace() << NM_SETTING_TC_CONFIG_QDISCS << ": " << '\n'; + Q_FOREACH (const QVariantMap & qdisc, setting.qdiscs()) { + QVariantMap::const_iterator i = qdisc.constBegin(); + while (i != qdisc.constEnd()) { + dbg.nospace() << i.key() << ": " << i.value() << '\n'; + } + } + dbg.nospace() << NM_SETTING_TC_CONFIG_TFILTERS << ": " << '\n'; + Q_FOREACH (const QVariantMap & tfilter, setting.tfilters()) { + QVariantMap::const_iterator i = tfilter.constBegin(); + while (i != tfilter.constEnd()) { + dbg.nospace() << i.key() << ": " << i.value() << '\n'; + } + } + + return dbg.maybeSpace(); +} + Index: src/settings/tcsetting_p.h =================================================================== --- /dev/null +++ src/settings/tcsetting_p.h @@ -0,0 +1,47 @@ +/* + Copyright 2018 Pranav Gade + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef NETWORKMANAGERQT_TC_SETTING_P_H +#define NETWORKMANAGERQT_TC_SETTING_P_H + +#include + +#include + +typedef QList NMVariantMapList; + +namespace NetworkManager +{ + +class TcSettingPrivate +{ +public: + TcSettingPrivate(); + + QString name; + + NMVariantMapList qdiscs; + NMVariantMapList tfilters; +}; + +} + +#endif // NETWORKMANAGERQT_TC_SETTING_P_H +