qemu-e2k/slirp/tftp.h
Hervé Poussineau 4aa401f39e slirp: Handle more than 65535 blocks in TFTP transfers
RFC 1350 does not mention block count roll-over. However, a lot of TFTP servers
implement it to be able to transmit big files, so do it also.

Current block size is 512 bytes, so TFTP files were limited to 32 MB.

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
2012-09-13 12:39:36 +02:00

46 lines
733 B
C

/* tftp defines */
#define TFTP_SESSIONS_MAX 3
#define TFTP_SERVER 69
#define TFTP_RRQ 1
#define TFTP_WRQ 2
#define TFTP_DATA 3
#define TFTP_ACK 4
#define TFTP_ERROR 5
#define TFTP_OACK 6
#define TFTP_FILENAME_MAX 512
struct tftp_t {
struct ip ip;
struct udphdr udp;
uint16_t tp_op;
union {
struct {
uint16_t tp_block_nr;
uint8_t tp_buf[512];
} tp_data;
struct {
uint16_t tp_error_code;
uint8_t tp_msg[512];
} tp_error;
char tp_buf[512 + 2];
} x;
};
struct tftp_session {
Slirp *slirp;
char *filename;
int fd;
struct in_addr client_ip;
uint16_t client_port;
uint32_t block_nr;
int timestamp;
};
void tftp_input(struct mbuf *m);