loader: tftp client should use server address from rootip
servip is set from bootp bp_siaddr (if present) and rootip is set immediately from servip in tha sane bootp code. However, the common/dev_net.c does only set rootip (based on url processing etc). Therefore, we should also use rootip in tftp reader. Fixes hung tftp based boot when bp_siaddr is not provided. MFC after: 1 week
This commit is contained in:
parent
aed2afeb51
commit
1b1bb6f178
@ -38,7 +38,7 @@ __FBSDID("$FreeBSD$");
|
||||
* Simple TFTP implementation for libsa.
|
||||
* Assumes:
|
||||
* - socket descriptor (int) at open_file->f_devdata
|
||||
* - server host IP in global servip
|
||||
* - server host IP in global rootip
|
||||
* Restrictions:
|
||||
* - read only
|
||||
* - lseek only with SEEK_SET or SEEK_CUR
|
||||
@ -83,8 +83,6 @@ struct fs_ops tftp_fsops = {
|
||||
.fo_readdir = null_readdir
|
||||
};
|
||||
|
||||
extern struct in_addr servip;
|
||||
|
||||
static int tftpport = 2000;
|
||||
static int is_open = 0;
|
||||
|
||||
@ -460,7 +458,7 @@ tftp_open(const char *path, struct open_file *f)
|
||||
return (EINVAL);
|
||||
}
|
||||
|
||||
io->destip = servip;
|
||||
io->destip = rootip;
|
||||
tftpfile->off = 0;
|
||||
pathsize = (strlen(rootpath) + 1 + strlen(path) + 1) * sizeof(char);
|
||||
tftpfile->path = malloc(pathsize);
|
||||
|
Loading…
Reference in New Issue
Block a user