qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 1/2] slirp: clean up conflicts with system headers
Date: Thu, 22 Mar 2012 20:24:21 +0100	[thread overview]
Message-ID: <4F6B7C65.6080201@redhat.com> (raw)
In-Reply-To: <4F6B38CB.8080400@siemens.com>

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	other threads:[~2012-03-22 19:24 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-22  0:02 [Qemu-devel] [PATCH 0/2] slirp: remove fd_block/fd_nonblock Paolo Bonzini
2012-03-22  0:02 ` [Qemu-devel] [PATCH 1/2] slirp: clean up conflicts with system headers Paolo Bonzini
2012-03-22 14:35   ` Jan Kiszka
2012-03-22 19:24     ` Paolo Bonzini [this message]
2012-03-23  9:00       ` Jan Kiszka
2012-03-22  0:02 ` [Qemu-devel] [PATCH 2/2] slirp: use socket_set_nonblock Paolo Bonzini
2012-03-28 18:47 ` [Qemu-devel] [PATCH 0/2] slirp: remove fd_block/fd_nonblock Jan Kiszka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F6B7C65.6080201@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).