File indexing completed on 2024-04-21 04:00:02

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_DCBSETTING_H
0008 #define NETWORKMANAGERQT_DCBSETTING_H
0009 
0010 #include "setting.h"
0011 #include <networkmanagerqt/networkmanagerqt_export.h>
0012 
0013 #include <QString>
0014 
0015 namespace NetworkManager
0016 {
0017 class DcbSettingPrivate;
0018 
0019 /**
0020  * Represents Dcb setting
0021  */
0022 class NETWORKMANAGERQT_EXPORT DcbSetting : public Setting
0023 {
0024 public:
0025     typedef QSharedPointer<DcbSetting> Ptr;
0026     typedef QList<Ptr> List;
0027 
0028     enum DcbFlagType {
0029         None = 0,
0030         Enable = 0x01,
0031         Advertise = 0x02,
0032         Willing = 0x04,
0033     };
0034     Q_DECLARE_FLAGS(DcbFlags, DcbFlagType)
0035 
0036     DcbSetting();
0037     explicit DcbSetting(const Ptr &other);
0038     ~DcbSetting() override;
0039 
0040     QString name() const override;
0041 
0042     void setAppFcoeMode(const QString &mode);
0043     QString appFcoeMode() const;
0044 
0045     void setAppFcoePriority(qint32 priority);
0046     qint32 appFcoePriority() const;
0047 
0048     void setAppFipPriority(qint32 priority);
0049     qint32 appFipPriority() const;
0050 
0051     void setAppIscsiPriority(qint32 priority);
0052     qint32 appIscsiPriority() const;
0053 
0054     void setAppFcoeFlags(DcbFlags flags);
0055     DcbFlags appFcoeFlags() const;
0056 
0057     void setAppFipFlags(DcbFlags flags);
0058     DcbFlags appFipFlags() const;
0059 
0060     void setAppIscsiFlags(DcbFlags flags);
0061     DcbFlags appIscsiFlags() const;
0062 
0063     void setPriorityGroupFlags(DcbFlags flags);
0064     DcbFlags priorityGroupFlags() const;
0065 
0066     void setPriorityFlowControlFlags(DcbFlags flags);
0067     DcbFlags priorityFlowControlFlags() const;
0068 
0069     void setPriorityFlowControl(quint32 userPriority, bool enabled);
0070     bool priorityFlowControl(quint32 userPriority) const;
0071     void setPriorityFlowControl(const UIntList &list);
0072     UIntList priorityFlowControl() const;
0073 
0074     void setPriorityBandwidth(quint32 userPriority, quint32 bandwidthPercent);
0075     quint32 priorityBandwidth(quint32 userPriority) const;
0076     void setPriorityBandwidth(const UIntList &list);
0077     UIntList priorityBandwidth() const;
0078 
0079     void setPriorityGroupBandwidth(quint32 groupId, quint32 bandwidthPercent);
0080     quint32 priorityGroupBandwidth(quint32 groupId) const;
0081     void setPriorityGroupBandwidth(const UIntList &list);
0082     UIntList priorityGroupBandwidth() const;
0083 
0084     void setPriorityGroupId(quint32 userPriority, quint32 groupId);
0085     quint32 priorityGroupId(quint32 userPriority) const;
0086     void setPriorityGroupId(const UIntList &list);
0087     UIntList priorityGroupId() const;
0088 
0089     void setPriorityStrictBandwidth(quint32 userPriority, bool strict);
0090     bool priorityStrictBandwidth(quint32 userPriority) const;
0091     void setPriorityStrictBandwidth(const UIntList &list);
0092     UIntList priorityStrictBandwidth() const;
0093 
0094     void setPriorityTrafficClass(quint32 userPriority, quint32 trafficClass);
0095     quint32 priorityTrafficClass(quint32 userPriority) const;
0096     void setPriorityTrafficClass(const UIntList &list);
0097     UIntList priorityTrafficClass() const;
0098 
0099     void fromMap(const QVariantMap &setting) override;
0100 
0101     QVariantMap toMap() const override;
0102 
0103 protected:
0104     DcbSettingPrivate *d_ptr;
0105 
0106 private:
0107     Q_DECLARE_PRIVATE(DcbSetting)
0108 };
0109 Q_DECLARE_OPERATORS_FOR_FLAGS(DcbSetting::DcbFlags)
0110 
0111 NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const DcbSetting &setting);
0112 
0113 }
0114 
0115 #endif // NETWORKMANAGERQT_DCBSETTING_H