File indexing completed on 2024-04-28 15:33:16

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 "vlansetting.h"
0008 #include "vlansetting_p.h"
0009 
0010 // define the deprecated&dropped values
0011 #define NM_SETTING_VLAN_INTERFACE_NAME "interface-name"
0012 
0013 #include <QDebug>
0014 
0015 NetworkManager::VlanSettingPrivate::VlanSettingPrivate()
0016     : name(NM_SETTING_VLAN_SETTING_NAME)
0017     , id(0)
0018     , flags(VlanSetting::None)
0019 {
0020 }
0021 
0022 NetworkManager::VlanSetting::VlanSetting()
0023     : Setting(Setting::Vlan)
0024     , d_ptr(new VlanSettingPrivate())
0025 {
0026 }
0027 
0028 NetworkManager::VlanSetting::VlanSetting(const Ptr &other)
0029     : Setting(other)
0030     , d_ptr(new VlanSettingPrivate())
0031 {
0032     setInterfaceName(other->interfaceName());
0033     setParent(other->parent());
0034     setId(other->id());
0035     setFlags(other->flags());
0036     setIngressPriorityMap(other->ingressPriorityMap());
0037     setEgressPriorityMap(other->egressPriorityMap());
0038 }
0039 
0040 NetworkManager::VlanSetting::~VlanSetting()
0041 {
0042     delete d_ptr;
0043 }
0044 
0045 QString NetworkManager::VlanSetting::name() const
0046 {
0047     Q_D(const VlanSetting);
0048 
0049     return d->name;
0050 }
0051 
0052 void NetworkManager::VlanSetting::setInterfaceName(const QString &name)
0053 {
0054     Q_D(VlanSetting);
0055 
0056     d->interfaceName = name;
0057 }
0058 
0059 QString NetworkManager::VlanSetting::interfaceName() const
0060 {
0061     Q_D(const VlanSetting);
0062 
0063     return d->interfaceName;
0064 }
0065 
0066 void NetworkManager::VlanSetting::setParent(const QString &parent)
0067 {
0068     Q_D(VlanSetting);
0069 
0070     d->parent = parent;
0071 }
0072 
0073 QString NetworkManager::VlanSetting::parent() const
0074 {
0075     Q_D(const VlanSetting);
0076 
0077     return d->parent;
0078 }
0079 
0080 void NetworkManager::VlanSetting::setId(quint32 id)
0081 {
0082     Q_D(VlanSetting);
0083 
0084     d->id = id;
0085 }
0086 
0087 quint32 NetworkManager::VlanSetting::id() const
0088 {
0089     Q_D(const VlanSetting);
0090 
0091     return d->id;
0092 }
0093 
0094 void NetworkManager::VlanSetting::setFlags(NetworkManager::VlanSetting::Flags flags)
0095 {
0096     Q_D(VlanSetting);
0097 
0098     d->flags = flags;
0099 }
0100 
0101 NetworkManager::VlanSetting::Flags NetworkManager::VlanSetting::flags() const
0102 {
0103     Q_D(const VlanSetting);
0104 
0105     return d->flags;
0106 }
0107 
0108 void NetworkManager::VlanSetting::setIngressPriorityMap(const QStringList &map)
0109 {
0110     Q_D(VlanSetting);
0111 
0112     d->ingressPriorityMap = map;
0113 }
0114 
0115 QStringList NetworkManager::VlanSetting::ingressPriorityMap() const
0116 {
0117     Q_D(const VlanSetting);
0118 
0119     return d->ingressPriorityMap;
0120 }
0121 
0122 void NetworkManager::VlanSetting::setEgressPriorityMap(const QStringList &map)
0123 {
0124     Q_D(VlanSetting);
0125 
0126     d->egressPriorityMap = map;
0127 }
0128 
0129 QStringList NetworkManager::VlanSetting::egressPriorityMap() const
0130 {
0131     Q_D(const VlanSetting);
0132 
0133     return d->egressPriorityMap;
0134 }
0135 
0136 void NetworkManager::VlanSetting::fromMap(const QVariantMap &setting)
0137 {
0138     if (setting.contains(QLatin1String(NM_SETTING_VLAN_INTERFACE_NAME))) {
0139         setInterfaceName(setting.value(QLatin1String(NM_SETTING_VLAN_INTERFACE_NAME)).toString());
0140     }
0141 
0142     if (setting.contains(QLatin1String(NM_SETTING_VLAN_PARENT))) {
0143         setParent(setting.value(QLatin1String(NM_SETTING_VLAN_PARENT)).toString());
0144     }
0145 
0146     if (setting.contains(QLatin1String(NM_SETTING_VLAN_ID))) {
0147         setId(setting.value(QLatin1String(NM_SETTING_VLAN_ID)).toUInt());
0148     }
0149 
0150     if (setting.contains(QLatin1String(NM_SETTING_VLAN_FLAGS))) {
0151         setFlags((Flag)setting.value(QLatin1String(NM_SETTING_VLAN_FLAGS)).toUInt());
0152     }
0153 
0154     if (setting.contains(QLatin1String(NM_SETTING_VLAN_INGRESS_PRIORITY_MAP))) {
0155         setIngressPriorityMap(setting.value(QLatin1String(NM_SETTING_VLAN_INGRESS_PRIORITY_MAP)).toStringList());
0156     }
0157 
0158     if (setting.contains(QLatin1String(NM_SETTING_VLAN_EGRESS_PRIORITY_MAP))) {
0159         setEgressPriorityMap(setting.value(QLatin1String(NM_SETTING_VLAN_EGRESS_PRIORITY_MAP)).toStringList());
0160     }
0161 }
0162 
0163 QVariantMap NetworkManager::VlanSetting::toMap() const
0164 {
0165     QVariantMap setting;
0166 
0167     if (!interfaceName().isEmpty()) {
0168         setting.insert(QLatin1String(NM_SETTING_VLAN_INTERFACE_NAME), interfaceName());
0169     }
0170 
0171     if (!parent().isEmpty()) {
0172         setting.insert(QLatin1String(NM_SETTING_VLAN_PARENT), parent());
0173     }
0174 
0175     if (id()) {
0176         setting.insert(QLatin1String(NM_SETTING_VLAN_ID), id());
0177     }
0178 
0179     if (flags() != None) {
0180         setting.insert(QLatin1String(NM_SETTING_VLAN_FLAGS), (int)flags());
0181     }
0182 
0183     if (!ingressPriorityMap().isEmpty()) {
0184         setting.insert(QLatin1String(NM_SETTING_VLAN_INGRESS_PRIORITY_MAP), ingressPriorityMap());
0185     }
0186 
0187     if (!egressPriorityMap().isEmpty()) {
0188         setting.insert(QLatin1String(NM_SETTING_VLAN_EGRESS_PRIORITY_MAP), egressPriorityMap());
0189     }
0190 
0191     return setting;
0192 }
0193 
0194 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::VlanSetting &setting)
0195 {
0196     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0197     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0198 
0199     dbg.nospace() << NM_SETTING_VLAN_INTERFACE_NAME << ": " << setting.interfaceName() << '\n';
0200     dbg.nospace() << NM_SETTING_VLAN_PARENT << ": " << setting.parent() << '\n';
0201     dbg.nospace() << NM_SETTING_VLAN_ID << ": " << setting.id() << '\n';
0202     dbg.nospace() << NM_SETTING_VLAN_FLAGS << ": " << setting.flags() << '\n';
0203     dbg.nospace() << NM_SETTING_VLAN_INGRESS_PRIORITY_MAP << ": " << setting.ingressPriorityMap() << '\n';
0204     dbg.nospace() << NM_SETTING_VLAN_EGRESS_PRIORITY_MAP << ": " << setting.egressPriorityMap() << '\n';
0205 
0206     return dbg.maybeSpace();
0207 }