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

0001 /*
0002     SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com>
0003     SPDX-FileCopyrightText: 2013 Daniel Nicoletti <dantti12@gmail.com>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006 */
0007 
0008 #ifndef NETWORKMANAGERQT_CONNECTION_SETTINGS_H
0009 #define NETWORKMANAGERQT_CONNECTION_SETTINGS_H
0010 
0011 #include "setting.h"
0012 #include <networkmanagerqt/networkmanagerqt_export.h>
0013 
0014 #undef signals
0015 #include <libnm/NetworkManager.h>
0016 #define signals Q_SIGNALS
0017 
0018 #include <QDateTime>
0019 #include <QHash>
0020 #include <QString>
0021 
0022 namespace NetworkManager
0023 {
0024 class ConnectionSettingsPrivate;
0025 
0026 /**
0027  * Represents collection of all connection settings
0028  */
0029 class NETWORKMANAGERQT_EXPORT ConnectionSettings
0030 {
0031     Q_ENUMS(ConnectionType)
0032 public:
0033     typedef QSharedPointer<ConnectionSettings> Ptr;
0034     typedef QList<Ptr> List;
0035     enum ConnectionType {
0036         Unknown = 0,
0037         Adsl,
0038         Bluetooth,
0039         Bond,
0040         Bridge,
0041         Cdma,
0042         Gsm,
0043         Infiniband,
0044         OLPCMesh,
0045         Pppoe,
0046         Vlan,
0047         Vpn,
0048         Wimax,
0049         Wired,
0050         Wireless,
0051         Team,
0052         Generic,
0053         Tun,
0054         IpTunnel,
0055         WireGuard,
0056     };
0057 
0058     enum AutoconnectSlaves {
0059         SlavesDefault = -1,
0060         DoNotConnectSlaves = 0,
0061         ConnectAllSlaves = 1,
0062     };
0063 
0064     enum Lldp {
0065         LldpDefault = -1,
0066         LldpDisable = 0,
0067         LldpEnableRx = 1,
0068     };
0069 
0070     // FIXME same enum as in device.h, unfortunately it's not possible to use that one
0071     // maybe in future move all enums into one header so they can be used across all classes
0072     enum Metered {
0073         MeteredUnknown = 0,
0074         MeteredYes = 1,
0075         MeteredNo = 2,
0076         MeteredGuessYes = 3,
0077         MeteredGuessNo = 4,
0078     };
0079 
0080     enum Mdns {
0081         MdnsDefault = -1,
0082         MdnsNo = 0,
0083         MdnsResolve = 1,
0084         MdnsResolveAndRespond = 2
0085     };
0086 
0087     static ConnectionType typeFromString(const QString &typeString);
0088     static QString typeAsString(const ConnectionType type);
0089     static QString createNewUuid();
0090 
0091     ConnectionSettings();
0092     explicit ConnectionSettings(ConnectionType type, NMBluetoothCapabilities bt_cap = NM_BT_CAPABILITY_DUN);
0093     explicit ConnectionSettings(const ConnectionSettings::Ptr &other);
0094     explicit ConnectionSettings(const NMVariantMapMap &map);
0095     virtual ~ConnectionSettings();
0096 
0097     QString name() const;
0098 
0099     void fromMap(const NMVariantMapMap &map);
0100     void fromMeCard(const QVariantMap &map);
0101 
0102     NMVariantMapMap toMap() const;
0103 
0104     void setId(const QString &id);
0105     QString id() const;
0106 
0107     void setUuid(const QString &uuid);
0108     QString uuid() const;
0109 
0110     void setInterfaceName(const QString &interfaceName);
0111     QString interfaceName() const;
0112 
0113     void setConnectionType(ConnectionType type, NMBluetoothCapabilities bt_cap = NM_BT_CAPABILITY_DUN);
0114     ConnectionType connectionType() const;
0115 
0116     void addToPermissions(const QString &user, const QString &type);
0117     void setPermissions(const QHash<QString, QString> &perm);
0118     QHash<QString, QString> permissions() const;
0119 
0120     void setAutoconnect(bool autoconnect);
0121     bool autoconnect() const;
0122 
0123     void setAutoconnectPriority(int priority);
0124     int autoconnectPriority() const;
0125 
0126     void setTimestamp(const QDateTime &timestamp);
0127     QDateTime timestamp() const;
0128 
0129     void setReadOnly(bool readonly);
0130     bool readOnly() const;
0131 
0132     void setZone(const QString &zone);
0133     QString zone() const;
0134 
0135     bool isSlave() const;
0136 
0137     void setMaster(const QString &master);
0138     QString master() const;
0139 
0140     void setSlaveType(const QString &type);
0141     QString slaveType() const;
0142 
0143     void setSecondaries(const QStringList &secondaries);
0144     QStringList secondaries() const;
0145 
0146     void setGatewayPingTimeout(quint32 timeout);
0147     quint32 gatewayPingTimeout() const;
0148 
0149     void setAutoconnectRetries(int retries);
0150     int autoconnectRetries() const;
0151 
0152     void setAutoconnectSlaves(AutoconnectSlaves autoconnectSlaves);
0153     AutoconnectSlaves autoconnectSlaves() const;
0154 
0155     void setLldp(Lldp lldp);
0156     Lldp lldp() const;
0157 
0158     void setMetered(Metered metered);
0159     Metered metered() const;
0160 
0161     void setMdns(Mdns mdns);
0162     Mdns mdns() const;
0163 
0164     void setStableId(const QString &stableId);
0165     QString stableId() const;
0166 
0167     Setting::Ptr setting(Setting::SettingType type) const;
0168     Setting::Ptr setting(const QString &type) const;
0169 
0170     Setting::List settings() const;
0171 
0172 protected:
0173     ConnectionSettingsPrivate *d_ptr;
0174 
0175 private:
0176     Q_DECLARE_PRIVATE(ConnectionSettings)
0177 };
0178 
0179 NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const ConnectionSettings &setting);
0180 
0181 }
0182 
0183 #endif // NETWORKMANAGERQT_CONNECTION_SETTINGS_H