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

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 
0101     NMVariantMapMap toMap() const;
0102 
0103     void setId(const QString &id);
0104     QString id() const;
0105 
0106     void setUuid(const QString &uuid);
0107     QString uuid() const;
0108 
0109     void setInterfaceName(const QString &interfaceName);
0110     QString interfaceName() const;
0111 
0112     void setConnectionType(ConnectionType type, NMBluetoothCapabilities bt_cap = NM_BT_CAPABILITY_DUN);
0113     ConnectionType connectionType() const;
0114 
0115     void addToPermissions(const QString &user, const QString &type);
0116     void setPermissions(const QHash<QString, QString> &perm);
0117     QHash<QString, QString> permissions() const;
0118 
0119     void setAutoconnect(bool autoconnect);
0120     bool autoconnect() const;
0121 
0122     void setAutoconnectPriority(int priority);
0123     int autoconnectPriority() const;
0124 
0125     void setTimestamp(const QDateTime &timestamp);
0126     QDateTime timestamp() const;
0127 
0128     void setReadOnly(bool readonly);
0129     bool readOnly() const;
0130 
0131     void setZone(const QString &zone);
0132     QString zone() const;
0133 
0134     bool isSlave() const;
0135 
0136     void setMaster(const QString &master);
0137     QString master() const;
0138 
0139     void setSlaveType(const QString &type);
0140     QString slaveType() const;
0141 
0142     void setSecondaries(const QStringList &secondaries);
0143     QStringList secondaries() const;
0144 
0145     void setGatewayPingTimeout(quint32 timeout);
0146     quint32 gatewayPingTimeout() const;
0147 
0148     void setAutoconnectRetries(int retries);
0149     int autoconnectRetries() const;
0150 
0151     void setAutoconnectSlaves(AutoconnectSlaves autoconnectSlaves);
0152     AutoconnectSlaves autoconnectSlaves() const;
0153 
0154     void setLldp(Lldp lldp);
0155     Lldp lldp() const;
0156 
0157     void setMetered(Metered metered);
0158     Metered metered() const;
0159 
0160     void setMdns(Mdns mdns);
0161     Mdns mdns() const;
0162 
0163     void setStableId(const QString &stableId);
0164     QString stableId() const;
0165 
0166     Setting::Ptr setting(Setting::SettingType type) const;
0167     Setting::Ptr setting(const QString &type) const;
0168 
0169     Setting::List settings() const;
0170 
0171 protected:
0172     ConnectionSettingsPrivate *d_ptr;
0173 
0174 private:
0175     Q_DECLARE_PRIVATE(ConnectionSettings)
0176 };
0177 
0178 NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const ConnectionSettings &setting);
0179 
0180 }
0181 
0182 #endif // NETWORKMANAGERQT_CONNECTION_SETTINGS_H