Commit 101c59356292c30ed5c8f7138c7680b4dc3d4811
1 parent
b6853697
64 bit fixes (initial patch by Gwenole Beauchesne)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1458 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
7 changed files
with
28 additions
and
14 deletions
slirp/bootp.c
| @@ -238,7 +238,7 @@ static void bootp_reply(struct bootp_t *bp) | @@ -238,7 +238,7 @@ static void bootp_reply(struct bootp_t *bp) | ||
| 238 | 238 | ||
| 239 | void bootp_input(struct mbuf *m) | 239 | void bootp_input(struct mbuf *m) |
| 240 | { | 240 | { |
| 241 | - struct bootp_t *bp = (struct bootp_t *)m->m_data; | 241 | + struct bootp_t *bp = mtod(m, struct bootp_t *); |
| 242 | 242 | ||
| 243 | if (bp->bp_op == BOOTP_REQUEST) { | 243 | if (bp->bp_op == BOOTP_REQUEST) { |
| 244 | bootp_reply(bp); | 244 | bootp_reply(bp); |
slirp/bootp.h
| @@ -97,9 +97,9 @@ struct bootp_t { | @@ -97,9 +97,9 @@ struct bootp_t { | ||
| 97 | uint8_t bp_htype; | 97 | uint8_t bp_htype; |
| 98 | uint8_t bp_hlen; | 98 | uint8_t bp_hlen; |
| 99 | uint8_t bp_hops; | 99 | uint8_t bp_hops; |
| 100 | - unsigned long bp_xid; | ||
| 101 | - unsigned short bp_secs; | ||
| 102 | - unsigned short unused; | 100 | + uint32_t bp_xid; |
| 101 | + uint16_t bp_secs; | ||
| 102 | + uint16_t unused; | ||
| 103 | struct in_addr bp_ciaddr; | 103 | struct in_addr bp_ciaddr; |
| 104 | struct in_addr bp_yiaddr; | 104 | struct in_addr bp_yiaddr; |
| 105 | struct in_addr bp_siaddr; | 105 | struct in_addr bp_siaddr; |
slirp/ip_icmp.h
| @@ -83,8 +83,8 @@ struct icmp { | @@ -83,8 +83,8 @@ struct icmp { | ||
| 83 | struct ip idi_ip; | 83 | struct ip idi_ip; |
| 84 | /* options and then 64 bits of data */ | 84 | /* options and then 64 bits of data */ |
| 85 | } id_ip; | 85 | } id_ip; |
| 86 | - u_long id_mask; | ||
| 87 | - char id_data[1]; | 86 | + uint32_t id_mask; |
| 87 | + char id_data[1]; | ||
| 88 | } icmp_dun; | 88 | } icmp_dun; |
| 89 | #define icmp_otime icmp_dun.id_ts.its_otime | 89 | #define icmp_otime icmp_dun.id_ts.its_otime |
| 90 | #define icmp_rtime icmp_dun.id_ts.its_rtime | 90 | #define icmp_rtime icmp_dun.id_ts.its_rtime |
slirp/libslirp.h
| @@ -9,6 +9,10 @@ int inet_aton(const char *cp, struct in_addr *ia); | @@ -9,6 +9,10 @@ int inet_aton(const char *cp, struct in_addr *ia); | ||
| 9 | #include <arpa/inet.h> | 9 | #include <arpa/inet.h> |
| 10 | #endif | 10 | #endif |
| 11 | 11 | ||
| 12 | +#ifdef __cplusplus | ||
| 13 | +extern "C" { | ||
| 14 | +#endif | ||
| 15 | + | ||
| 12 | void slirp_init(void); | 16 | void slirp_init(void); |
| 13 | 17 | ||
| 14 | void slirp_select_fill(int *pnfds, | 18 | void slirp_select_fill(int *pnfds, |
| @@ -29,4 +33,8 @@ int slirp_add_exec(int do_pty, const char *args, int addr_low_byte, | @@ -29,4 +33,8 @@ int slirp_add_exec(int do_pty, const char *args, int addr_low_byte, | ||
| 29 | 33 | ||
| 30 | extern const char *tftp_prefix; | 34 | extern const char *tftp_prefix; |
| 31 | 35 | ||
| 36 | +#ifdef __cplusplus | ||
| 37 | +} | ||
| 38 | +#endif | ||
| 39 | + | ||
| 32 | #endif | 40 | #endif |
slirp/slirp_config.h
| @@ -149,8 +149,7 @@ | @@ -149,8 +149,7 @@ | ||
| 149 | #define SIZEOF_INT 4 | 149 | #define SIZEOF_INT 4 |
| 150 | 150 | ||
| 151 | /* Define to sizeof(char *) */ | 151 | /* Define to sizeof(char *) */ |
| 152 | -/* XXX: patch it */ | ||
| 153 | -#define SIZEOF_CHAR_P 4 | 152 | +#define SIZEOF_CHAR_P (HOST_LONG_BITS / 8) |
| 154 | 153 | ||
| 155 | /* Define if you have random() */ | 154 | /* Define if you have random() */ |
| 156 | #undef HAVE_RANDOM | 155 | #undef HAVE_RANDOM |
slirp/udp.c
| @@ -420,10 +420,16 @@ struct talk_request { | @@ -420,10 +420,16 @@ struct talk_request { | ||
| 420 | #endif | 420 | #endif |
| 421 | 421 | ||
| 422 | struct cu_header { | 422 | struct cu_header { |
| 423 | - char dest[8]; | ||
| 424 | - short family; | ||
| 425 | - u_short port; | ||
| 426 | - u_long addr; | 423 | + uint16_t d_family; // destination family |
| 424 | + uint16_t d_port; // destination port | ||
| 425 | + uint32_t d_addr; // destination address | ||
| 426 | + uint16_t s_family; // source family | ||
| 427 | + uint16_t s_port; // source port | ||
| 428 | + uint32_t s_addr; // source address | ||
| 429 | + uint32_t seqn; // sequence number | ||
| 430 | + uint16_t message; // message | ||
| 431 | + uint16_t data_type; // data type | ||
| 432 | + uint16_t pkt_len; // packet length | ||
| 427 | } *cu_head; | 433 | } *cu_head; |
| 428 | 434 | ||
| 429 | switch(so->so_emu) { | 435 | switch(so->so_emu) { |
| @@ -610,8 +616,8 @@ struct cu_header { | @@ -610,8 +616,8 @@ struct cu_header { | ||
| 610 | if (getsockname(so->s, (struct sockaddr *)&addr, &addrlen) < 0) | 616 | if (getsockname(so->s, (struct sockaddr *)&addr, &addrlen) < 0) |
| 611 | return; | 617 | return; |
| 612 | cu_head = mtod(m, struct cu_header *); | 618 | cu_head = mtod(m, struct cu_header *); |
| 613 | - cu_head->port = addr.sin_port; | ||
| 614 | - cu_head->addr = (u_long) our_addr.s_addr; | 619 | + cu_head->s_port = addr.sin_port; |
| 620 | + cu_head->s_addr = our_addr.s_addr; | ||
| 615 | } | 621 | } |
| 616 | 622 | ||
| 617 | return; | 623 | return; |
slirp/udp.h
| @@ -94,6 +94,7 @@ struct udpstat { | @@ -94,6 +94,7 @@ struct udpstat { | ||
| 94 | 94 | ||
| 95 | extern struct udpstat udpstat; | 95 | extern struct udpstat udpstat; |
| 96 | extern struct socket udb; | 96 | extern struct socket udb; |
| 97 | +struct mbuf; | ||
| 97 | 98 | ||
| 98 | void udp_init _P((void)); | 99 | void udp_init _P((void)); |
| 99 | void udp_input _P((register struct mbuf *, int)); | 100 | void udp_input _P((register struct mbuf *, int)); |