File indexing completed on 2024-04-14 03:57:34
0001 /* 0002 SPDX-FileCopyrightText: 2018 Pranav Gade <pranavgade20@gmail.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_IPTUNNEL_SETTING_H 0008 #define NETWORKMANAGERQT_IPTUNNEL_SETTING_H 0009 0010 #include "setting.h" 0011 #include <networkmanagerqt/networkmanagerqt_export.h> 0012 0013 namespace NetworkManager 0014 { 0015 class IpTunnelSettingPrivate; 0016 0017 /** 0018 * Represents IpTunnel setting 0019 */ 0020 class NETWORKMANAGERQT_EXPORT IpTunnelSetting : public Setting 0021 { 0022 public: 0023 typedef QSharedPointer<IpTunnelSetting> Ptr; 0024 typedef QList<Ptr> List; 0025 enum Mode { 0026 Unknown = NM_IP_TUNNEL_MODE_UNKNOWN, 0027 Ipip = NM_IP_TUNNEL_MODE_IPIP, 0028 Gre = NM_IP_TUNNEL_MODE_GRE, 0029 Sit = NM_IP_TUNNEL_MODE_SIT, 0030 Isatap = NM_IP_TUNNEL_MODE_ISATAP, 0031 Vti = NM_IP_TUNNEL_MODE_VTI, 0032 Ip6ip6 = NM_IP_TUNNEL_MODE_IP6IP6, 0033 Ipip6 = NM_IP_TUNNEL_MODE_IPIP6, 0034 Ip6gre = NM_IP_TUNNEL_MODE_IP6GRE, 0035 Vti6 = NM_IP_TUNNEL_MODE_VTI, 0036 }; 0037 0038 enum Flag { 0039 None = 0x0, 0040 Ip6IgnEncapLimit = 0x1, 0041 Ip6UseOrigTclass = 0x2, 0042 Ip6UseOrigFlowlabel = 0x4, 0043 Ip6Mip6Dev = 0x8, 0044 Ip6RcvDscpCopy = 0x10, 0045 Ip6UseOrigFwmark = 0x20, 0046 }; 0047 Q_DECLARE_FLAGS(Flags, Flag) 0048 0049 IpTunnelSetting(); 0050 explicit IpTunnelSetting(const Ptr &other); 0051 ~IpTunnelSetting() override; 0052 0053 QString name() const override; 0054 0055 void setMode(Mode mode); 0056 Mode mode() const; 0057 0058 void setPathMtuDiscovery(bool discovery); 0059 bool pathMtuDiscovery() const; 0060 0061 void setEncapsulationLimit(quint32 limit); 0062 quint32 encapsulationLimit() const; 0063 0064 void setFlags(Flags flags); 0065 Flags flags() const; 0066 0067 void setFlowLabel(quint32 label); 0068 quint32 flowLabel() const; 0069 0070 void setMtu(quint32 mtu); 0071 quint32 mtu() const; 0072 0073 void setTos(quint32 tos); 0074 quint32 tos() const; 0075 0076 void setTtl(quint32 ttl); 0077 quint32 ttl() const; 0078 0079 void setInputKey(const QString &key); 0080 QString inputKey() const; 0081 0082 void setLocal(const QString &local); 0083 QString local() const; 0084 0085 void setParent(const QString &parent); 0086 QString parent() const; 0087 0088 void setOutputKey(const QString &key); 0089 QString outputKey() const; 0090 0091 void setRemote(const QString &remote); 0092 QString remote() const; 0093 0094 void fromMap(const QVariantMap &setting) override; 0095 0096 QVariantMap toMap() const override; 0097 0098 protected: 0099 IpTunnelSettingPrivate *d_ptr; 0100 0101 private: 0102 Q_DECLARE_PRIVATE(IpTunnelSetting) 0103 }; 0104 Q_DECLARE_OPERATORS_FOR_FLAGS(IpTunnelSetting::Flags) 0105 0106 NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const IpTunnelSetting &setting); 0107 0108 } 0109 0110 #endif // NETWORKMANAGERQT_IP_TUNNEL_SETTING_H