net: Re-check prerequisites when autoloading
authorJoe Hershberger <joe.hershberger@ni.com>
Wed, 4 Jul 2018 00:36:40 +0000 (19:36 -0500)
committerJoe Hershberger <joe.hershberger@ni.com>
Thu, 26 Jul 2018 19:08:20 +0000 (14:08 -0500)
With net autoload, we check the prerequisites for the initial command,
but the greater prerequisites when autoloading are not checked.

If we would attempt to autoload, check those prerequisites too.

If we are not expecting a serverip from the server, then don't worry
about it not being set, but don't attempt to load if it isn't.

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

index bff3e9c5b531cc76254b835b8bb5e938f0bc3a46..42a50e60f84e1c9805525b37b1ee6bbcfedc5293 100644 (file)
--- a/net/net.c
+++ b/net/net.c
@@ -332,6 +332,16 @@ void net_auto_load(void)
        const char *s = env_get("autoload");
 
        if (s != NULL && strcmp(s, "NFS") == 0) {
+               if (net_check_prereq(NFS)) {
+/* We aren't expecting to get a serverip, so just accept the assigned IP */
+#ifdef CONFIG_BOOTP_SERVERIP
+                       net_set_state(NETLOOP_SUCCESS);
+#else
+                       printf("Cannot autoload with NFS\n");
+                       net_set_state(NETLOOP_FAIL);
+#endif
+                       return;
+               }
                /*
                 * Use NFS to load the bootfile.
                 */
@@ -347,6 +357,16 @@ void net_auto_load(void)
                net_set_state(NETLOOP_SUCCESS);
                return;
        }
+       if (net_check_prereq(TFTPGET)) {
+/* We aren't expecting to get a serverip, so just accept the assigned IP */
+#ifdef CONFIG_BOOTP_SERVERIP
+               net_set_state(NETLOOP_SUCCESS);
+#else
+               printf("Cannot autoload with TFTPGET\n");
+               net_set_state(NETLOOP_FAIL);
+#endif
+               return;
+       }
        tftp_start(TFTPGET);
 }