diff mbox

[U-Boot,09/11] net: Apply default format rules to all ethaddr

Message ID 1429653771-11676-10-git-send-email-joe.hershberger@ni.com
State Changes Requested
Delegated to: Tom Rini
Headers show

Commit Message

Joe Hershberger April 21, 2015, 10:02 p.m. UTC
Use a regular expression to apply the default formatting flags for all
ethaddr env vars.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
---

 include/env_flags.h | 11 ++++++++---
 test/dm/eth.c       |  1 +
 2 files changed, 9 insertions(+), 3 deletions(-)

Comments

Simon Glass April 24, 2015, 4:34 a.m. UTC | #1
On 21 April 2015 at 16:02, Joe Hershberger <joe.hershberger@ni.com> wrote:
> Use a regular expression to apply the default formatting flags for all
> ethaddr env vars.
>
> Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
> ---
>
>  include/env_flags.h | 11 ++++++++---
>  test/dm/eth.c       |  1 +
>  2 files changed, 9 insertions(+), 3 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

Q below.

>
> diff --git a/include/env_flags.h b/include/env_flags.h
> index 3ef6311..fc6d0d8 100644
> --- a/include/env_flags.h
> +++ b/include/env_flags.h
> @@ -38,13 +38,18 @@ enum env_flags_varaccess {
>  #endif
>
>  #ifdef CONFIG_CMD_NET
> +#ifdef CONFIG_REGEX
> +#define ETHADDR_WILDCARD "\\d?"
> +#else
> +#define ETHADDR_WILDCARD
> +#endif
>  #ifdef CONFIG_ENV_OVERWRITE
> -#define ETHADDR_FLAGS "ethaddr:ma,"
> +#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:ma,"
>  #else
>  #ifdef CONFIG_OVERWRITE_ETHADDR_ONCE
> -#define ETHADDR_FLAGS "ethaddr:mc,"
> +#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:mc,"
>  #else
> -#define ETHADDR_FLAGS "ethaddr:mo,"
> +#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:mo,"
>  #endif
>  #endif
>  #else
> diff --git a/test/dm/eth.c b/test/dm/eth.c
> index 4891f3a..9b714a1 100644
> --- a/test/dm/eth.c
> +++ b/test/dm/eth.c
> @@ -89,6 +89,7 @@ static int dm_test_eth_rotate(struct dm_test_state *dms)
>         /* Invalidate eth1's MAC address */
>         net_ping_ip = string_to_ip("1.1.2.2");
>         strcpy(ethaddr, getenv("eth1addr"));

Can you explain this next line, please?

> +       setenv(".flags", "eth1addr");
>         setenv("eth1addr", NULL);
>
>         /* Make sure that the default is to rotate to the next interface */
> --
> 1.7.11.5
>

Regards,
Simon
Joe Hershberger April 27, 2015, 7:35 p.m. UTC | #2
Hi Simon,

On Thu, Apr 23, 2015 at 11:34 PM, Simon Glass <sjg@chromium.org> wrote:
> On 21 April 2015 at 16:02, Joe Hershberger <joe.hershberger@ni.com> wrote:
>> Use a regular expression to apply the default formatting flags for all
>> ethaddr env vars.
>>
>> Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
>> ---
>>
>>  include/env_flags.h | 11 ++++++++---
>>  test/dm/eth.c       |  1 +
>>  2 files changed, 9 insertions(+), 3 deletions(-)
>
> Reviewed-by: Simon Glass <sjg@chromium.org>
>
> Q below.
>
>>
>> diff --git a/include/env_flags.h b/include/env_flags.h
>> index 3ef6311..fc6d0d8 100644
>> --- a/include/env_flags.h
>> +++ b/include/env_flags.h
>> @@ -38,13 +38,18 @@ enum env_flags_varaccess {
>>  #endif
>>
>>  #ifdef CONFIG_CMD_NET
>> +#ifdef CONFIG_REGEX
>> +#define ETHADDR_WILDCARD "\\d?"
>> +#else
>> +#define ETHADDR_WILDCARD
>> +#endif
>>  #ifdef CONFIG_ENV_OVERWRITE
>> -#define ETHADDR_FLAGS "ethaddr:ma,"
>> +#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:ma,"
>>  #else
>>  #ifdef CONFIG_OVERWRITE_ETHADDR_ONCE
>> -#define ETHADDR_FLAGS "ethaddr:mc,"
>> +#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:mc,"
>>  #else
>> -#define ETHADDR_FLAGS "ethaddr:mo,"
>> +#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:mo,"
>>  #endif
>>  #endif
>>  #else
>> diff --git a/test/dm/eth.c b/test/dm/eth.c
>> index 4891f3a..9b714a1 100644
>> --- a/test/dm/eth.c
>> +++ b/test/dm/eth.c
>> @@ -89,6 +89,7 @@ static int dm_test_eth_rotate(struct dm_test_state *dms)
>>         /* Invalidate eth1's MAC address */
>>         net_ping_ip = string_to_ip("1.1.2.2");
>>         strcpy(ethaddr, getenv("eth1addr"));
>
> Can you explain this next line, please?
>
>> +       setenv(".flags", "eth1addr");

This is now needed to allow the eth1addr to be modified. The env
variable ".flags" overrides the static list that is compiled in. Since
the regex now applies the ethaddr rules to eth\d?addr all of the
ethaddr vars are restricted to write-once by default. You'll notice in
another test where this was already overridden for "ethaddr" since it
already had the flags applied.

This line has the effect of changing the flags for that variable to be
"default" (i.e. unrestricted).

>>         setenv("eth1addr", NULL);
>>
>>         /* Make sure that the default is to rotate to the next interface */
>> --
>> 1.7.11.5
>>
>
> Regards,
> Simon
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Simon Glass April 27, 2015, 7:59 p.m. UTC | #3
Hi Joe,

On 27 April 2015 at 13:35, Joe Hershberger <joe.hershberger@gmail.com> wrote:
> Hi Simon,
>
> On Thu, Apr 23, 2015 at 11:34 PM, Simon Glass <sjg@chromium.org> wrote:
>> On 21 April 2015 at 16:02, Joe Hershberger <joe.hershberger@ni.com> wrote:
>>> Use a regular expression to apply the default formatting flags for all
>>> ethaddr env vars.
>>>
>>> Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
>>> ---
>>>
>>>  include/env_flags.h | 11 ++++++++---
>>>  test/dm/eth.c       |  1 +
>>>  2 files changed, 9 insertions(+), 3 deletions(-)
>>
>> Reviewed-by: Simon Glass <sjg@chromium.org>
>>
>> Q below.
>>
>>>
>>> diff --git a/include/env_flags.h b/include/env_flags.h
>>> index 3ef6311..fc6d0d8 100644
>>> --- a/include/env_flags.h
>>> +++ b/include/env_flags.h
>>> @@ -38,13 +38,18 @@ enum env_flags_varaccess {
>>>  #endif
>>>
>>>  #ifdef CONFIG_CMD_NET
>>> +#ifdef CONFIG_REGEX
>>> +#define ETHADDR_WILDCARD "\\d?"
>>> +#else
>>> +#define ETHADDR_WILDCARD
>>> +#endif
>>>  #ifdef CONFIG_ENV_OVERWRITE
>>> -#define ETHADDR_FLAGS "ethaddr:ma,"
>>> +#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:ma,"
>>>  #else
>>>  #ifdef CONFIG_OVERWRITE_ETHADDR_ONCE
>>> -#define ETHADDR_FLAGS "ethaddr:mc,"
>>> +#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:mc,"
>>>  #else
>>> -#define ETHADDR_FLAGS "ethaddr:mo,"
>>> +#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:mo,"
>>>  #endif
>>>  #endif
>>>  #else
>>> diff --git a/test/dm/eth.c b/test/dm/eth.c
>>> index 4891f3a..9b714a1 100644
>>> --- a/test/dm/eth.c
>>> +++ b/test/dm/eth.c
>>> @@ -89,6 +89,7 @@ static int dm_test_eth_rotate(struct dm_test_state *dms)
>>>         /* Invalidate eth1's MAC address */
>>>         net_ping_ip = string_to_ip("1.1.2.2");
>>>         strcpy(ethaddr, getenv("eth1addr"));
>>
>> Can you explain this next line, please?
>>
>>> +       setenv(".flags", "eth1addr");
>
> This is now needed to allow the eth1addr to be modified. The env
> variable ".flags" overrides the static list that is compiled in. Since
> the regex now applies the ethaddr rules to eth\d?addr all of the
> ethaddr vars are restricted to write-once by default. You'll notice in
> another test where this was already overridden for "ethaddr" since it
> already had the flags applied.
>
> This line has the effect of changing the flags for that variable to be
> "default" (i.e. unrestricted).

OK I see. Would you mind adding this comment here in the code?

>
>>>         setenv("eth1addr", NULL);
>>>
>>>         /* Make sure that the default is to rotate to the next interface */
>>> --
>>> 1.7.11.5

Regards,
Simon
diff mbox

Patch

diff --git a/include/env_flags.h b/include/env_flags.h
index 3ef6311..fc6d0d8 100644
--- a/include/env_flags.h
+++ b/include/env_flags.h
@@ -38,13 +38,18 @@  enum env_flags_varaccess {
 #endif
 
 #ifdef CONFIG_CMD_NET
+#ifdef CONFIG_REGEX
+#define ETHADDR_WILDCARD "\\d?"
+#else
+#define ETHADDR_WILDCARD
+#endif
 #ifdef CONFIG_ENV_OVERWRITE
-#define ETHADDR_FLAGS "ethaddr:ma,"
+#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:ma,"
 #else
 #ifdef CONFIG_OVERWRITE_ETHADDR_ONCE
-#define ETHADDR_FLAGS "ethaddr:mc,"
+#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:mc,"
 #else
-#define ETHADDR_FLAGS "ethaddr:mo,"
+#define ETHADDR_FLAGS "eth" ETHADDR_WILDCARD "addr:mo,"
 #endif
 #endif
 #else
diff --git a/test/dm/eth.c b/test/dm/eth.c
index 4891f3a..9b714a1 100644
--- a/test/dm/eth.c
+++ b/test/dm/eth.c
@@ -89,6 +89,7 @@  static int dm_test_eth_rotate(struct dm_test_state *dms)
 	/* Invalidate eth1's MAC address */
 	net_ping_ip = string_to_ip("1.1.2.2");
 	strcpy(ethaddr, getenv("eth1addr"));
+	setenv(".flags", "eth1addr");
 	setenv("eth1addr", NULL);
 
 	/* Make sure that the default is to rotate to the next interface */