[U-Boot] net.c: question regarding commit: fd3056337e6fcc140f400e11edd33f6f1cb37de1
Joe Hershberger
joe.hershberger at gmail.com
Mon Jun 22 23:54:49 CEST 2015
Hi Hannes,
On Mon, Jun 22, 2015 at 7:23 AM, Hannes Schmelzer
<hannes at schmelzer.or.at> wrote:
> Hi joe,
>
> you did introduce callbacks on setting up ip,dns, ... in net.c
>
> Why it did become necessary to do following ?
>
> if (flags & H_PROGRAMMATIC)
> return 0;
Because the callback should not be updating the network stack
variables when updated by the network stack (such as when DHCP sets
the ipaddr).
> I have actually trouble with this, because my code in
> board/BuR/kwb/board.c doesn't work anymore as expected.
>
> /* setup default IP, in case if there is nothing in environment */
> if (!getenv("ipaddr")) {
> setenv("ipaddr", "192.168.60.1");
> setenv("netmask", "255.255.255.0");
> setenv("serverip", "192.168.60.254");
> setenv("gatewayip", "192.168.60.254");
> puts("net: had no IP! made default setup.\n");
> }
>
> Purpose of this was/is to setup a default ip-address if nothing in
> environment has been set yet.
Any reason not to use link-local or DHCP in this case? What are the
chances that the board is on a compatible network and no one else has
that address? I recommend you remove this code unless you have a
really good reason.
> do you (or somebody else) have an idea how to work around this ?
You can set the ipaddr as a user would... through the command line. I
actually had to change the way env edit worked in
94b467b14ed908c89a0780256e89b375aa3cf3ef (env: Distinguish finer
between source of env change). You can do something similar to what it
does now.
+ const char * const _argv[4] = { "setenv", argv[1], buffer,
+ NULL };
+
+ return _do_env_set(0, 3, (char * const *)_argv, H_INTERACTIVE);
Cheers,
-Joe
More information about the U-Boot
mailing list