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_IPV4_SETTING_H
8#define NETWORKMANAGERQT_IPV4_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_IP4_CONFIG_SETTING_NAME NM_SETTING_IP4_CONFIG_SETTING_NAME
18#define NMQT_SETTING_IP4_CONFIG_METHOD NM_SETTING_IP_CONFIG_METHOD
19#define NMQT_SETTING_IP4_CONFIG_DNS NM_SETTING_IP_CONFIG_DNS
20#define NMQT_SETTING_IP4_CONFIG_DNS_SEARCH NM_SETTING_IP_CONFIG_DNS_SEARCH
21#define NMQT_SETTING_IP4_CONFIG_ADDRESSES NM_SETTING_IP_CONFIG_ADDRESSES
22#define NMQT_SETTING_IP4_CONFIG_GATEWAY NM_SETTING_IP_CONFIG_GATEWAY
23#define NMQT_SETTING_IP4_CONFIG_ROUTES NM_SETTING_IP_CONFIG_ROUTES
24#define NMQT_SETTING_IP4_CONFIG_ROUTE_METRIC NM_SETTING_IP_CONFIG_ROUTE_METRIC
25#define NMQT_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES
26#define NMQT_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS
27#define NMQT_SETTING_IP4_CONFIG_DHCP_HOSTNAME NM_SETTING_IP_CONFIG_DHCP_HOSTNAME
28#define NMQT_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME
29#define NMQT_SETTING_IP4_CONFIG_NEVER_DEFAULT NM_SETTING_IP_CONFIG_NEVER_DEFAULT
30#define NMQT_SETTING_IP4_CONFIG_MAY_FAIL NM_SETTING_IP_CONFIG_MAY_FAIL
31#define NMQT_SETTING_IP4_CONFIG_DHCP_CLIENT_ID NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID
32#define NMQT_SETTING_IP4_CONFIG_METHOD_AUTO NM_SETTING_IP4_CONFIG_METHOD_AUTO
33#define NMQT_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL
34#define NMQT_SETTING_IP4_CONFIG_METHOD_MANUAL NM_SETTING_IP4_CONFIG_METHOD_MANUAL
35#define NMQT_SETTING_IP4_CONFIG_METHOD_SHARED NM_SETTING_IP4_CONFIG_METHOD_SHARED
36#define NMQT_SETTING_IP4_CONFIG_METHOD_DISABLED NM_SETTING_IP4_CONFIG_METHOD_DISABLED
37#define NMQT_SETTING_IP4_CONFIG_DAD_TIMEOUT NM_SETTING_IP_CONFIG_DAD_TIMEOUT
38#define NMQT_SETTING_IP4_CONFIG_DHCP_FQDN NM_SETTING_IP4_CONFIG_DHCP_FQDN
39#define NMQT_SETTING_IP4_CONFIG_DNS_OPTIONS NM_SETTING_IP_CONFIG_DNS_OPTIONS
40#define NMQT_SETTING_IP4_CONFIG_DNS_PRIORITY NM_SETTING_IP_CONFIG_DNS_PRIORITY
41#define NMQT_SETTING_IP4_CONFIG_GATEWAY NM_SETTING_IP_CONFIG_GATEWAY
42#define NMQT_SETTING_IP4_CONFIG_ROUTE_DATA "route-data"
43#define NMQT_SETTING_IP4_CONFIG_ADDRESS_DATA "address-data"
44
45namespace NetworkManager
46{
47class Ipv4SettingPrivate;
48
49/*!
50 * \class NetworkManager::Ipv4Setting
51 * \inheaderfile NetworkManagerQt/Ipv4Setting
52 * \inmodule NetworkManagerQt
53 *
54 * \brief Represents ipv4 setting.
55 */
56class NETWORKMANAGERQT_EXPORT Ipv4Setting : public Setting
57{
58public:
59 /*!
60 * \typedef NetworkManager::Ipv4Setting::Ptr
61 */
62 typedef QSharedPointer<Ipv4Setting> Ptr;
63 /*!
64 * \typedef NetworkManager::Ipv4Setting::List
65 */
66 typedef QList<Ptr> List;
67 /*!
68 *
69 * \value Automatic
70 * \value LinkLocal
71 * \value Manual
72 * \value Shared
73 * \value Disabled
74 */
75 enum ConfigMethod {
76 Automatic,
77 LinkLocal,
78 Manual,
79 Shared,
80 Disabled,
81 };
82
83 /*!
84 */
85 Ipv4Setting();
86 /*!
87 */
88 explicit Ipv4Setting(const Ptr &other);
89 ~Ipv4Setting() override;
90
91 QString name() const override;
92
93 /*!
94 */
95 void setMethod(ConfigMethod method);
96 /*!
97 */
98 ConfigMethod method() const;
99
100 /*!
101 */
102 void setDns(const QList<QHostAddress> &dns);
103 /*!
104 */
105 QList<QHostAddress> dns() const;
106
107 /*!
108 */
109 void setDnsSearch(const QStringList &domains);
110 /*!
111 */
112 QStringList dnsSearch() const;
113
114 /*!
115 */
116 void setAddresses(const QList<NetworkManager::IpAddress> &ipv4addresses);
117 /*!
118 */
119 QList<NetworkManager::IpAddress> addresses() const;
120
121 /*!
122 */
123 void setRoutes(const QList<NetworkManager::IpRoute> &ipv4routes);
124 /*!
125 */
126 QList<NetworkManager::IpRoute> routes() const;
127
128 /*!
129 */
130 void setRouteMetric(int metric);
131 /*!
132 */
133 int routeMetric() const;
134
135 /*!
136 */
137 void setIgnoreAutoRoutes(bool ignore);
138 /*!
139 */
140 bool ignoreAutoRoutes() const;
141
142 /*!
143 */
144 void setIgnoreAutoDns(bool ignore);
145 /*!
146 */
147 bool ignoreAutoDns() const;
148
149 /*!
150 */
151 void setDhcpClientId(const QString &id);
152 /*!
153 */
154 QString dhcpClientId() const;
155
156 /*!
157 */
158 void setDhcpSendHostname(bool send);
159 /*!
160 */
161 bool dhcpSendHostname() const;
162
163 /*!
164 */
165 void setDhcpHostname(const QString &hostname);
166 /*!
167 */
168 QString dhcpHostname() const;
169
170 /*!
171 */
172 void setNeverDefault(bool neverDefault);
173 /*!
174 */
175 bool neverDefault() const;
176
177 /*!
178 */
179 void setMayFail(bool mayFail);
180 /*!
181 */
182 bool mayFail() const;
183
184 /*!
185 */
186 void setDadTimeout(qint32 timeout);
187 /*!
188 */
189 qint32 dadTimeout() const;
190
191 /*!
192 */
193 void setDhcpFqdn(const QString &fqdn);
194 /*!
195 */
196 QString dhcpFqdn() const;
197
198 /*!
199 */
200 void setDnsOptions(const QStringList &options);
201 /*!
202 */
203 QStringList dnsOptions() const;
204
205 /*!
206 */
207 void setDnsPriority(qint32 priority);
208 /*!
209 */
210 qint32 dnsPriority() const;
211
212 /*!
213 */
214 void setGateway(const QString &gateway);
215 /*!
216 */
217 QString gateway() const;
218
219 /*!
220 */
221 void setAddressData(const NMVariantMapList &addressData);
222 /*!
223 */
224 NMVariantMapList addressData() const;
225
226 /*!
227 */
228 void setRouteData(const NMVariantMapList &routeData);
229 /*!
230 */
231 NMVariantMapList routeData() const;
232
233 void fromMap(const QVariantMap &setting) override;
234
235 QVariantMap toMap() const override;
236
237protected:
238 Ipv4SettingPrivate *d_ptr;
239
240private:
241 Q_DECLARE_PRIVATE(Ipv4Setting)
242};
243
244NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const Ipv4Setting &setting);
245
246}
247
248#endif // NETWORKMANAGERQT_IPV4_SETTING_H
249

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