[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/2] slirp: clean up conflicts with system heade
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 1/2] slirp: clean up conflicts with system headers |
Date: |
Thu, 22 Mar 2012 20:24:21 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:10.0.1) Gecko/20120216 Thunderbird/10.0.1 |
Il 22/03/2012 15:35, Jan Kiszka ha scritto:
>> @@ -167,9 +164,6 @@ int inet_aton(const char *cp, struct in_addr *ia);
>> #include "bootp.h"
>> #include "tftp.h"
>>
>> -/* osdep.c */
>> -int qemu_socket(int domain, int type, int protocol);
>> -
>> #define ETH_ALEN 6
>> #define ETH_HLEN 14
>>
>> diff --git a/slirp/tcp.h b/slirp/tcp.h
>> index b3817cb..8299603 100644
>> --- a/slirp/tcp.h
>> +++ b/slirp/tcp.h
>> @@ -45,6 +45,7 @@ typedef uint32_t tcp_seq;
>> * TCP header.
>> * Per RFC 793, September, 1981.
>> */
>> +#define tcphdr slirp_tcphdr
>
> Nice :). What about s/tcphdr/bsd_tcphdr/ or so for all slirp files?
Well, we have a precedent here:
/* Avoid conflicting with the libc insque() and remque(), which
have different prototypes. */
#define insque slirp_insque
#define remque slirp_remque
> Even better would be enabling slirp to use an existing declaration. But that
> looks trickier in first sight.
Yep, especially with no Autoconf.
>> struct tcphdr {
>> uint16_t th_sport; /* source port */
>> uint16_t th_dport; /* destination port */
>> @@ -58,12 +59,6 @@ struct tcphdr {
>> th_off:4; /* data offset */
>> #endif
>> uint8_t th_flags;
>> -#define TH_FIN 0x01
>> -#define TH_SYN 0x02
>> -#define TH_RST 0x04
>> -#define TH_PUSH 0x08
>> -#define TH_ACK 0x10
>> -#define TH_URG 0x20
>> uint16_t th_win; /* window */
>> uint16_t th_sum; /* checksum */
>> uint16_t th_urp; /* urgent pointer */
>> @@ -71,6 +66,16 @@ struct tcphdr {
>>
>> #include "tcp_var.h"
>>
>> +#ifndef TH_FIN
>> +#define TH_FIN 0x01
>> +#define TH_SYN 0x02
>> +#define TH_RST 0x04
>> +#define TH_PUSH 0x08
>> +#define TH_ACK 0x10
>> +#define TH_URG 0x20
>> +#endif
>> +
>> +#ifndef TCPOPT_EOL
>> #define TCPOPT_EOL 0
>> #define TCPOPT_NOP 1
>> #define TCPOPT_MAXSEG 2
>> @@ -86,6 +91,7 @@ struct tcphdr {
>>
>> #define TCPOPT_TSTAMP_HDR \
>> (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
>> +#endif
>
> Is there no portable header that offers those defines for us?
That would be netinet/tcp.h, but the problem is that there are some
differences. For example TCP_MSS is usually 512.
BTW the same could happen for ip.h, it's only that we never include it.
We need to include netinet/tcp.h outside slirp for TCP_NODELAY.
>> /*
>> * Default maximum segment size for TCP.
>> @@ -95,10 +101,13 @@ struct tcphdr {
>> *
>> * We make this 1460 because we only care about Ethernet in the qemu
>> context.
>> */
>> +#undef TCP_MSS
>> #define TCP_MSS 1460
>>
>> +#undef TCP_MAXWIN
>> #define TCP_MAXWIN 65535 /* largest value for (unscaled) window
>> */
>>
>> +#undef TCP_MAX_WINSHIFT
>> #define TCP_MAX_WINSHIFT 14 /* maximum window shift */
>>
>> /*
>
> Same here.
>
> The direction is appreciated a lot, but I'm measuring only a moderate
> overall hack-level reduction. ;)
Agreed, but one step at a time... this patch sticks to what it
promises, "clean up conflicts with system headers". :)
Paolo