/* tftp defines */
#ifndef SLIRP_TFTP_H
#define SLIRP_TFTP_H 1

#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);

#endif
