64 bit fixes (initial patch by Gwenole Beauchesne)
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 5 Jun 2005 17:11:42 +0000 (17:11 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 5 Jun 2005 17:11:42 +0000 (17:11 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1458 c046a42c-6fe2-441c-8c8c-71466251a162

slirp/bootp.c
slirp/bootp.h
slirp/ip_icmp.h
slirp/libslirp.h
slirp/slirp_config.h
slirp/udp.c
slirp/udp.h

index 56caf707eb92c9a0b26c8ae69e0cf0c496a55ab9..9f0652fd6317633ae576f73c6096bf28f70b346a 100644 (file)
@@ -238,7 +238,7 @@ static void bootp_reply(struct bootp_t *bp)
 
 void bootp_input(struct mbuf *m)
 {
-    struct bootp_t *bp = (struct bootp_t *)m->m_data;
+    struct bootp_t *bp = mtod(m, struct bootp_t *);
 
     if (bp->bp_op == BOOTP_REQUEST) {
         bootp_reply(bp);
index d3b2baa0419bd13a88b5e41e9ccf1835ade0bd7d..e48f53f37aa4358cfdba41e043d32f3d7d348cf4 100644 (file)
@@ -97,9 +97,9 @@ struct bootp_t {
     uint8_t bp_htype;
     uint8_t bp_hlen;
     uint8_t bp_hops;
-    unsigned long bp_xid;
-    unsigned short bp_secs;
-    unsigned short unused;
+    uint32_t bp_xid;
+    uint16_t bp_secs;
+    uint16_t unused;
     struct in_addr bp_ciaddr;
     struct in_addr bp_yiaddr;
     struct in_addr bp_siaddr;
index 7ddaaf8f372ccb82fd743023ec9233d5c890bb24..8c9b5a1ba51e30e1c654f4ec11b9d807f5279490 100644 (file)
@@ -83,8 +83,8 @@ struct icmp {
                        struct ip idi_ip;
                        /* options and then 64 bits of data */
                } id_ip;
-               u_long  id_mask;
-               char    id_data[1];
+               uint32_t        id_mask;
+               char            id_data[1];
        } icmp_dun;
 #define        icmp_otime      icmp_dun.id_ts.its_otime
 #define        icmp_rtime      icmp_dun.id_ts.its_rtime
index 6a54eb14f69a71fa68f71f5c3b5c04b1e191d58e..cff159e7917d3b67f9dfe6a041a28cd42617b821 100644 (file)
@@ -9,6 +9,10 @@ int inet_aton(const char *cp, struct in_addr *ia);
 #include <arpa/inet.h>
 #endif
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void slirp_init(void);
 
 void slirp_select_fill(int *pnfds, 
@@ -29,4 +33,8 @@ int slirp_add_exec(int do_pty, const char *args, int addr_low_byte,
 
 extern const char *tftp_prefix;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
index 856c3156751d246110ebed8a2fa9a7ff8b530618..a0795ef6b5ac7923d2f2f0555c3c6125e4b679cb 100644 (file)
 #define SIZEOF_INT 4
 
 /* Define to sizeof(char *) */
-/* XXX: patch it */
-#define SIZEOF_CHAR_P 4
+#define SIZEOF_CHAR_P (HOST_LONG_BITS / 8)
 
 /* Define if you have random() */
 #undef HAVE_RANDOM
index aefa0b749b931f7012035955b5edef8c4490fec9..079c54353442740fadb8fcc6d3a32d26d29abfdf 100644 (file)
@@ -420,10 +420,16 @@ struct talk_request {
 #endif
        
 struct cu_header {
-       char    dest[8];
-       short   family;
-       u_short port;
-       u_long  addr;
+       uint16_t        d_family;               // destination family
+       uint16_t        d_port;                 // destination port
+       uint32_t        d_addr;                 // destination address
+       uint16_t        s_family;               // source family
+       uint16_t        s_port;                 // source port
+       uint32_t        s_addr;                 // source address
+       uint32_t        seqn;                   // sequence number
+       uint16_t        message;                // message
+       uint16_t        data_type;              // data type
+       uint16_t        pkt_len;                // packet length
 } *cu_head;
 
        switch(so->so_emu) {
@@ -610,8 +616,8 @@ struct cu_header {
                        if (getsockname(so->s, (struct sockaddr *)&addr, &addrlen) < 0)
                                return;
                        cu_head = mtod(m, struct cu_header *);
-                       cu_head->port = addr.sin_port;
-                       cu_head->addr = (u_long) our_addr.s_addr;
+                       cu_head->s_port = addr.sin_port;
+                       cu_head->s_addr = our_addr.s_addr;
                }
                
                return;
index 195b1bfff35dce466f7da7e04ebec655464131eb..24c11bbf735f7e564679aca230402fe711463b02 100644 (file)
@@ -94,6 +94,7 @@ struct udpstat {
 
 extern struct udpstat udpstat;
 extern struct socket udb;
+struct mbuf;
 
 void udp_init _P((void));
 void udp_input _P((register struct mbuf *, int));