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

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 #ifndef NETWORKMANAGERQT_IPV6_SETTING_H
0008 #define NETWORKMANAGERQT_IPV6_SETTING_H
0009 
0010 #include "ipconfig.h"
0011 #include "setting.h"
0012 #include <networkmanagerqt/networkmanagerqt_export.h>
0013 
0014 #include <QStringList>
0015 #include <QtNetwork/QHostAddress>
0016 
0017 #define NMQT_SETTING_IP6_CONFIG_SETTING_NAME NM_SETTING_IP6_CONFIG_SETTING_NAME
0018 #define NMQT_SETTING_IP6_CONFIG_METHOD NM_SETTING_IP_CONFIG_METHOD
0019 #define NMQT_SETTING_IP6_CONFIG_DNS NM_SETTING_IP_CONFIG_DNS
0020 #define NMQT_SETTING_IP6_CONFIG_DNS_SEARCH NM_SETTING_IP_CONFIG_DNS_SEARCH
0021 #define NMQT_SETTING_IP6_CONFIG_ADDRESSES NM_SETTING_IP_CONFIG_ADDRESSES
0022 #define NMQT_SETTING_IP6_CONFIG_GATEWAY NM_SETTING_IP_CONFIG_GATEWAY
0023 #define NMQT_SETTING_IP6_CONFIG_ROUTES NM_SETTING_IP_CONFIG_ROUTES
0024 #define NMQT_SETTING_IP6_CONFIG_ROUTE_METRIC NM_SETTING_IP_CONFIG_ROUTE_METRIC
0025 #define NMQT_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES
0026 #define NMQT_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS
0027 #define NMQT_SETTING_IP6_CONFIG_DHCP_HOSTNAME NM_SETTING_IP_CONFIG_DHCP_HOSTNAME
0028 #define NMQT_SETTING_IP6_CONFIG_DHCP_SEND_HOSTNAME NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME
0029 #define NMQT_SETTING_IP6_CONFIG_NEVER_DEFAULT NM_SETTING_IP_CONFIG_NEVER_DEFAULT
0030 #define NMQT_SETTING_IP6_CONFIG_MAY_FAIL NM_SETTING_IP_CONFIG_MAY_FAIL
0031 #define NMQT_SETTING_IP6_CONFIG_DHCP_CLIENT_ID NM_SETTING_IP6_CONFIG_DHCP_CLIENT_ID
0032 #define NMQT_SETTING_IP6_CONFIG_IP6_PRIVACY NM_SETTING_IP6_CONFIG_IP6_PRIVACY
0033 #define NMQT_SETTING_IP6_CONFIG_METHOD_IGNORE NM_SETTING_IP6_CONFIG_METHOD_IGNORE
0034 #define NMQT_SETTING_IP6_CONFIG_METHOD_AUTO NM_SETTING_IP6_CONFIG_METHOD_AUTO
0035 #define NMQT_SETTING_IP6_CONFIG_METHOD_DHCP NM_SETTING_IP6_CONFIG_METHOD_DHCP
0036 #define NMQT_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL
0037 #define NMQT_SETTING_IP6_CONFIG_METHOD_MANUAL NM_SETTING_IP6_CONFIG_METHOD_MANUAL
0038 #define NMQT_SETTING_IP6_CONFIG_METHOD_SHARED NM_SETTING_IP6_CONFIG_METHOD_SHARED
0039 #if NM_CHECK_VERSION(1, 20, 0)
0040 #define NMQT_SETTING_IP6_CONFIG_METHOD_DISABLED NM_SETTING_IP6_CONFIG_METHOD_DISABLED
0041 #else
0042 #define NMQT_SETTING_IP6_CONFIG_METHOD_DISABLED "disabled"
0043 #endif
0044 #define NMQT_SETTING_IP6_CONFIG_DAD_TIMEOUT NM_SETTING_IP_CONFIG_DAD_TIMEOUT
0045 #define NMQT_SETTING_IP6_CONFIG_DHCP_TIMEOUT NM_SETTING_IP_CONFIG_DHCP_TIMEOUT
0046 #define NMQT_SETTING_IP6_CONFIG_DHCP_HOSTNAME NM_SETTING_IP_CONFIG_DHCP_HOSTNAME
0047 #define NMQT_SETTING_IP6_CONFIG_ADDRESS_GEN_MODE NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE
0048 #if NM_CHECK_VERSION(1, 12, 0)
0049 #define NMQT_SETTING_IP6_CONFIG_DHCP_DUID NM_SETTING_IP6_CONFIG_DHCP_DUID
0050 #else
0051 #define NMQT_SETTING_IP6_CONFIG_DHCP_DUID "dhcp-duid"
0052 #endif
0053 #define NMQT_SETTING_IP6_CONFIG_TOKEN NM_SETTING_IP6_CONFIG_TOKEN
0054 #define NMQT_SETTING_IP6_CONFIG_DNS_OPTIONS NM_SETTING_IP_CONFIG_DNS_OPTIONS
0055 #define NMQT_SETTING_IP6_CONFIG_ROUTE_DATA "route-data"
0056 #define NMQT_SETTING_IP6_CONFIG_ADDRESS_DATA "address-data"
0057 #if NM_CHECK_VERSION(1, 10, 0)
0058 #define NMQT_SETTING_IP6_CONFIG_ROUTE_TABLE NM_SETTING_IP_CONFIG_ROUTE_TABLE
0059 #else
0060 #define NMQT_SETTING_IP6_CONFIG_ROUTE_TABLE "route-table"
0061 #endif
0062 
0063 namespace NetworkManager
0064 {
0065 class Ipv6SettingPrivate;
0066 
0067 /**
0068  * Represents ipv6 setting
0069  */
0070 class NETWORKMANAGERQT_EXPORT Ipv6Setting : public Setting
0071 {
0072 public:
0073     typedef QSharedPointer<Ipv6Setting> Ptr;
0074     typedef QList<Ptr> List;
0075     enum ConfigMethod {
0076         Automatic,
0077         Dhcp,
0078         LinkLocal,
0079         Manual,
0080         Ignored,
0081         ConfigDisabled // FIXME KF6: fix enum naming (possibly move to enum class)
0082     };
0083     enum IPv6Privacy {
0084         Unknown = -1,
0085         Disabled,
0086         PreferPublic,
0087         PreferTemporary,
0088     };
0089     enum IPv6AddressGenMode {
0090         Eui64,
0091         StablePrivacy,
0092     };
0093 
0094     Ipv6Setting();
0095     explicit Ipv6Setting(const Ptr &other);
0096     ~Ipv6Setting() override;
0097 
0098     QString name() const override;
0099 
0100     void setMethod(ConfigMethod method);
0101     ConfigMethod method() const;
0102 
0103     void setDns(const QList<QHostAddress> &dns);
0104     QList<QHostAddress> dns() const;
0105 
0106     void setDnsSearch(const QStringList &domains);
0107     QStringList dnsSearch() const;
0108 
0109     void setAddresses(const QList<NetworkManager::IpAddress> ipv6addresses);
0110     QList<NetworkManager::IpAddress> addresses() const;
0111 
0112     void setRoutes(const QList<NetworkManager::IpRoute> ipv6routes);
0113     QList<NetworkManager::IpRoute> routes() const;
0114 
0115     void setRouteMetric(int metric);
0116     int routeMetric() const;
0117 
0118     void setIgnoreAutoRoutes(bool ignore);
0119     bool ignoreAutoRoutes() const;
0120 
0121     void setIgnoreAutoDns(bool ignore);
0122     bool ignoreAutoDns() const;
0123 
0124     void setNeverDefault(bool neverDefault);
0125     bool neverDefault() const;
0126 
0127     void setMayFail(bool mayFail);
0128     bool mayFail() const;
0129 
0130     void setPrivacy(IPv6Privacy privacy);
0131     IPv6Privacy privacy() const;
0132 
0133     void fromMap(const QVariantMap &setting) override;
0134 
0135     QVariantMap toMap() const override;
0136 
0137     void setDadTimeout(qint32 timeout);
0138     qint32 dadTimeout() const;
0139 
0140     void setAddressGenMode(IPv6AddressGenMode mode);
0141     IPv6AddressGenMode addressGenMode() const;
0142 
0143     void setDhcpTimeout(qint32 timeout);
0144     qint32 dhcpTimeout() const;
0145 
0146     void setDhcpHostname(const QString &hostname);
0147     QString dhcpHostname() const;
0148 
0149     void setDhcpDuid(const QString &duid);
0150     QString dhcpDuid() const;
0151 
0152     void setToken(const QString &token);
0153     QString token() const;
0154 
0155     void setDnsOptions(const QStringList &options);
0156     QStringList dnsOptions() const;
0157 
0158     void setAddressData(const NMVariantMapList &addressData);
0159     NMVariantMapList addressData() const;
0160 
0161     void setRouteData(const NMVariantMapList &routeData);
0162     NMVariantMapList routeData() const;
0163 
0164     void setRouteTable(quint32 routeTable);
0165     quint32 routeTable() const;
0166 
0167 protected:
0168     Ipv6SettingPrivate *const d_ptr;
0169 
0170 private:
0171     Q_DECLARE_PRIVATE(Ipv6Setting)
0172 };
0173 
0174 NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const Ipv6Setting &setting);
0175 
0176 }
0177 
0178 #endif // NETWORKMANAGERQT_IPV6_SETTING_H