diff options
-rw-r--r-- | slirp/bootp.c | 2 | ||||
-rw-r--r-- | slirp/bootp.h | 6 | ||||
-rw-r--r-- | slirp/ip_icmp.h | 4 | ||||
-rw-r--r-- | slirp/libslirp.h | 8 | ||||
-rw-r--r-- | slirp/slirp_config.h | 3 | ||||
-rw-r--r-- | slirp/udp.c | 18 | ||||
-rw-r--r-- | slirp/udp.h | 1 |
7 files changed, 28 insertions, 14 deletions
diff --git a/slirp/bootp.c b/slirp/bootp.c index 56caf70..9f0652f 100644 --- a/slirp/bootp.c +++ b/slirp/bootp.c @@ -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); diff --git a/slirp/bootp.h b/slirp/bootp.h index d3b2baa..e48f53f 100644 --- a/slirp/bootp.h +++ b/slirp/bootp.h @@ -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; diff --git a/slirp/ip_icmp.h b/slirp/ip_icmp.h index 7ddaaf8..8c9b5a1 100644 --- a/slirp/ip_icmp.h +++ b/slirp/ip_icmp.h @@ -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 diff --git a/slirp/libslirp.h b/slirp/libslirp.h index 6a54eb1..cff159e 100644 --- a/slirp/libslirp.h +++ b/slirp/libslirp.h @@ -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 diff --git a/slirp/slirp_config.h b/slirp/slirp_config.h index 856c315..a0795ef 100644 --- a/slirp/slirp_config.h +++ b/slirp/slirp_config.h @@ -149,8 +149,7 @@ #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 diff --git a/slirp/udp.c b/slirp/udp.c index aefa0b7..079c543 100644 --- a/slirp/udp.c +++ b/slirp/udp.c @@ -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; diff --git a/slirp/udp.h b/slirp/udp.h index 195b1bf..24c11bb 100644 --- a/slirp/udp.h +++ b/slirp/udp.h @@ -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)); |