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 | |
63 | namespace NetworkManager |
64 | { |
65 | class Ipv6SettingPrivate; |
66 | |
67 | /*! |
68 | * \class NetworkManager::Ipv6Setting |
69 | * \inheaderfile NetworkManagerQt/Ipv6Setting |
70 | * \inmodule NetworkManagerQt |
71 | * |
72 | * \brief Represents ipv6 setting. |
73 | */ |
74 | class NETWORKMANAGERQT_EXPORT Ipv6Setting : public Setting |
75 | { |
76 | public: |
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 | |
287 | protected: |
288 | Ipv6SettingPrivate *const d_ptr; |
289 | |
290 | private: |
291 | Q_DECLARE_PRIVATE(Ipv6Setting) |
292 | }; |
293 | |
294 | NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const Ipv6Setting &setting); |
295 | |
296 | } |
297 | |
298 | #endif // NETWORKMANAGERQT_IPV6_SETTING_H |
299 | |