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

0001 /*
0002     SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "bondsetting.h"
0008 #include "bondsetting_p.h"
0009 
0010 #define NM_SETTING_BOND_INTERFACE_NAME "interface-name"
0011 
0012 #include <QDebug>
0013 
0014 NetworkManager::BondSettingPrivate::BondSettingPrivate()
0015     : name(NM_SETTING_BOND_SETTING_NAME)
0016 {
0017 }
0018 
0019 NetworkManager::BondSetting::BondSetting()
0020     : Setting(Setting::Bond)
0021     , d_ptr(new BondSettingPrivate())
0022 {
0023 }
0024 
0025 NetworkManager::BondSetting::BondSetting(const Ptr &other)
0026     : Setting(other)
0027     , d_ptr(new BondSettingPrivate())
0028 {
0029     setInterfaceName(other->interfaceName());
0030     setOptions(other->options());
0031 }
0032 
0033 NetworkManager::BondSetting::~BondSetting()
0034 {
0035     delete d_ptr;
0036 }
0037 
0038 QString NetworkManager::BondSetting::name() const
0039 {
0040     Q_D(const BondSetting);
0041 
0042     return d->name;
0043 }
0044 
0045 void NetworkManager::BondSetting::setInterfaceName(const QString &name)
0046 {
0047     Q_D(BondSetting);
0048 
0049     d->interfaceName = name;
0050 }
0051 
0052 QString NetworkManager::BondSetting::interfaceName() const
0053 {
0054     Q_D(const BondSetting);
0055 
0056     return d->interfaceName;
0057 }
0058 
0059 void NetworkManager::BondSetting::addOption(const QString &option, const QString &value)
0060 {
0061     Q_D(BondSetting);
0062 
0063     d->options.insert(option, value);
0064 }
0065 
0066 void NetworkManager::BondSetting::setOptions(const NMStringMap &options)
0067 {
0068     Q_D(BondSetting);
0069 
0070     d->options = options;
0071 }
0072 
0073 NMStringMap NetworkManager::BondSetting::options() const
0074 {
0075     Q_D(const BondSetting);
0076 
0077     return d->options;
0078 }
0079 
0080 void NetworkManager::BondSetting::fromMap(const QVariantMap &setting)
0081 {
0082     if (setting.contains(QLatin1String(NM_SETTING_BOND_INTERFACE_NAME))) {
0083         setInterfaceName(setting.value(QLatin1String(NM_SETTING_BOND_INTERFACE_NAME)).toString());
0084     }
0085 
0086     if (setting.contains(QLatin1String(NM_SETTING_BOND_OPTIONS))) {
0087         setOptions(qdbus_cast<NMStringMap>(setting.value(QLatin1String(NM_SETTING_BOND_OPTIONS))));
0088     }
0089 }
0090 
0091 QVariantMap NetworkManager::BondSetting::toMap() const
0092 {
0093     QVariantMap setting;
0094     if (!interfaceName().isEmpty()) {
0095         setting.insert(QLatin1String(NM_SETTING_BOND_INTERFACE_NAME), interfaceName());
0096     }
0097     if (!options().isEmpty()) {
0098         setting.insert(QLatin1String(NM_SETTING_BOND_OPTIONS), QVariant::fromValue<NMStringMap>(options()));
0099     }
0100 
0101     return setting;
0102 }
0103 
0104 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::BondSetting &setting)
0105 {
0106     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0107     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0108 
0109     dbg.nospace() << NM_SETTING_BOND_INTERFACE_NAME << ": " << setting.interfaceName() << '\n';
0110     dbg.nospace() << NM_SETTING_BOND_OPTIONS << ": " << setting.options() << '\n';
0111 
0112     return dbg.maybeSpace();
0113 }