summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2013-10-14 13:57:51 +0200
committerThomas Haller <thaller@redhat.com>2013-10-25 22:32:47 +0200
commita9ea67185e713d3c9def741bfcf0438612f2f248 (patch)
tree6c6eff4269bd4d1e430b365fc90ddc397bbb41d4
parent0c6a98df786f015ae98d9c75af63906d25ff03ef (diff)
downloadNetworkManager-a9ea67185e713d3c9def741bfcf0438612f2f248.tar.gz
libnm-util: validate "primary" bonding option as an interface name
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r--libnm-util/nm-setting-bond.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/libnm-util/nm-setting-bond.c b/libnm-util/nm-setting-bond.c
index 88b1851d4c..bf9e529e29 100644
--- a/libnm-util/nm-setting-bond.c
+++ b/libnm-util/nm-setting-bond.c
@@ -89,6 +89,7 @@ enum {
TYPE_STR,
TYPE_BOTH,
TYPE_IP,
+ TYPE_IFNAME,
};
typedef struct {
@@ -110,7 +111,7 @@ static const BondDefault defaults[] = {
{ NM_SETTING_BOND_OPTION_ARP_IP_TARGET, "", TYPE_IP },
{ NM_SETTING_BOND_OPTION_ARP_VALIDATE, "0", TYPE_BOTH, 0, 3,
{ "none", "active", "backup", "all", NULL } },
- { NM_SETTING_BOND_OPTION_PRIMARY, "", TYPE_STR },
+ { NM_SETTING_BOND_OPTION_PRIMARY, "", TYPE_IFNAME },
{ NM_SETTING_BOND_OPTION_PRIMARY_RESELECT, "0", TYPE_BOTH, 0, 2,
{ "always", "better", "failure", NULL } },
{ NM_SETTING_BOND_OPTION_FAIL_OVER_MAC, "0", TYPE_BOTH, 0, 2,
@@ -271,6 +272,15 @@ validate_ip (const char *name, const char *value)
return success;
}
+static gboolean
+validate_ifname (const char *name, const char *value)
+{
+ if (!value || !value[0])
+ return FALSE;
+
+ return nm_utils_iface_valid_name (value);
+}
+
/**
* nm_setting_bond_validate_option:
* @name: the name of the option to validate
@@ -307,6 +317,8 @@ nm_setting_bond_validate_option (const char *name,
|| validate_list (name, value, &defaults[i]);
case TYPE_IP:
return validate_ip (name, value);
+ case TYPE_IFNAME:
+ return validate_ifname (name, value);
}
return FALSE;
}