/* tftp defines */ | |
#ifndef SLIRP_TFTP_H | |
#define SLIRP_TFTP_H 1 | |
#define TFTP_SESSIONS_MAX 20 | |
#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; | |
FILE *f; | |
struct in_addr client_ip; | |
uint16_t client_port; | |
uint32_t block_nr; | |
int timestamp; | |
}; | |
void tftp_input(struct mbuf *m); | |
#endif |