qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]