460fec67ee
The essence of this patch is to stuff (almost) all global variables of the slirp stack into the structure Slirp. In this step, we still keep the structure as global variable, directly accessible by the whole stack. Changes to the external interface of slirp will be applied in the following patches. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
44 lines
708 B
C
44 lines
708 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;
|
|
u_int16_t tp_op;
|
|
union {
|
|
struct {
|
|
u_int16_t tp_block_nr;
|
|
u_int8_t tp_buf[512];
|
|
} tp_data;
|
|
struct {
|
|
u_int16_t tp_error_code;
|
|
u_int8_t tp_msg[512];
|
|
} tp_error;
|
|
u_int8_t tp_buf[512 + 2];
|
|
} x;
|
|
};
|
|
|
|
struct tftp_session {
|
|
Slirp *slirp;
|
|
char *filename;
|
|
|
|
struct in_addr client_ip;
|
|
u_int16_t client_port;
|
|
|
|
int timestamp;
|
|
};
|
|
|
|
void tftp_input(struct mbuf *m);
|