1/*
2 SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#ifndef NETWORKMANAGERQT_IPV6_SETTING_H
8#define NETWORKMANAGERQT_IPV6_SETTING_H
9
10#include "ipconfig.h"
11#include "setting.h"
12#include <networkmanagerqt/networkmanagerqt_export.h>
13
14#include <QHostAddress>
15#include <QStringList>
16
17#define NMQT_SETTING_IP6_CONFIG_SETTING_NAME NM_SETTING_IP6_CONFIG_SETTING_NAME
18#define NMQT_SETTING_IP6_CONFIG_METHOD NM_SETTING_IP_CONFIG_METHOD
19#define NMQT_SETTING_IP6_CONFIG_DNS NM_SETTING_IP_CONFIG_DNS
20#define NMQT_SETTING_IP6_CONFIG_DNS_SEARCH NM_SETTING_IP_CONFIG_DNS_SEARCH
21#define NMQT_SETTING_IP6_CONFIG_ADDRESSES NM_SETTING_IP_CONFIG_ADDRESSES
22#define NMQT_SETTING_IP6_CONFIG_GATEWAY NM_SETTING_IP_CONFIG_GATEWAY
23#define NMQT_SETTING_IP6_CONFIG_ROUTES NM_SETTING_IP_CONFIG_ROUTES
24#define NMQT_SETTING_IP6_CONFIG_ROUTE_METRIC NM_SETTING_IP_CONFIG_ROUTE_METRIC
25#define NMQT_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES
26#define NMQT_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS
27#define NMQT_SETTING_IP6_CONFIG_DHCP_HOSTNAME NM_SETTING_IP_CONFIG_DHCP_HOSTNAME
28#define NMQT_SETTING_IP6_CONFIG_DHCP_SEND_HOSTNAME NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME
29#define NMQT_SETTING_IP6_CONFIG_NEVER_DEFAULT NM_SETTING_IP_CONFIG_NEVER_DEFAULT
30#define NMQT_SETTING_IP6_CONFIG_MAY_FAIL NM_SETTING_IP_CONFIG_MAY_FAIL
31#define NMQT_SETTING_IP6_CONFIG_DHCP_CLIENT_ID NM_SETTING_IP6_CONFIG_DHCP_CLIENT_ID
32#define NMQT_SETTING_IP6_CONFIG_IP6_PRIVACY NM_SETTING_IP6_CONFIG_IP6_PRIVACY
33#define NMQT_SETTING_IP6_CONFIG_METHOD_IGNORE NM_SETTING_IP6_CONFIG_METHOD_IGNORE
34#define NMQT_SETTING_IP6_CONFIG_METHOD_AUTO NM_SETTING_IP6_CONFIG_METHOD_AUTO
35#define NMQT_SETTING_IP6_CONFIG_METHOD_DHCP NM_SETTING_IP6_CONFIG_METHOD_DHCP
36#define NMQT_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL
37#define NMQT_SETTING_IP6_CONFIG_METHOD_MANUAL NM_SETTING_IP6_CONFIG_METHOD_MANUAL
38#define NMQT_SETTING_IP6_CONFIG_METHOD_SHARED NM_SETTING_IP6_CONFIG_METHOD_SHARED
39#if NM_CHECK_VERSION(1, 20, 0)
40#define NMQT_SETTING_IP6_CONFIG_METHOD_DISABLED NM_SETTING_IP6_CONFIG_METHOD_DISABLED
41#else
42#define NMQT_SETTING_IP6_CONFIG_METHOD_DISABLED "disabled"
43#endif
44#define NMQT_SETTING_IP6_CONFIG_DAD_TIMEOUT NM_SETTING_IP_CONFIG_DAD_TIMEOUT
45#define NMQT_SETTING_IP6_CONFIG_DHCP_TIMEOUT NM_SETTING_IP_CONFIG_DHCP_TIMEOUT
46#define NMQT_SETTING_IP6_CONFIG_DHCP_HOSTNAME NM_SETTING_IP_CONFIG_DHCP_HOSTNAME
47#define NMQT_SETTING_IP6_CONFIG_ADDRESS_GEN_MODE NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE
48#if NM_CHECK_VERSION(1, 12, 0)
49#define NMQT_SETTING_IP6_CONFIG_DHCP_DUID NM_SETTING_IP6_CONFIG_DHCP_DUID
50#else
51#define NMQT_SETTING_IP6_CONFIG_DHCP_DUID "dhcp-duid"
52#endif
53#define NMQT_SETTING_IP6_CONFIG_TOKEN NM_SETTING_IP6_CONFIG_TOKEN
54#define NMQT_SETTING_IP6_CONFIG_DNS_OPTIONS NM_SETTING_IP_CONFIG_DNS_OPTIONS
55#define NMQT_SETTING_IP6_CONFIG_ROUTE_DATA "route-data"
56#define NMQT_SETTING_IP6_CONFIG_ADDRESS_DATA "address-data"
57#if NM_CHECK_VERSION(1, 10, 0)
58#define NMQT_SETTING_IP6_CONFIG_ROUTE_TABLE NM_SETTING_IP_CONFIG_ROUTE_TABLE
59#else
60#define NMQT_SETTING_IP6_CONFIG_ROUTE_TABLE "route-table"
61#endif
62
63namespace NetworkManager
64{
65class Ipv6SettingPrivate;
66
67/*!
68 * \class NetworkManager::Ipv6Setting
69 * \inheaderfile NetworkManagerQt/Ipv6Setting
70 * \inmodule NetworkManagerQt
71 *
72 * \brief Represents ipv6 setting.
73 */
74class NETWORKMANAGERQT_EXPORT Ipv6Setting : public Setting
75{
76public:
77 /*!
78 * \typedef NetworkManager::Ipv6Setting::Ptr
79 */
80 typedef QSharedPointer<Ipv6Setting> Ptr;
81 /*!
82 * \typedef NetworkManager::Ipv6Setting::List
83 */
84 typedef QList<Ptr> List;
85 /*!
86 *
87 * \value Automatic
88 * \value Dhcp
89 * \value LinkLocal
90 * \value Manual
91 * \value Ignored
92 * \value ConfigDisabled
93 * FIXME KF6: fix enum naming (possibly move to enum class)
94 */
95 enum ConfigMethod {
96 Automatic,
97 Dhcp,
98 LinkLocal,
99 Manual,
100 Ignored,
101 ConfigDisabled
102 };
103 /*!
104 *
105 * \value Unknown
106 * \value Disabled
107 * \value PreferPublic
108 * \value PreferTemporary
109 */
110 enum IPv6Privacy {
111 Unknown = -1,
112 Disabled,
113 PreferPublic,
114 PreferTemporary,
115 };
116 /*!
117 *
118 * \value Eui64
119 * \value StablePrivacy
120 */
121 enum IPv6AddressGenMode {
122 Eui64,
123 StablePrivacy,
124 };
125
126 /*!
127 */
128 Ipv6Setting();
129 /*!
130 */
131 explicit Ipv6Setting(const Ptr &other);
132 ~Ipv6Setting() override;
133
134 QString name() const override;
135
136 /*!
137 */
138 void setMethod(ConfigMethod method);
139 /*!
140 */
141 ConfigMethod method() const;
142
143 /*!
144 */
145 void setDns(const QList<QHostAddress> &dns);
146 /*!
147 */
148 QList<QHostAddress> dns() const;
149
150 /*!
151 */
152 void setDnsSearch(const QStringList &domains);
153 /*!
154 */
155 QStringList dnsSearch() const;
156
157 /*!
158 */
159 void setAddresses(const QList<NetworkManager::IpAddress> ipv6addresses);
160 /*!
161 */
162 QList<NetworkManager::IpAddress> addresses() const;
163
164 /*!
165 */
166 void setRoutes(const QList<NetworkManager::IpRoute> ipv6routes);
167 /*!
168 */
169 QList<NetworkManager::IpRoute> routes() const;
170
171 /*!
172 */
173 void setRouteMetric(int metric);
174 /*!
175 */
176 int routeMetric() const;
177
178 /*!
179 */
180 void setIgnoreAutoRoutes(bool ignore);
181 /*!
182 */
183 bool ignoreAutoRoutes() const;
184
185 /*!
186 */
187 void setIgnoreAutoDns(bool ignore);
188 /*!
189 */
190 bool ignoreAutoDns() const;
191
192 /*!
193 */
194 void setNeverDefault(bool neverDefault);
195 /*!
196 */
197 bool neverDefault() const;
198
199 /*!
200 */
201 void setMayFail(bool mayFail);
202 /*!
203 */
204 bool mayFail() const;
205
206 /*!
207 */
208 void setPrivacy(IPv6Privacy privacy);
209 /*!
210 */
211 IPv6Privacy privacy() const;
212
213 void fromMap(const QVariantMap &setting) override;
214
215 QVariantMap toMap() const override;
216
217 /*!
218 */
219 void setDadTimeout(qint32 timeout);
220 /*!
221 */
222 qint32 dadTimeout() const;
223
224 /*!
225 */
226 void setAddressGenMode(IPv6AddressGenMode mode);
227 /*!
228 */
229 IPv6AddressGenMode addressGenMode() const;
230
231 /*!
232 */
233 void setDhcpTimeout(qint32 timeout);
234 /*!
235 */
236 qint32 dhcpTimeout() const;
237
238 /*!
239 */
240 void setDhcpHostname(const QString &hostname);
241 /*!
242 */
243 QString dhcpHostname() const;
244
245 /*!
246 */
247 void setDhcpDuid(const QString &duid);
248 /*!
249 */
250 QString dhcpDuid() const;
251
252 /*!
253 */
254 void setToken(const QString &token);
255 /*!
256 */
257 QString token() const;
258
259 /*!
260 */
261 void setDnsOptions(const QStringList &options);
262 /*!
263 */
264 QStringList dnsOptions() const;
265
266 /*!
267 */
268 void setAddressData(const NMVariantMapList &addressData);
269 /*!
270 */
271 NMVariantMapList addressData() const;
272
273 /*!
274 */
275 void setRouteData(const NMVariantMapList &routeData);
276 /*!
277 */
278 NMVariantMapList routeData() const;
279
280 /*!
281 */
282 void setRouteTable(quint32 routeTable);
283 /*!
284 */
285 quint32 routeTable() const;
286
287protected:
288 Ipv6SettingPrivate *const d_ptr;
289
290private:
291 Q_DECLARE_PRIVATE(Ipv6Setting)
292};
293
294NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const Ipv6Setting &setting);
295
296}
297
298#endif // NETWORKMANAGERQT_IPV6_SETTING_H
299

source code of networkmanager-qt/src/settings/ipv6setting.h