File indexing completed on 2024-04-28 07:49:06

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 "infinibandsetting.h"
0008 #include "infinibandsetting_p.h"
0009 
0010 #include <QDebug>
0011 
0012 NetworkManager::InfinibandSettingPrivate::InfinibandSettingPrivate()
0013     : name(NM_SETTING_INFINIBAND_SETTING_NAME)
0014     , mtu(0)
0015     , transportMode(InfinibandSetting::Unknown)
0016     , pKey(-1)
0017 {
0018 }
0019 
0020 NetworkManager::InfinibandSetting::InfinibandSetting()
0021     : Setting(Setting::Infiniband)
0022     , d_ptr(new InfinibandSettingPrivate())
0023 {
0024 }
0025 
0026 NetworkManager::InfinibandSetting::InfinibandSetting(const NetworkManager::InfinibandSetting::Ptr &other)
0027     : Setting(other)
0028     , d_ptr(new InfinibandSettingPrivate())
0029 {
0030     setMacAddress(other->macAddress());
0031     setMtu(other->mtu());
0032     setTransportMode(other->transportMode());
0033     setPKey(other->pKey());
0034     setParent(other->parent());
0035 }
0036 
0037 NetworkManager::InfinibandSetting::~InfinibandSetting()
0038 {
0039     delete d_ptr;
0040 }
0041 
0042 QString NetworkManager::InfinibandSetting::name() const
0043 {
0044     Q_D(const InfinibandSetting);
0045 
0046     return d->name;
0047 }
0048 
0049 void NetworkManager::InfinibandSetting::setMacAddress(const QByteArray &address)
0050 {
0051     Q_D(InfinibandSetting);
0052 
0053     d->macAddress = address;
0054 }
0055 
0056 QByteArray NetworkManager::InfinibandSetting::macAddress() const
0057 {
0058     Q_D(const InfinibandSetting);
0059 
0060     return d->macAddress;
0061 }
0062 
0063 void NetworkManager::InfinibandSetting::setMtu(quint32 mtu)
0064 {
0065     Q_D(InfinibandSetting);
0066 
0067     d->mtu = mtu;
0068 }
0069 
0070 quint32 NetworkManager::InfinibandSetting::mtu() const
0071 {
0072     Q_D(const InfinibandSetting);
0073 
0074     return d->mtu;
0075 }
0076 
0077 void NetworkManager::InfinibandSetting::setTransportMode(NetworkManager::InfinibandSetting::TransportMode mode)
0078 {
0079     Q_D(InfinibandSetting);
0080 
0081     d->transportMode = mode;
0082 }
0083 
0084 NetworkManager::InfinibandSetting::TransportMode NetworkManager::InfinibandSetting::transportMode() const
0085 {
0086     Q_D(const InfinibandSetting);
0087 
0088     return d->transportMode;
0089 }
0090 
0091 void NetworkManager::InfinibandSetting::setPKey(qint32 key)
0092 {
0093     Q_D(InfinibandSetting);
0094 
0095     d->pKey = key;
0096 }
0097 
0098 qint32 NetworkManager::InfinibandSetting::pKey() const
0099 {
0100     Q_D(const InfinibandSetting);
0101 
0102     return d->pKey;
0103 }
0104 
0105 void NetworkManager::InfinibandSetting::setParent(const QString &parent)
0106 {
0107     Q_D(InfinibandSetting);
0108 
0109     d->parent = parent;
0110 }
0111 
0112 QString NetworkManager::InfinibandSetting::parent() const
0113 {
0114     Q_D(const InfinibandSetting);
0115 
0116     return d->parent;
0117 }
0118 
0119 void NetworkManager::InfinibandSetting::fromMap(const QVariantMap &setting)
0120 {
0121     if (setting.contains(QLatin1String(NM_SETTING_INFINIBAND_MAC_ADDRESS))) {
0122         setMacAddress(setting.value(QLatin1String(NM_SETTING_INFINIBAND_MAC_ADDRESS)).toByteArray());
0123     }
0124 
0125     if (setting.contains(QLatin1String(NM_SETTING_INFINIBAND_MTU))) {
0126         setMtu(setting.value(QLatin1String(NM_SETTING_INFINIBAND_MTU)).toUInt());
0127     }
0128 
0129     if (setting.contains(QLatin1String(NM_SETTING_INFINIBAND_TRANSPORT_MODE))) {
0130         QString mode = setting.value(QLatin1String(NM_SETTING_INFINIBAND_TRANSPORT_MODE)).toString();
0131 
0132         if (mode == "datagram") {
0133             setTransportMode(Datagram);
0134         } else if (mode == "connected") {
0135             setTransportMode(Connected);
0136         }
0137     }
0138 
0139     if (setting.contains(QLatin1String(NM_SETTING_INFINIBAND_P_KEY))) {
0140         setPKey(setting.value(QLatin1String(NM_SETTING_INFINIBAND_P_KEY)).toInt());
0141     }
0142 
0143     if (setting.contains(QLatin1String(NM_SETTING_INFINIBAND_PARENT))) {
0144         setParent(setting.value(QLatin1String(NM_SETTING_INFINIBAND_PARENT)).toString());
0145     }
0146 }
0147 
0148 QVariantMap NetworkManager::InfinibandSetting::toMap() const
0149 {
0150     QVariantMap setting;
0151 
0152     if (!macAddress().isEmpty()) {
0153         setting.insert(QLatin1String(NM_SETTING_INFINIBAND_MAC_ADDRESS), macAddress());
0154     }
0155 
0156     if (mtu()) {
0157         setting.insert(QLatin1String(NM_SETTING_INFINIBAND_MTU), mtu());
0158     }
0159 
0160     if (transportMode() != Unknown) {
0161         if (transportMode() == Datagram) {
0162             setting.insert(QLatin1String(NM_SETTING_INFINIBAND_TRANSPORT_MODE), "datagram");
0163         } else if (transportMode() == Connected) {
0164             setting.insert(QLatin1String(NM_SETTING_INFINIBAND_TRANSPORT_MODE), "connected");
0165         }
0166     }
0167 
0168     if (pKey() != -1) {
0169         setting.insert(QLatin1String(NM_SETTING_INFINIBAND_P_KEY), pKey());
0170     }
0171 
0172     if (!parent().isEmpty()) {
0173         setting.insert(QLatin1String(NM_SETTING_INFINIBAND_PARENT), parent());
0174     }
0175 
0176     return setting;
0177 }
0178 
0179 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::InfinibandSetting &setting)
0180 {
0181     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0182     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0183 
0184     dbg.nospace() << NM_SETTING_INFINIBAND_MAC_ADDRESS << ": " << setting.macAddress() << '\n';
0185     dbg.nospace() << NM_SETTING_INFINIBAND_MTU << ": " << setting.mtu() << '\n';
0186     dbg.nospace() << NM_SETTING_INFINIBAND_TRANSPORT_MODE << ": " << setting.transportMode() << '\n';
0187     dbg.nospace() << NM_SETTING_INFINIBAND_P_KEY << ": " << setting.pKey() << '\n';
0188     dbg.nospace() << NM_SETTING_INFINIBAND_PARENT << ": " << setting.parent() << '\n';
0189 
0190     return dbg.maybeSpace();
0191 }