summaryrefslogtreecommitdiff
path: root/slirp/tftp.h
diff options
context:
space:
mode:
authorHervé Poussineau <hpoussin@reactos.org>2016-11-21 20:45:49 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2016-12-21 00:02:15 +0100
commit9443598d7e2f2c0a6493d97b3f11dd04837b08e8 (patch)
tree9e290d52867a510130e9a61948eead0cc0a31c24 /slirp/tftp.h
parent893dcdbfa9c345945e6b501ebbf7a0f78ad08180 (diff)
downloadqemu-9443598d7e2f2c0a6493d97b3f11dd04837b08e8.tar.gz
slirp: support dynamic block size for TFTP transfers
The blocksize option is defined in RFC 1783 and RFC 2348. We now support block sizes between 1 and 1428 bytes, instead of 512 only. Signed-off-by: Hervé Poussineau <hpoussin@reactos.org> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Diffstat (limited to 'slirp/tftp.h')
-rw-r--r--slirp/tftp.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/slirp/tftp.h b/slirp/tftp.h
index 2cd276dec6..a4c4a64e64 100644
--- a/slirp/tftp.h
+++ b/slirp/tftp.h
@@ -15,6 +15,7 @@
#define TFTP_OACK 6
#define TFTP_FILENAME_MAX 512
+#define TFTP_BLOCKSIZE_MAX 1428
struct tftp_t {
struct udphdr udp;
@@ -22,13 +23,13 @@ struct tftp_t {
union {
struct {
uint16_t tp_block_nr;
- uint8_t tp_buf[512];
+ uint8_t tp_buf[TFTP_BLOCKSIZE_MAX];
} tp_data;
struct {
uint16_t tp_error_code;
- uint8_t tp_msg[512];
+ uint8_t tp_msg[TFTP_BLOCKSIZE_MAX];
} tp_error;
- char tp_buf[512 + 2];
+ char tp_buf[TFTP_BLOCKSIZE_MAX + 2];
} x;
} __attribute__((packed));
@@ -36,6 +37,7 @@ struct tftp_session {
Slirp *slirp;
char *filename;
int fd;
+ uint16_t block_size;
struct sockaddr_storage client_addr;
uint16_t client_port;