diff mbox

[U-Boot,v4,11/16] common/env_flags.c: Add function to validate a MAC address

Message ID 1441810852-2054-1-git-send-email-codrin.ciubotariu@freescale.com
State Accepted
Delegated to: York Sun
Headers show

Commit Message

Codrin Ciubotariu Sept. 9, 2015, 3 p.m. UTC
The code that checks if a string has the format of a MAC address has been
moved to a separate function called eth_validate_ethaddr_str().

This has been done to allow other components (such as vsc9953 driver)
to validate a MAC address.

Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@freescale.com>
---

Changes for v3:
	- none, new patch;

Changes for v4:
	- function eth_validate_ethaddr_str() has been moved to
	common/env_flags.c and its header to include/env_flags.h;
	- patch desription updated;

 common/env_flags.c  | 40 +++++++++++++++++++++++++++-------------
 include/env_flags.h |  7 +++++++
 2 files changed, 34 insertions(+), 13 deletions(-)

Comments

Joe Hershberger Sept. 11, 2015, 7:45 p.m. UTC | #1
Hi Codrin,

On Wed, Sep 9, 2015 at 10:00 AM, Codrin Ciubotariu
<codrin.ciubotariu@freescale.com> wrote:
> The code that checks if a string has the format of a MAC address has been
> moved to a separate function called eth_validate_ethaddr_str().
>
> This has been done to allow other components (such as vsc9953 driver)
> to validate a MAC address.
>
> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@freescale.com>

Acked-by: Joe Hershberger <joe.hershberger@ni.com>
diff mbox

Patch

diff --git a/common/env_flags.c b/common/env_flags.c
index 5189f5b..e682d85 100644
--- a/common/env_flags.c
+++ b/common/env_flags.c
@@ -187,6 +187,31 @@  static void skip_num(int hex, const char *value, const char **end,
 		*end = value;
 }
 
+#ifdef CONFIG_CMD_NET
+int eth_validate_ethaddr_str(const char *addr)
+{
+	const char *end;
+	const char *cur;
+	int i;
+
+	cur = addr;
+	for (i = 0; i < 6; i++) {
+		skip_num(1, cur, &end, 2);
+		if (cur == end)
+			return -1;
+		if (cur + 2 == end && is_hex_prefix(cur))
+			return -1;
+		if (i != 5 && *end != ':')
+			return -1;
+		if (i == 5 && *end != '\0')
+			return -1;
+		cur = end + 1;
+	}
+
+	return 0;
+}
+#endif
+
 /*
  * Based on the declared type enum, validate that the value string complies
  * with that format
@@ -239,19 +264,8 @@  static int _env_flags_validate_type(const char *value,
 		}
 		break;
 	case env_flags_vartype_macaddr:
-		cur = value;
-		for (i = 0; i < 6; i++) {
-			skip_num(1, cur, &end, 2);
-			if (cur == end)
-				return -1;
-			if (cur + 2 == end && is_hex_prefix(cur))
-				return -1;
-			if (i != 5 && *end != ':')
-				return -1;
-			if (i == 5 && *end != '\0')
-				return -1;
-			cur = end + 1;
-		}
+		if (eth_validate_ethaddr_str(value))
+			return -1;
 		break;
 #endif
 	case env_flags_vartype_end:
diff --git a/include/env_flags.h b/include/env_flags.h
index 2d2de88..8823fb9 100644
--- a/include/env_flags.h
+++ b/include/env_flags.h
@@ -109,6 +109,13 @@  enum env_flags_varaccess env_flags_parse_varaccess(const char *flags);
  */
 enum env_flags_varaccess env_flags_parse_varaccess_from_binflags(int binflags);
 
+#ifdef CONFIG_CMD_NET
+/*
+ * Check if a string has the format of an Ethernet MAC address
+ */
+int eth_validate_ethaddr_str(const char *addr);
+#endif
+
 #ifdef USE_HOSTCC
 /*
  * Look up the type of a variable directly from the .flags var.