diff options
author | Hervé Poussineau <hpoussin@reactos.org> | 2016-11-21 20:45:49 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-12-21 00:02:15 +0100 |
commit | 9443598d7e2f2c0a6493d97b3f11dd04837b08e8 (patch) | |
tree | 9e290d52867a510130e9a61948eead0cc0a31c24 /slirp/tftp.h | |
parent | 893dcdbfa9c345945e6b501ebbf7a0f78ad08180 (diff) |
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.h | 8 |
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; |