| 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
| 2 | /* |
| 3 | * Copyright (C) 2013 Red Hat, Inc. |
| 4 | */ |
| 5 | |
| 6 | #ifndef __NM_SETTING_DCB_H__ |
| 7 | #define __NM_SETTING_DCB_H__ |
| 8 | |
| 9 | #if !defined(__NETWORKMANAGER_H_INSIDE__) && !defined(NETWORKMANAGER_COMPILATION) |
| 10 | #error "Only <NetworkManager.h> can be included directly." |
| 11 | #endif |
| 12 | |
| 13 | #include "nm-setting.h" |
| 14 | |
| 15 | G_BEGIN_DECLS |
| 16 | |
| 17 | #define NM_TYPE_SETTING_DCB (nm_setting_dcb_get_type()) |
| 18 | #define NM_SETTING_DCB(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTING_DCB, NMSettingDcb)) |
| 19 | #define NM_SETTING_DCB_CLASS(klass) \ |
| 20 | (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_SETTING_DCB, NMSettingDcbClass)) |
| 21 | #define NM_IS_SETTING_DCB(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_SETTING_DCB)) |
| 22 | #define NM_IS_SETTING_DCB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_SETTING_DCB)) |
| 23 | #define NM_SETTING_DCB_GET_CLASS(obj) \ |
| 24 | (G_TYPE_INSTANCE_GET_CLASS((obj), NM_TYPE_SETTING_DCB, NMSettingDcbClass)) |
| 25 | |
| 26 | #define NM_SETTING_DCB_SETTING_NAME "dcb" |
| 27 | |
| 28 | /** |
| 29 | * NMSettingDcbFlags: |
| 30 | * @NM_SETTING_DCB_FLAG_NONE: no flag |
| 31 | * @NM_SETTING_DCB_FLAG_ENABLE: the feature is enabled |
| 32 | * @NM_SETTING_DCB_FLAG_ADVERTISE: the feature is advertised |
| 33 | * @NM_SETTING_DCB_FLAG_WILLING: the feature is willing to change based on |
| 34 | * peer configuration advertisements |
| 35 | * |
| 36 | * DCB feature flags. |
| 37 | **/ |
| 38 | typedef enum { /*< flags >*/ |
| 39 | NM_SETTING_DCB_FLAG_NONE = 0x00000000, |
| 40 | NM_SETTING_DCB_FLAG_ENABLE = 0x00000001, |
| 41 | NM_SETTING_DCB_FLAG_ADVERTISE = 0x00000002, |
| 42 | NM_SETTING_DCB_FLAG_WILLING = 0x00000004 |
| 43 | } NMSettingDcbFlags; |
| 44 | |
| 45 | /** |
| 46 | * NM_SETTING_DCB_FCOE_MODE_FABRIC: |
| 47 | * |
| 48 | * Indicates that the FCoE controller should use "fabric" mode (default) |
| 49 | */ |
| 50 | #define NM_SETTING_DCB_FCOE_MODE_FABRIC "fabric" |
| 51 | |
| 52 | /** |
| 53 | * NM_SETTING_DCB_FCOE_MODE_VN2VN: |
| 54 | * |
| 55 | * Indicates that the FCoE controller should use "VN2VN" mode. |
| 56 | */ |
| 57 | #define NM_SETTING_DCB_FCOE_MODE_VN2VN "vn2vn" |
| 58 | |
| 59 | /* Properties */ |
| 60 | #define NM_SETTING_DCB_APP_FCOE_FLAGS "app-fcoe-flags" |
| 61 | #define NM_SETTING_DCB_APP_FCOE_PRIORITY "app-fcoe-priority" |
| 62 | #define NM_SETTING_DCB_APP_FCOE_MODE "app-fcoe-mode" |
| 63 | |
| 64 | #define NM_SETTING_DCB_APP_ISCSI_FLAGS "app-iscsi-flags" |
| 65 | #define NM_SETTING_DCB_APP_ISCSI_PRIORITY "app-iscsi-priority" |
| 66 | |
| 67 | #define NM_SETTING_DCB_APP_FIP_FLAGS "app-fip-flags" |
| 68 | #define NM_SETTING_DCB_APP_FIP_PRIORITY "app-fip-priority" |
| 69 | |
| 70 | #define NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS "priority-flow-control-flags" |
| 71 | #define NM_SETTING_DCB_PRIORITY_FLOW_CONTROL "priority-flow-control" |
| 72 | |
| 73 | #define NM_SETTING_DCB_PRIORITY_GROUP_FLAGS "priority-group-flags" |
| 74 | #define NM_SETTING_DCB_PRIORITY_GROUP_ID "priority-group-id" |
| 75 | #define NM_SETTING_DCB_PRIORITY_GROUP_BANDWIDTH "priority-group-bandwidth" |
| 76 | #define NM_SETTING_DCB_PRIORITY_BANDWIDTH "priority-bandwidth" |
| 77 | #define NM_SETTING_DCB_PRIORITY_STRICT_BANDWIDTH "priority-strict-bandwidth" |
| 78 | #define NM_SETTING_DCB_PRIORITY_TRAFFIC_CLASS "priority-traffic-class" |
| 79 | |
| 80 | typedef struct _NMSettingDcbClass NMSettingDcbClass; |
| 81 | |
| 82 | GType nm_setting_dcb_get_type(void); |
| 83 | |
| 84 | NMSetting *nm_setting_dcb_new(void); |
| 85 | |
| 86 | NMSettingDcbFlags nm_setting_dcb_get_app_fcoe_flags(NMSettingDcb *setting); |
| 87 | int nm_setting_dcb_get_app_fcoe_priority(NMSettingDcb *setting); |
| 88 | const char *nm_setting_dcb_get_app_fcoe_mode(NMSettingDcb *setting); |
| 89 | |
| 90 | NMSettingDcbFlags nm_setting_dcb_get_app_iscsi_flags(NMSettingDcb *setting); |
| 91 | int nm_setting_dcb_get_app_iscsi_priority(NMSettingDcb *setting); |
| 92 | |
| 93 | NMSettingDcbFlags nm_setting_dcb_get_app_fip_flags(NMSettingDcb *setting); |
| 94 | int nm_setting_dcb_get_app_fip_priority(NMSettingDcb *setting); |
| 95 | |
| 96 | /* Priority Flow Control */ |
| 97 | NMSettingDcbFlags nm_setting_dcb_get_priority_flow_control_flags(NMSettingDcb *setting); |
| 98 | gboolean nm_setting_dcb_get_priority_flow_control(NMSettingDcb *setting, guint user_priority); |
| 99 | void nm_setting_dcb_set_priority_flow_control(NMSettingDcb *setting, |
| 100 | guint user_priority, |
| 101 | gboolean enabled); |
| 102 | |
| 103 | /* Priority Groups */ |
| 104 | NMSettingDcbFlags nm_setting_dcb_get_priority_group_flags(NMSettingDcb *setting); |
| 105 | |
| 106 | guint nm_setting_dcb_get_priority_group_id(NMSettingDcb *setting, guint user_priority); |
| 107 | void |
| 108 | nm_setting_dcb_set_priority_group_id(NMSettingDcb *setting, guint user_priority, guint group_id); |
| 109 | |
| 110 | guint nm_setting_dcb_get_priority_group_bandwidth(NMSettingDcb *setting, guint group_id); |
| 111 | void nm_setting_dcb_set_priority_group_bandwidth(NMSettingDcb *setting, |
| 112 | guint group_id, |
| 113 | guint bandwidth_percent); |
| 114 | |
| 115 | guint nm_setting_dcb_get_priority_bandwidth(NMSettingDcb *setting, guint user_priority); |
| 116 | void nm_setting_dcb_set_priority_bandwidth(NMSettingDcb *setting, |
| 117 | guint user_priority, |
| 118 | guint bandwidth_percent); |
| 119 | |
| 120 | gboolean nm_setting_dcb_get_priority_strict_bandwidth(NMSettingDcb *setting, guint user_priority); |
| 121 | void nm_setting_dcb_set_priority_strict_bandwidth(NMSettingDcb *setting, |
| 122 | guint user_priority, |
| 123 | gboolean strict); |
| 124 | |
| 125 | guint nm_setting_dcb_get_priority_traffic_class(NMSettingDcb *setting, guint user_priority); |
| 126 | void nm_setting_dcb_set_priority_traffic_class(NMSettingDcb *setting, |
| 127 | guint user_priority, |
| 128 | guint traffic_class); |
| 129 | |
| 130 | G_END_DECLS |
| 131 | |
| 132 | #endif /* __NM_SETTING_DCB_H__ */ |
| 133 | |