]> git.proxmox.com Git - mirror_qemu.git/blobdiff - slirp/tftp.h
Merge remote-tracking branch 'cohuck/tags/s390x-20170502' into staging
[mirror_qemu.git] / slirp / tftp.h
index 87adeb533352e6736422ec291df3e6ceae3d9a01..a4c4a64e641b5e8e9d09901367eeb8ae8e83e7c7 100644 (file)
@@ -1,8 +1,9 @@
 /* tftp defines */
+
 #ifndef SLIRP_TFTP_H
-#define SLIRP_TFTP_H 1
+#define SLIRP_TFTP_H
 
-#define TFTP_SESSIONS_MAX 3
+#define TFTP_SESSIONS_MAX 20
 
 #define TFTP_SERVER    69
 
 #define TFTP_OACK   6
 
 #define TFTP_FILENAME_MAX 512
+#define TFTP_BLOCKSIZE_MAX 1428
 
 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];
+      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));
 
 struct tftp_session {
     Slirp *slirp;
     char *filename;
     int fd;
+    uint16_t block_size;
 
-    struct in_addr client_ip;
+    struct sockaddr_storage client_addr;
     uint16_t client_port;
     uint32_t block_nr;
 
     int timestamp;
 };
 
-void tftp_input(struct mbuf *m);
+void tftp_input(struct sockaddr_storage *srcsas, struct mbuf *m);
 
 #endif