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

Joe Hershberger
2015-04-27T19:35:21Z

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 at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot