ifcfg-rh: clear DCB values when DCB is disabled

This commit is contained in:
Dan Williams
2013-11-05 14:11:04 -06:00
parent beb56eab9a
commit 154264d99c
3 changed files with 73 additions and 21 deletions

View File

@@ -54,6 +54,30 @@
#define SECRET_FLAG_NOT_SAVED "ask"
#define SECRET_FLAG_NOT_REQUIRED "unused"
/* DCB key names */
#define KEY_DCB_APP_FCOE_ENABLE "DCB_APP_FCOE_ENABLE"
#define KEY_DCB_APP_FCOE_ADVERTISE "DCB_APP_FCOE_ADVERTISE"
#define KEY_DCB_APP_FCOE_WILLING "DCB_APP_FCOE_WILLING"
#define KEY_DCB_APP_FCOE_MODE "DCB_APP_FCOE_MODE"
#define KEY_DCB_APP_ISCSI_ENABLE "DCB_APP_ISCSI_ENABLE"
#define KEY_DCB_APP_ISCSI_ADVERTISE "DCB_APP_ISCSI_ADVERTISE"
#define KEY_DCB_APP_ISCSI_WILLING "DCB_APP_ISCSI_WILLING"
#define KEY_DCB_APP_FIP_ENABLE "DCB_APP_FIP_ENABLE"
#define KEY_DCB_APP_FIP_ADVERTISE "DCB_APP_FIP_ADVERTISE"
#define KEY_DCB_APP_FIP_WILLING "DCB_APP_FIP_WILLING"
#define KEY_DCB_PFC_ENABLE "DCB_PFC_ENABLE"
#define KEY_DCB_PFC_ADVERTISE "DCB_PFC_ADVERTISE"
#define KEY_DCB_PFC_WILLING "DCB_PFC_WILLING"
#define KEY_DCB_PFC_UP "DCB_PFC_UP"
#define KEY_DCB_PG_ENABLE "DCB_PG_ENABLE"
#define KEY_DCB_PG_ADVERTISE "DCB_PG_ADVERTISE"
#define KEY_DCB_PG_WILLING "DCB_PG_WILLING"
#define KEY_DCB_PG_ID "DCB_PG_ID"
#define KEY_DCB_PG_PCT "DCB_PG_PCT"
#define KEY_DCB_PG_UPPCT "DCB_PG_UPPCT"
#define KEY_DCB_PG_STRICT "DCB_PG_STRICT"
#define KEY_DCB_PG_UP2TC "DCB_PG_UP2TC"
#define IFCFG_PLUGIN_ERROR (ifcfg_plugin_error_quark ())
GQuark ifcfg_plugin_error_quark (void);

View File

