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 | 238 | |
| 239 | 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 | 243 | if (bp->bp_op == BOOTP_REQUEST) { |
| 244 | 244 | bootp_reply(bp); | ... | ... |
slirp/bootp.h
| ... | ... | @@ -97,9 +97,9 @@ struct bootp_t { |
| 97 | 97 | uint8_t bp_htype; |
| 98 | 98 | uint8_t bp_hlen; |
| 99 | 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 | 103 | struct in_addr bp_ciaddr; |
| 104 | 104 | struct in_addr bp_yiaddr; |
| 105 | 105 | struct in_addr bp_siaddr; | ... | ... |
slirp/ip_icmp.h
| ... | ... | @@ -83,8 +83,8 @@ struct icmp { |
| 83 | 83 | struct ip idi_ip; |
| 84 | 84 | /* options and then 64 bits of data */ |
| 85 | 85 | } id_ip; |
| 86 | - u_long id_mask; | |
| 87 | - char id_data[1]; | |
| 86 | + uint32_t id_mask; | |
| 87 | + char id_data[1]; | |
| 88 | 88 | } icmp_dun; |
| 89 | 89 | #define icmp_otime icmp_dun.id_ts.its_otime |
| 90 | 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 | 9 | #include <arpa/inet.h> |
| 10 | 10 | #endif |
| 11 | 11 | |
| 12 | +#ifdef __cplusplus | |
| 13 | +extern "C" { | |
| 14 | +#endif | |
| 15 | + | |
| 12 | 16 | void slirp_init(void); |
| 13 | 17 | |
| 14 | 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 | 33 | |
| 30 | 34 | extern const char *tftp_prefix; |
| 31 | 35 | |
| 36 | +#ifdef __cplusplus | |
| 37 | +} | |
| 38 | +#endif | |
| 39 | + | |
| 32 | 40 | #endif | ... | ... |
slirp/slirp_config.h
slirp/udp.c
| ... | ... | @@ -420,10 +420,16 @@ struct talk_request { |
| 420 | 420 | #endif |
| 421 | 421 | |
| 422 | 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 | 433 | } *cu_head; |
| 428 | 434 | |
| 429 | 435 | switch(so->so_emu) { |
| ... | ... | @@ -610,8 +616,8 @@ struct cu_header { |
| 610 | 616 | if (getsockname(so->s, (struct sockaddr *)&addr, &addrlen) < 0) |
| 611 | 617 | return; |
| 612 | 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 | 623 | return; | ... | ... |