net: When checking prerequisites, consider boot_file_name

For net_boot_common, we allow the serverip to be specified as part of
the boot file name. For net commands that require serverip, include that
source as a valid specification of serverip.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Reviewed-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
Joe Hershberger 2018-07-03 19:36:39 -05:00
parent faecf84ab1
commit 3a66fcb7c3
2 changed files with 9 additions and 1 deletions

View File

@ -839,6 +839,9 @@ ushort env_get_vlan(char *);
/* copy a filename (allow for "..." notation, limit length) */
void copy_filename(char *dst, const char *src, int size);
/* check if serverip is specified in filename from the command line */
int is_serverip_in_cmd(void);
/* get a random source port */
unsigned int random_port(void);

View File

@ -1341,7 +1341,7 @@ static int net_check_prereq(enum proto_t protocol)
/* Fall through */
case TFTPGET:
case TFTPPUT:
if (net_server_ip.s_addr == 0) {
if (net_server_ip.s_addr == 0 && !is_serverip_in_cmd()) {
puts("*** ERROR: `serverip' not set\n");
return 1;
}
@ -1512,6 +1512,11 @@ void copy_filename(char *dst, const char *src, int size)
*dst = '\0';
}
int is_serverip_in_cmd(void)
{
return !!strchr(net_boot_file_name, ':');
}
#if defined(CONFIG_CMD_NFS) || \
defined(CONFIG_CMD_SNTP) || \
defined(CONFIG_CMD_DNS)