@@ -1790,11 +1790,11 @@ enum {
};
static DcbFlagsProperty dcb_flags_props[] = {
{ "DCB_APP_FCOE_ENABLE", "DCB_APP_FCOE_ADVERTISE", "DCB_APP_FCOE_WILLING", NM_SETTING_DCB_APP_FCOE_FLAGS },
{ "DCB_APP_ISCSI_ENABLE", "DCB_APP_ISCSI_ADVERTISE", "DCB_APP_ISCSI_WILLING", NM_SETTING_DCB_APP_ISCSI_FLAGS },
{ "DCB_APP_FIP_ENABLE", "DCB_APP_FIP_ADVERTISE", "DCB_APP_FIP_WILLING", NM_SETTING_DCB_APP_FIP_FLAGS },
{ "DCB_PFC_ENABLE", "DCB_PFC_ADVERTISE", "DCB_PFC_WILLING", NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS },
{ "DCB_PG_ENABLE", "DCB_PG_ADVERTISE", "DCB_PG_WILLING", NM_SETTING_DCB_PRIORITY_GROUP_FLAGS },
{ KEY_DCB_APP_FCOE_ENABLE, KEY_DCB_APP_FCOE_ADVERTISE, KEY_DCB_APP_FCOE_WILLING, NM_SETTING_DCB_APP_FCOE_FLAGS },
{ KEY_DCB_APP_ISCSI_ENABLE, KEY_DCB_APP_ISCSI_ADVERTISE, KEY_DCB_APP_ISCSI_WILLING, NM_SETTING_DCB_APP_ISCSI_FLAGS },
{ KEY_DCB_APP_FIP_ENABLE, KEY_DCB_APP_FIP_ADVERTISE, KEY_DCB_APP_FIP_WILLING, NM_SETTING_DCB_APP_FIP_FLAGS },
{ KEY_DCB_PFC_ENABLE, KEY_DCB_PFC_ADVERTISE, KEY_DCB_PFC_WILLING, NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS },
{ KEY_DCB_PG_ENABLE, KEY_DCB_PG_ADVERTISE, KEY_DCB_PG_WILLING, NM_SETTING_DCB_PRIORITY_GROUP_FLAGS },
{ NULL },
};
@@ -2046,7 +2046,7 @@ make_dcb_setting (shvarFile *ifcfg,
return FALSE;
}
if (nm_setting_dcb_get_app_fcoe_flags (s_dcb) & NM_SETTING_DCB_FLAG_ENABLE) {
val = svGetValue (ifcfg, "DCB_APP_FCOE_MODE", FALSE);
val = svGetValue (ifcfg, KEY_DCB_APP_FCOE_MODE, FALSE);
if (val) {
if (strcmp (val, NM_SETTING_DCB_FCOE_MODE_FABRIC) == 0 ||
strcmp (val, NM_SETTING_DCB_FCOE_MODE_VN2VN) == 0)
@@ -2087,7 +2087,7 @@ make_dcb_setting (shvarFile *ifcfg,
if (!read_dcb_bool_array (ifcfg,
s_dcb,
flags,
"DCB_PFC_UP",
KEY_DCB_PFC_UP,
"PFC",
nm_setting_dcb_set_priority_flow_control,
error)) {
@@ -2102,7 +2102,7 @@ make_dcb_setting (shvarFile *ifcfg,
if (!read_dcb_uint_array (ifcfg,
s_dcb,
flags,
"DCB_PG_ID",
KEY_DCB_PG_ID,
"PGID",
TRUE,
nm_setting_dcb_set_priority_group_id,
@@ -2115,7 +2115,7 @@ make_dcb_setting (shvarFile *ifcfg,
if (!read_dcb_percent_array (ifcfg,
s_dcb,
flags,
"DCB_PG_PCT",
KEY_DCB_PG_PCT,
"PGPCT",
TRUE,
nm_setting_dcb_set_priority_group_bandwidth,
@@ -2128,7 +2128,7 @@ make_dcb_setting (shvarFile *ifcfg,
if (!read_dcb_percent_array (ifcfg,
s_dcb,
flags,
"DCB_PG_UPPCT",
KEY_DCB_PG_UPPCT,
"UPPCT",
FALSE,
nm_setting_dcb_set_priority_bandwidth,
@@ -2141,7 +2141,7 @@ make_dcb_setting (shvarFile *ifcfg,
if (!read_dcb_bool_array (ifcfg,
s_dcb,
flags,
"DCB_PG_STRICT",
KEY_DCB_PG_STRICT,
"STRICT",
nm_setting_dcb_set_priority_strict_bandwidth,
error)) {
@@ -2152,7 +2152,7 @@ make_dcb_setting (shvarFile *ifcfg,
if (!read_dcb_uint_array (ifcfg,
s_dcb,
flags,
"DCB_PG_UP2TC",
KEY_DCB_PG_UP2TC,
"UP2TC",
FALSE,
nm_setting_dcb_set_priority_traffic_class,

View File

@@ -1592,7 +1592,35 @@ write_dcb_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
s_dcb = nm_connection_get_setting_dcb (connection);
if (!s_dcb) {
svSetValue (ifcfg, "DCB", NULL, FALSE);
static const char *clear_keys[] = {
"DCB",
KEY_DCB_APP_FCOE_ENABLE,
KEY_DCB_APP_FCOE_ADVERTISE,
KEY_DCB_APP_FCOE_WILLING,
KEY_DCB_APP_FCOE_MODE,
KEY_DCB_APP_ISCSI_ENABLE,
KEY_DCB_APP_ISCSI_ADVERTISE,
KEY_DCB_APP_ISCSI_WILLING,
KEY_DCB_APP_FIP_ENABLE,
KEY_DCB_APP_FIP_ADVERTISE,
KEY_DCB_APP_FIP_WILLING,
KEY_DCB_PFC_ENABLE,
KEY_DCB_PFC_ADVERTISE,
KEY_DCB_PFC_WILLING,
KEY_DCB_PFC_UP,
KEY_DCB_PG_ENABLE,
KEY_DCB_PG_ADVERTISE,
KEY_DCB_PG_WILLING,
KEY_DCB_PG_ID,
KEY_DCB_PG_PCT,
KEY_DCB_PG_UPPCT,
KEY_DCB_PG_STRICT,
KEY_DCB_PG_UP2TC,
NULL };
const char **iter;
for (iter = clear_keys; *iter; iter++)
svSetValue (ifcfg, *iter, NULL, FALSE);
return TRUE;
}
@@ -1602,9 +1630,9 @@ write_dcb_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
nm_setting_dcb_get_app_fcoe_flags (s_dcb),
nm_setting_dcb_get_app_fcoe_priority (s_dcb));
if (nm_setting_dcb_get_app_fcoe_flags (s_dcb) & NM_SETTING_DCB_FLAG_ENABLE)
svSetValue (ifcfg, "DCB_APP_FCOE_MODE", nm_setting_dcb_get_app_fcoe_mode (s_dcb), FALSE);
svSetValue (ifcfg, KEY_DCB_APP_FCOE_MODE, nm_setting_dcb_get_app_fcoe_mode (s_dcb), FALSE);
else
svSetValue (ifcfg, "DCB_APP_FCOE_MODE", NULL, FALSE);
svSetValue (ifcfg, KEY_DCB_APP_FCOE_MODE, NULL, FALSE);
write_dcb_app (ifcfg, "APP_ISCSI",
nm_setting_dcb_get_app_iscsi_flags (s_dcb),
@@ -1614,17 +1642,17 @@ write_dcb_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
nm_setting_dcb_get_app_fip_priority (s_dcb));
write_dcb_flags (ifcfg, "PFC", nm_setting_dcb_get_priority_flow_control_flags (s_dcb));
write_dcb_bool_array (ifcfg, "DCB_PFC_UP", s_dcb,
write_dcb_bool_array (ifcfg, KEY_DCB_PFC_UP, s_dcb,
nm_setting_dcb_get_priority_flow_control_flags (s_dcb),
nm_setting_dcb_get_priority_flow_control);
flags = nm_setting_dcb_get_priority_group_flags (s_dcb);
write_dcb_flags (ifcfg, "PG", flags);
write_dcb_uint_array (ifcfg, "DCB_PG_ID", s_dcb, flags, nm_setting_dcb_get_priority_group_id);
write_dcb_percent_array (ifcfg, "DCB_PG_PCT", s_dcb, flags, nm_setting_dcb_get_priority_group_bandwidth);
write_dcb_percent_array (ifcfg, "DCB_PG_UPPCT", s_dcb, flags, nm_setting_dcb_get_priority_bandwidth);
write_dcb_bool_array (ifcfg, "DCB_PG_STRICT", s_dcb, flags, nm_setting_dcb_get_priority_strict_bandwidth);
write_dcb_uint_array (ifcfg, "DCB_PG_UP2TC", s_dcb, flags, nm_setting_dcb_get_priority_traffic_class);
write_dcb_uint_array (ifcfg, KEY_DCB_PG_ID, s_dcb, flags, nm_setting_dcb_get_priority_group_id);
write_dcb_percent_array (ifcfg, KEY_DCB_PG_PCT, s_dcb, flags, nm_setting_dcb_get_priority_group_bandwidth);
write_dcb_percent_array (ifcfg, KEY_DCB_PG_UPPCT, s_dcb, flags, nm_setting_dcb_get_priority_bandwidth);
write_dcb_bool_array (ifcfg, KEY_DCB_PG_STRICT, s_dcb, flags, nm_setting_dcb_get_priority_strict_bandwidth);
write_dcb_uint_array (ifcfg, KEY_DCB_PG_UP2TC, s_dcb, flags, nm_setting_dcb_get_priority_traffic_class);
return TRUE;
}