summary refs log tree commit diff
path: root/libnm-core/nm-setting-dcb.h
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-core/nm-setting-dcb.h')
-rw-r--r--libnm-core/nm-setting-dcb.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/libnm-core/nm-setting-dcb.h b/libnm-core/nm-setting-dcb.h
new file mode 100644
index 00000000..e5bc4bcf
--- /dev/null
+++ b/libnm-core/nm-setting-dcb.h
@@ -0,0 +1,164 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2013 Red Hat, Inc.
+ */
+
+#ifndef __NM_SETTING_DCB_H__
+#define __NM_SETTING_DCB_H__
+
+#if !defined (__NETWORKMANAGER_H_INSIDE__) && !defined (NETWORKMANAGER_COMPILATION)
+#error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include <nm-setting.h>
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_SETTING_DCB            (nm_setting_dcb_get_type ())
+#define NM_SETTING_DCB(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SETTING_DCB, NMSettingDcb))
+#define NM_SETTING_DCB_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_SETTING_DCB, NMSettingDcbClass))
+#define NM_IS_SETTING_DCB(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_SETTING_DCB))
+#define NM_IS_SETTING_DCB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_SETTING_DCB))
+#define NM_SETTING_DCB_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SETTING_DCB, NMSettingDcbClass))
+
+#define NM_SETTING_DCB_SETTING_NAME "dcb"
+
+/**
+ * NMSettingDcbFlags:
+ * @NM_SETTING_DCB_FLAG_NONE: no flag
+ * @NM_SETTING_DCB_FLAG_ENABLE: the feature is enabled
+ * @NM_SETTING_DCB_FLAG_ADVERTISE: the feature is advertised
+ * @NM_SETTING_DCB_FLAG_WILLING: the feature is willing to change based on
+ * peer configuration advertisements
+ *
+ * DCB feature flags.
+ **/
+typedef enum { /*< flags >*/
+	NM_SETTING_DCB_FLAG_NONE      = 0x00000000,
+	NM_SETTING_DCB_FLAG_ENABLE    = 0x00000001,
+	NM_SETTING_DCB_FLAG_ADVERTISE = 0x00000002,
+	NM_SETTING_DCB_FLAG_WILLING   = 0x00000004
+} NMSettingDcbFlags;
+
+/**
+ * NM_SETTING_DCB_FCOE_MODE_FABRIC:
+ *
+ * Indicates that the FCoE controller should use "fabric" mode (default)
+ */
+#define NM_SETTING_DCB_FCOE_MODE_FABRIC  "fabric"
+
+/**
+ * NM_SETTING_DCB_FCOE_MODE_VN2VN:
+ *
+ * Indicates that the FCoE controller should use "VN2VN" mode.
+ */
+#define NM_SETTING_DCB_FCOE_MODE_VN2VN   "vn2vn"
+
+
+/* Properties */
+#define NM_SETTING_DCB_APP_FCOE_FLAGS         "app-fcoe-flags"
+#define NM_SETTING_DCB_APP_FCOE_PRIORITY      "app-fcoe-priority"
+#define NM_SETTING_DCB_APP_FCOE_MODE          "app-fcoe-mode"
+
+#define NM_SETTING_DCB_APP_ISCSI_FLAGS        "app-iscsi-flags"
+#define NM_SETTING_DCB_APP_ISCSI_PRIORITY     "app-iscsi-priority"
+
+#define NM_SETTING_DCB_APP_FIP_FLAGS          "app-fip-flags"
+#define NM_SETTING_DCB_APP_FIP_PRIORITY       "app-fip-priority"
+
+#define NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS  "priority-flow-control-flags"
+#define NM_SETTING_DCB_PRIORITY_FLOW_CONTROL        "priority-flow-control"
+
+#define NM_SETTING_DCB_PRIORITY_GROUP_FLAGS      "priority-group-flags"
+#define NM_SETTING_DCB_PRIORITY_GROUP_ID         "priority-group-id"
+#define NM_SETTING_DCB_PRIORITY_GROUP_BANDWIDTH  "priority-group-bandwidth"
+#define NM_SETTING_DCB_PRIORITY_BANDWIDTH        "priority-bandwidth"
+#define NM_SETTING_DCB_PRIORITY_STRICT_BANDWIDTH "priority-strict-bandwidth"
+#define NM_SETTING_DCB_PRIORITY_TRAFFIC_CLASS    "priority-traffic-class"
+
+
+struct _NMSettingDcb {
+	NMSetting parent;
+};
+
+typedef struct {
+	NMSettingClass parent;
+
+	/*< private >*/
+	gpointer padding[4];
+} NMSettingDcbClass;
+
+GType nm_setting_dcb_get_type (void);
+
+NMSetting *       nm_setting_dcb_new                      (void);
+
+NMSettingDcbFlags nm_setting_dcb_get_app_fcoe_flags     (NMSettingDcb *setting);
+gint              nm_setting_dcb_get_app_fcoe_priority  (NMSettingDcb *setting);
+const char *      nm_setting_dcb_get_app_fcoe_mode      (NMSettingDcb *setting);
+
+NMSettingDcbFlags nm_setting_dcb_get_app_iscsi_flags    (NMSettingDcb *setting);
+gint              nm_setting_dcb_get_app_iscsi_priority (NMSettingDcb *setting);
+
+NMSettingDcbFlags nm_setting_dcb_get_app_fip_flags      (NMSettingDcb *setting);
+gint              nm_setting_dcb_get_app_fip_priority   (NMSettingDcb *setting);
+
+/* Priority Flow Control */
+NMSettingDcbFlags nm_setting_dcb_get_priority_flow_control_flags    (NMSettingDcb *setting);
+gboolean          nm_setting_dcb_get_priority_flow_control          (NMSettingDcb *setting,
+                                                                     guint user_priority);
+void              nm_setting_dcb_set_priority_flow_control          (NMSettingDcb *setting,
+                                                                     guint user_priority,
+                                                                     gboolean enabled);
+
+/* Priority Groups */
+NMSettingDcbFlags nm_setting_dcb_get_priority_group_flags (NMSettingDcb *setting);
+
+guint    nm_setting_dcb_get_priority_group_id         (NMSettingDcb *setting,
+                                                       guint user_priority);
+void     nm_setting_dcb_set_priority_group_id         (NMSettingDcb *setting,
+                                                       guint user_priority,
+                                                       guint group_id);
+
+guint    nm_setting_dcb_get_priority_group_bandwidth  (NMSettingDcb *setting,
+                                                       guint group_id);
+void     nm_setting_dcb_set_priority_group_bandwidth  (NMSettingDcb *setting,
+                                                       guint group_id,
+                                                       guint bandwidth_percent);
+
+guint    nm_setting_dcb_get_priority_bandwidth        (NMSettingDcb *setting,
+                                                       guint user_priority);
+void     nm_setting_dcb_set_priority_bandwidth        (NMSettingDcb *setting,
+                                                       guint user_priority,
+                                                       guint bandwidth_percent);
+
+gboolean nm_setting_dcb_get_priority_strict_bandwidth (NMSettingDcb *setting,
+                                                       guint user_priority);
+void     nm_setting_dcb_set_priority_strict_bandwidth (NMSettingDcb *setting,
+                                                       guint user_priority,
+                                                       gboolean strict);
+
+guint    nm_setting_dcb_get_priority_traffic_class    (NMSettingDcb *setting,
+                                                       guint user_priority);
+void     nm_setting_dcb_set_priority_traffic_class    (NMSettingDcb *setting,
+                                                       guint user_priority,
+                                                       guint traffic_class);
+
+G_END_DECLS
+
+#endif /* __NM_SETTING_DCB_H__ */