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