File indexing completed on 2024-04-14 03:57:38

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 "tunsetting.h"
0008 #include "tunsetting_p.h"
0009 
0010 #include <QDebug>
0011 
0012 NetworkManager::TunSettingPrivate::TunSettingPrivate()
0013     : name(NM_SETTING_TUN_SETTING_NAME)
0014     , mode(TunSetting::Tun)
0015     , multiQueue(false)
0016     , pi(false)
0017     , vnetHdr(false)
0018 {
0019 }
0020 
0021 NetworkManager::TunSetting::TunSetting()
0022     : Setting(Setting::Tun)
0023     , d_ptr(new TunSettingPrivate())
0024 {
0025 }
0026 
0027 NetworkManager::TunSetting::TunSetting(const Ptr &other)
0028     : Setting(other)
0029     , d_ptr(new TunSettingPrivate())
0030 {
0031     setGroup(other->group());
0032     setMode(other->mode());
0033     setMultiQueue(other->multiQueue());
0034     setOwner(other->owner());
0035     setPi(other->pi());
0036     setVnetHdr(other->vnetHdr());
0037 }
0038 
0039 NetworkManager::TunSetting::~TunSetting()
0040 {
0041     delete d_ptr;
0042 }
0043 
0044 QString NetworkManager::TunSetting::name() const
0045 {
0046     Q_D(const TunSetting);
0047 
0048     return d->name;
0049 }
0050 
0051 void NetworkManager::TunSetting::setGroup(const QString &group)
0052 {
0053     Q_D(TunSetting);
0054 
0055     d->group = group;
0056 }
0057 
0058 QString NetworkManager::TunSetting::group() const
0059 {
0060     Q_D(const TunSetting);
0061 
0062     return d->group;
0063 }
0064 
0065 void NetworkManager::TunSetting::setMode(NetworkManager::TunSetting::Mode mode)
0066 {
0067     Q_D(TunSetting);
0068 
0069     d->mode = mode;
0070 }
0071 
0072 NetworkManager::TunSetting::Mode NetworkManager::TunSetting::mode() const
0073 {
0074     Q_D(const TunSetting);
0075 
0076     return d->mode;
0077 }
0078 
0079 void NetworkManager::TunSetting::setMultiQueue(bool multiQueue)
0080 {
0081     Q_D(TunSetting);
0082 
0083     d->multiQueue = multiQueue;
0084 }
0085 
0086 bool NetworkManager::TunSetting::multiQueue() const
0087 {
0088     Q_D(const TunSetting);
0089 
0090     return d->multiQueue;
0091 }
0092 
0093 void NetworkManager::TunSetting::setOwner(const QString &owner)
0094 {
0095     Q_D(TunSetting);
0096 
0097     d->owner = owner;
0098 }
0099 
0100 QString NetworkManager::TunSetting::owner() const
0101 {
0102     Q_D(const TunSetting);
0103 
0104     return d->owner;
0105 }
0106 
0107 void NetworkManager::TunSetting::setPi(bool pi)
0108 {
0109     Q_D(TunSetting);
0110 
0111     d->pi = pi;
0112 }
0113 
0114 bool NetworkManager::TunSetting::pi() const
0115 {
0116     Q_D(const TunSetting);
0117 
0118     return d->pi;
0119 }
0120 
0121 void NetworkManager::TunSetting::setVnetHdr(bool vnetHdr)
0122 {
0123     Q_D(TunSetting);
0124 
0125     d->vnetHdr = vnetHdr;
0126 }
0127 
0128 bool NetworkManager::TunSetting::vnetHdr() const
0129 {
0130     Q_D(const TunSetting);
0131 
0132     return d->vnetHdr;
0133 }
0134 
0135 void NetworkManager::TunSetting::fromMap(const QVariantMap &setting)
0136 {
0137     if (setting.contains(QLatin1String(NM_SETTING_TUN_GROUP))) {
0138         setGroup(setting.value(QLatin1String(NM_SETTING_TUN_GROUP)).toString());
0139     }
0140 
0141     if (setting.contains(QLatin1String(NM_SETTING_TUN_MODE))) {
0142         setMode((Mode)setting.value(QLatin1String(NM_SETTING_TUN_MODE)).toUInt());
0143     }
0144 
0145     if (setting.contains(QLatin1String(NM_SETTING_TUN_MULTI_QUEUE))) {
0146         setMultiQueue(setting.value(QLatin1String(NM_SETTING_TUN_MULTI_QUEUE)).toBool());
0147     }
0148 
0149     if (setting.contains(QLatin1String(NM_SETTING_TUN_OWNER))) {
0150         setOwner(setting.value(QLatin1String(NM_SETTING_TUN_OWNER)).toString());
0151     }
0152 
0153     if (setting.contains(QLatin1String(NM_SETTING_TUN_PI))) {
0154         setPi(setting.value(QLatin1String(NM_SETTING_TUN_PI)).toBool());
0155     }
0156 
0157     if (setting.contains(QLatin1String(NM_SETTING_TUN_VNET_HDR))) {
0158         setVnetHdr(setting.value(QLatin1String(NM_SETTING_TUN_VNET_HDR)).toBool());
0159     }
0160 }
0161 
0162 QVariantMap NetworkManager::TunSetting::toMap() const
0163 {
0164     QVariantMap setting;
0165 
0166     if (!group().isEmpty()) {
0167         setting.insert(QLatin1String(NM_SETTING_TUN_GROUP), group());
0168     }
0169 
0170     setting.insert(QLatin1String(NM_SETTING_TUN_MODE), (int)mode());
0171     setting.insert(QLatin1String(NM_SETTING_TUN_MULTI_QUEUE), multiQueue());
0172 
0173     if (!owner().isEmpty()) {
0174         setting.insert(QLatin1String(NM_SETTING_TUN_OWNER), owner());
0175     }
0176 
0177     setting.insert(QLatin1String(NM_SETTING_TUN_PI), pi());
0178     setting.insert(QLatin1String(NM_SETTING_TUN_VNET_HDR), vnetHdr());
0179 
0180     return setting;
0181 }
0182 
0183 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::TunSetting &setting)
0184 {
0185     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0186     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0187 
0188     dbg.nospace() << NM_SETTING_TUN_GROUP << ": " << setting.group() << '\n';
0189     dbg.nospace() << NM_SETTING_TUN_MODE << ": " << setting.mode() << '\n';
0190     dbg.nospace() << NM_SETTING_TUN_MULTI_QUEUE << ": " << setting.multiQueue() << '\n';
0191     dbg.nospace() << NM_SETTING_TUN_OWNER << ": " << setting.owner() << '\n';
0192     dbg.nospace() << NM_SETTING_TUN_PI << ": " << setting.pi() << '\n';
0193     dbg.nospace() << NM_SETTING_TUN_VNET_HDR << ": " << setting.vnetHdr() << '\n';
0194 
0195     return dbg.maybeSpace();
0196 }