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

0001 /*
0002     SPDX-FileCopyrightText: 2017 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 "device_p.h"
0008 #include "iptunneldevice_p.h"
0009 #include "manager.h"
0010 
0011 NetworkManager::IpTunnelDevicePrivate::IpTunnelDevicePrivate(const QString &path, IpTunnelDevice *q)
0012     : DevicePrivate(path, q)
0013 #ifdef NMQT_STATIC
0014     , iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::sessionBus())
0015 #else
0016     , iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::systemBus())
0017 #endif
0018 {
0019 }
0020 
0021 NetworkManager::IpTunnelDevicePrivate::~IpTunnelDevicePrivate()
0022 {
0023 }
0024 
0025 NetworkManager::IpTunnelDevice::IpTunnelDevice(const QString &path, QObject *parent)
0026     : Device(*new IpTunnelDevicePrivate(path, this), parent)
0027 {
0028     Q_D(IpTunnelDevice);
0029 
0030     QVariantMap initialProperties = NetworkManagerPrivate::retrieveInitialProperties(d->iface.staticInterfaceName(), path);
0031     if (!initialProperties.isEmpty()) {
0032         d->propertiesChanged(initialProperties);
0033     }
0034 
0035 }
0036 
0037 NetworkManager::IpTunnelDevice::~IpTunnelDevice()
0038 {
0039 }
0040 
0041 NetworkManager::Device::Type NetworkManager::IpTunnelDevice::type() const
0042 {
0043     return NetworkManager::Device::IpTunnel;
0044 }
0045 
0046 uchar NetworkManager::IpTunnelDevice::encapsulationLimit() const
0047 {
0048     Q_D(const IpTunnelDevice);
0049     return d->encapsulationLimit;
0050 }
0051 
0052 uint NetworkManager::IpTunnelDevice::flowLabel() const
0053 {
0054     Q_D(const IpTunnelDevice);
0055     return d->flowLabel;
0056 }
0057 
0058 QString NetworkManager::IpTunnelDevice::inputKey() const
0059 {
0060     Q_D(const IpTunnelDevice);
0061     return d->inputKey;
0062 }
0063 
0064 QString NetworkManager::IpTunnelDevice::local() const
0065 {
0066     Q_D(const IpTunnelDevice);
0067     return d->local;
0068 }
0069 
0070 uint NetworkManager::IpTunnelDevice::mode() const
0071 {
0072     Q_D(const IpTunnelDevice);
0073     return d->mode;
0074 }
0075 
0076 QString NetworkManager::IpTunnelDevice::outputKey() const
0077 {
0078     Q_D(const IpTunnelDevice);
0079     return d->outputKey;
0080 }
0081 
0082 NetworkManager::Device::Ptr NetworkManager::IpTunnelDevice::parent() const
0083 {
0084     Q_D(const IpTunnelDevice);
0085     return NetworkManager::findNetworkInterface(d->parent);
0086 }
0087 
0088 bool NetworkManager::IpTunnelDevice::pathMtuDiscovery() const
0089 {
0090     Q_D(const IpTunnelDevice);
0091     return d->pathMtuDiscovery;
0092 }
0093 
0094 QString NetworkManager::IpTunnelDevice::remote() const
0095 {
0096     Q_D(const IpTunnelDevice);
0097     return d->remote;
0098 }
0099 
0100 uchar NetworkManager::IpTunnelDevice::tos() const
0101 {
0102     Q_D(const IpTunnelDevice);
0103     return d->tos;
0104 }
0105 
0106 uchar NetworkManager::IpTunnelDevice::ttl() const
0107 {
0108     Q_D(const IpTunnelDevice);
0109     return d->ttl;
0110 }
0111 
0112 void NetworkManager::IpTunnelDevicePrivate::propertyChanged(const QString &property, const QVariant &value)
0113 {
0114     Q_Q(IpTunnelDevice);
0115 
0116     if (property == QLatin1String("EncapsulationLimit")) {
0117         encapsulationLimit = static_cast<ushort>(value.toUInt());
0118         Q_EMIT q->encapsulationLimitChanged(encapsulationLimit);
0119     } else if (property == QLatin1String("FlowLabel")) {
0120         flowLabel = value.toUInt();
0121         Q_EMIT q->flowLabelChanged(flowLabel);
0122     } else if (property == QLatin1String("InputKey")) {
0123         inputKey = value.toString();
0124         Q_EMIT q->inputKeyChanged(inputKey);
0125     } else if (property == QLatin1String("Local")) {
0126         local = value.toString();
0127         Q_EMIT q->localChanged(local);
0128     } else if (property == QLatin1String("Mode")) {
0129         mode = value.toUInt();
0130         Q_EMIT q->modeChanged(mode);
0131     } else if (property == QLatin1String("OutputKey")) {
0132         outputKey = value.toString();
0133         Q_EMIT q->outputKeyChanged(outputKey);
0134     } else if (property == QLatin1String("Parent")) {
0135         parent = value.toString();
0136         Q_EMIT q->parentChanged(parent);
0137     } else if (property == QLatin1String("PathMtuDiscovery")) {
0138         pathMtuDiscovery = value.toBool();
0139         Q_EMIT q->pathMtuDiscoveryChanged(pathMtuDiscovery);
0140     } else if (property == QLatin1String("Remote")) {
0141         remote = value.toString();
0142         Q_EMIT q->remoteChanged(remote);
0143     } else if (property == QLatin1String("Tos")) {
0144         tos = static_cast<ushort>(value.toUInt());
0145         Q_EMIT q->tosChanged(tos);
0146     } else if (property == QLatin1String("Ttl")) {
0147         ttl = static_cast<ushort>(value.toUInt());
0148         Q_EMIT q->ttlChanged(ttl);
0149     } else {
0150         DevicePrivate::propertyChanged(property, value);
0151     }
0152 }
0153 
0154 #include "moc_iptunneldevice.cpp"
0155 #include "moc_iptunneldevice_p.cpp"