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; | ... | ... |