From a9ea67185e713d3c9def741bfcf0438612f2f248 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= Date: Mon, 14 Oct 2013 13:57:51 +0200 Subject: [PATCH] libnm-util: validate "primary" bonding option as an interface name Signed-off-by: Thomas Haller --- libnm-util/nm-setting-bond.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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; }