NetworkManager/bugfix-NetworkManager-tui-solve-bond-module.patch
compile_success 8bc0c7bd3b update
2020-06-22 21:56:30 +08:00

95 lines
4.3 KiB
Diff

diff -Nur NetworkManager-1.20.10.org/libnm-core/nm-core-internal.h NetworkManager-1.20.10/libnm-core/nm-core-internal.h
--- NetworkManager-1.20.10.org/libnm-core/nm-core-internal.h 2020-06-12 11:29:24.997178184 +0800
+++ NetworkManager-1.20.10/libnm-core/nm-core-internal.h 2020-06-12 14:14:02.965298351 +0800
@@ -495,6 +495,7 @@
NM_BOND_OPTION_TYPE_IP,
NM_BOND_OPTION_TYPE_MAC,
NM_BOND_OPTION_TYPE_IFNAME,
+ NM_BOND_OPTION_TYPE_PRIMARY_SLAVE,
} NMBondOptionType;
NMBondOptionType
diff -Nur NetworkManager-1.20.10.org/libnm-core/nm-setting-bond.c NetworkManager-1.20.10/libnm-core/nm-setting-bond.c
--- NetworkManager-1.20.10.org/libnm-core/nm-setting-bond.c 2020-06-12 11:29:24.997178184 +0800
+++ NetworkManager-1.20.10/libnm-core/nm-setting-bond.c 2020-06-12 14:19:44.310508536 +0800
@@ -77,7 +77,7 @@
{ NM_SETTING_BOND_OPTION_ARP_IP_TARGET, "", NM_BOND_OPTION_TYPE_IP },
{ NM_SETTING_BOND_OPTION_ARP_VALIDATE, "none", NM_BOND_OPTION_TYPE_BOTH, 0, 6,
{ "none", "active", "backup", "all", "filter", "filter_active", "filter_backup", NULL } },
- { NM_SETTING_BOND_OPTION_PRIMARY, "", NM_BOND_OPTION_TYPE_IFNAME },
+ { NM_SETTING_BOND_OPTION_PRIMARY, "", NM_BOND_OPTION_TYPE_PRIMARY_SLAVE },
{ NM_SETTING_BOND_OPTION_PRIMARY_RESELECT, "always", NM_BOND_OPTION_TYPE_BOTH, 0, 2,
{ "always", "better", "failure", NULL } },
{ NM_SETTING_BOND_OPTION_FAIL_OVER_MAC, "none", NM_BOND_OPTION_TYPE_BOTH, 0, 2,
@@ -232,7 +232,16 @@
}
return TRUE;
}
+static gboolean
+nm_check_primary_slave (const char *value)
+{
+ if (!value || !value[0]){
+ return TRUE;
+ }
+
+ return nm_utils_is_valid_iface_name (value, NULL);
+}
static gboolean
validate_ifname (const char *name, const char *value)
{
@@ -280,6 +289,8 @@
return nm_utils_hwaddr_valid (value, ETH_ALEN);
case NM_BOND_OPTION_TYPE_IFNAME:
return validate_ifname (name, value);
+ case NM_BOND_OPTION_TYPE_PRIMARY_SLAVE:
+ return nm_check_primary_slave (value);
}
return FALSE;
}
@@ -333,6 +344,9 @@
const char *value)
{
NMSettingBondPrivate *priv;
+ const char *init_updelay = "0";
+ const char *init_downdelay = "0";
+ const char *tmp = NULL;
g_return_val_if_fail (NM_IS_SETTING_BOND (setting), FALSE);
@@ -348,11 +362,22 @@
&& strcmp (value, "0") != 0) {
g_hash_table_remove (priv->options, NM_SETTING_BOND_OPTION_ARP_INTERVAL);
g_hash_table_remove (priv->options, NM_SETTING_BOND_OPTION_ARP_IP_TARGET);
+
+ tmp = g_hash_table_lookup (NM_SETTING_BOND_GET_PRIVATE (setting)->options, NM_SETTING_BOND_OPTION_DOWNDELAY);
+ if(!tmp){
+ g_hash_table_insert (priv->options, g_strdup (NM_SETTING_BOND_OPTION_DOWNDELAY), g_strdup (init_downdelay));
+ }
+ tmp = g_hash_table_lookup (NM_SETTING_BOND_GET_PRIVATE (setting)->options,NM_SETTING_BOND_OPTION_UPDELAY);
+ if(!tmp){
+ g_hash_table_insert (priv->options, g_strdup (NM_SETTING_BOND_OPTION_UPDELAY),g_strdup (init_updelay));
+ }
} else if ( !strcmp (name, NM_SETTING_BOND_OPTION_ARP_INTERVAL)
&& strcmp (value, "0") != 0) {
g_hash_table_remove (priv->options, NM_SETTING_BOND_OPTION_MIIMON);
g_hash_table_remove (priv->options, NM_SETTING_BOND_OPTION_DOWNDELAY);
g_hash_table_remove (priv->options, NM_SETTING_BOND_OPTION_UPDELAY);
+ }else if( !strcmp (name, NM_SETTING_BOND_OPTION_PRIMARY) && !strcmp (value, "") ){
+ g_hash_table_remove (priv->options, NM_SETTING_BOND_OPTION_PRIMARY);
}
_notify (setting, PROP_OPTIONS);
diff -Nur NetworkManager-1.20.10.org/libnm-core/tests/test-setting.c NetworkManager-1.20.10/libnm-core/tests/test-setting.c
--- NetworkManager-1.20.10.org/libnm-core/tests/test-setting.c 2020-06-12 11:29:24.993178124 +0800
+++ NetworkManager-1.20.10/libnm-core/tests/test-setting.c 2020-06-12 14:08:36.560383748 +0800
@@ -688,7 +688,7 @@
((const char *[]){ "mode", "802.3ad", "ad_actor_system", "00:02:03:04:05:06", NULL }));
test_bond_normalize_options (
((const char *[]){ "mode", "1", "miimon", "1", NULL }),
- ((const char *[]){ "mode", "active-backup", "miimon", "1", NULL }));
+ ((const char *[]){ "mode", "active-backup", "miimon", "1", NM_SETTING_BOND_OPTION_DOWNDELAY, "0", NM_SETTING_BOND_OPTION_UPDELAY, "0", NULL }));
test_bond_normalize_options (
((const char *[]){ "mode", "balance-alb", "tlb_dynamic_lb", "1", NULL }),
((const char *[]){ "mode", "balance-alb", NULL }));