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_IPV4_SETTING_H
0008 #define NETWORKMANAGERQT_IPV4_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_IP4_CONFIG_SETTING_NAME NM_SETTING_IP4_CONFIG_SETTING_NAME
0018 #define NMQT_SETTING_IP4_CONFIG_METHOD NM_SETTING_IP_CONFIG_METHOD
0019 #define NMQT_SETTING_IP4_CONFIG_DNS NM_SETTING_IP_CONFIG_DNS
0020 #define NMQT_SETTING_IP4_CONFIG_DNS_SEARCH NM_SETTING_IP_CONFIG_DNS_SEARCH
0021 #define NMQT_SETTING_IP4_CONFIG_ADDRESSES NM_SETTING_IP_CONFIG_ADDRESSES
0022 #define NMQT_SETTING_IP4_CONFIG_GATEWAY NM_SETTING_IP_CONFIG_GATEWAY
0023 #define NMQT_SETTING_IP4_CONFIG_ROUTES NM_SETTING_IP_CONFIG_ROUTES
0024 #define NMQT_SETTING_IP4_CONFIG_ROUTE_METRIC NM_SETTING_IP_CONFIG_ROUTE_METRIC
0025 #define NMQT_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES
0026 #define NMQT_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS
0027 #define NMQT_SETTING_IP4_CONFIG_DHCP_HOSTNAME NM_SETTING_IP_CONFIG_DHCP_HOSTNAME
0028 #define NMQT_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME
0029 #define NMQT_SETTING_IP4_CONFIG_NEVER_DEFAULT NM_SETTING_IP_CONFIG_NEVER_DEFAULT
0030 #define NMQT_SETTING_IP4_CONFIG_MAY_FAIL NM_SETTING_IP_CONFIG_MAY_FAIL
0031 #define NMQT_SETTING_IP4_CONFIG_DHCP_CLIENT_ID NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID
0032 #define NMQT_SETTING_IP4_CONFIG_METHOD_AUTO NM_SETTING_IP4_CONFIG_METHOD_AUTO
0033 #define NMQT_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL
0034 #define NMQT_SETTING_IP4_CONFIG_METHOD_MANUAL NM_SETTING_IP4_CONFIG_METHOD_MANUAL
0035 #define NMQT_SETTING_IP4_CONFIG_METHOD_SHARED NM_SETTING_IP4_CONFIG_METHOD_SHARED
0036 #define NMQT_SETTING_IP4_CONFIG_METHOD_DISABLED NM_SETTING_IP4_CONFIG_METHOD_DISABLED
0037 #define NMQT_SETTING_IP4_CONFIG_DAD_TIMEOUT NM_SETTING_IP_CONFIG_DAD_TIMEOUT
0038 #define NMQT_SETTING_IP4_CONFIG_DHCP_FQDN NM_SETTING_IP4_CONFIG_DHCP_FQDN
0039 #define NMQT_SETTING_IP4_CONFIG_DNS_OPTIONS NM_SETTING_IP_CONFIG_DNS_OPTIONS
0040 #define NMQT_SETTING_IP4_CONFIG_DNS_PRIORITY NM_SETTING_IP_CONFIG_DNS_PRIORITY
0041 #define NMQT_SETTING_IP4_CONFIG_GATEWAY NM_SETTING_IP_CONFIG_GATEWAY
0042 #define NMQT_SETTING_IP4_CONFIG_ROUTE_DATA "route-data"
0043 #define NMQT_SETTING_IP4_CONFIG_ADDRESS_DATA "address-data"
0044 
0045 namespace NetworkManager
0046 {
0047 class Ipv4SettingPrivate;
0048 
0049 /**
0050  * Represents ipv4 setting
0051  */
0052 class NETWORKMANAGERQT_EXPORT Ipv4Setting : public Setting
0053 {
0054 public:
0055     typedef QSharedPointer<Ipv4Setting> Ptr;
0056     typedef QList<Ptr> List;
0057     enum ConfigMethod {
0058         Automatic,
0059         LinkLocal,
0060         Manual,
0061         Shared,
0062         Disabled,
0063     };
0064 
0065     Ipv4Setting();
0066     explicit Ipv4Setting(const Ptr &other);
0067     ~Ipv4Setting() override;
0068 
0069     QString name() const override;
0070 
0071     void setMethod(ConfigMethod method);
0072     ConfigMethod method() const;
0073 
0074     void setDns(const QList<QHostAddress> &dns);
0075     QList<QHostAddress> dns() const;
0076 
0077     void setDnsSearch(const QStringList &domains);
0078     QStringList dnsSearch() const;
0079 
0080     void setAddresses(const QList<NetworkManager::IpAddress> &ipv4addresses);
0081     QList<NetworkManager::IpAddress> addresses() const;
0082 
0083     void setRoutes(const QList<NetworkManager::IpRoute> &ipv4routes);
0084     QList<NetworkManager::IpRoute> routes() const;
0085 
0086     void setRouteMetric(int metric);
0087     int routeMetric() const;
0088 
0089     void setIgnoreAutoRoutes(bool ignore);
0090     bool ignoreAutoRoutes() const;
0091 
0092     void setIgnoreAutoDns(bool ignore);
0093     bool ignoreAutoDns() const;
0094 
0095     void setDhcpClientId(const QString &id);
0096     QString dhcpClientId() const;
0097 
0098     void setDhcpSendHostname(bool send);
0099     bool dhcpSendHostname() const;
0100 
0101     void setDhcpHostname(const QString &hostname);
0102     QString dhcpHostname() const;
0103 
0104     void setNeverDefault(bool neverDefault);
0105     bool neverDefault() const;
0106 
0107     void setMayFail(bool mayFail);
0108     bool mayFail() const;
0109 
0110     void setDadTimeout(qint32 timeout);
0111     qint32 dadTimeout() const;
0112 
0113     void setDhcpFqdn(const QString &fqdn);
0114     QString dhcpFqdn() const;
0115 
0116     void setDnsOptions(const QStringList &options);
0117     QStringList dnsOptions() const;
0118 
0119     void setDnsPriority(qint32 priority);
0120     qint32 dnsPriority() const;
0121 
0122     void setGateway(const QString &gateway);
0123     QString gateway() const;
0124 
0125     void setAddressData(const NMVariantMapList &addressData);
0126     NMVariantMapList addressData() const;
0127 
0128     void setRouteData(const NMVariantMapList &routeData);
0129     NMVariantMapList routeData() const;
0130 
0131     void fromMap(const QVariantMap &setting) override;
0132 
0133     QVariantMap toMap() const override;
0134 
0135 protected:
0136     Ipv4SettingPrivate *d_ptr;
0137 
0138 private:
0139     Q_DECLARE_PRIVATE(Ipv4Setting)
0140 };
0141 
0142 NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const Ipv4Setting &setting);
0143 
0144 }
0145 
0146 #endif // NETWORKMANAGERQT_IPV4_SETTING_H