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