aboutsummaryrefslogtreecommitdiff
path: root/stand
diff options
context:
space:
mode:
authorToomas Soome <tsoome@FreeBSD.org>2021-08-02 12:27:38 +0000
committerToomas Soome <tsoome@FreeBSD.org>2021-08-02 12:43:54 +0000
commit1b1bb6f178802a4522824e0268634a99cdbda098 (patch)
tree143ae49059bef9b11f152117fc4ab801402f9aee /stand
parentaed2afeb51e474628d508cc4c6dea223b78b9789 (diff)
downloadsrc-1b1bb6f178802a4522824e0268634a99cdbda098.tar.gz
src-1b1bb6f178802a4522824e0268634a99cdbda098.zip
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
Diffstat (limited to 'stand')
-rw-r--r--stand/libsa/tftp.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/stand/libsa/tftp.c b/stand/libsa/tftp.c
index 3892f2aad86a..22e03ab58da1 100644
--- a/stand/libsa/tftp.c
+++ b/stand/libsa/tftp.c
@@ -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);