* [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
@ 2011-08-05 20:09 Kenneth Salerno
2011-08-05 20:46 ` Blue Swirl
0 siblings, 1 reply; 10+ messages in thread
From: Kenneth Salerno @ 2011-08-05 20:09 UTC (permalink / raw)
To: qemu-devel
Hi,
I'm not sure if any defaults (build or runtime) have changed since 0.14.1, but I can no longer get the following to work anymore for QEMU versions 0.15.0-rc2 or recent development builds:
-device e1000,netdev=mynet0 -netdev type=user,id=mynet0 ...
Works great in 0.14.1 however.
>From the QEMU console, "info networking" shows the NIC e1000 and the VLAN correctly setup, the guest (RHEL 6.1 x86_64) has its NIC recognized and networking setup, just can't seem to communicate with the gateway (10.0.2.2). The only difference I see in the console is cosmetic (restricted=off rather than restricted=n).
Host OS: Windows XP
Build env: i686-pc-mingw32-gcc 4.5.2, binutils 2.21.53.20110731 i386pe
Runtime env: Cygwin 1.7.9 2011-03-29, SDL 1.2.14, mingw32-glib 2.28.1-1,
mingw32-gettext 0.18.1-2
Guest OS: RHEL 6.1
Is it just me?
Thanks,
Ken
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
2011-08-05 20:09 [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host Kenneth Salerno
@ 2011-08-05 20:46 ` Blue Swirl
2011-08-05 21:43 ` Jan Kiszka
2011-08-06 3:25 ` TeLeMan
0 siblings, 2 replies; 10+ messages in thread
From: Blue Swirl @ 2011-08-05 20:46 UTC (permalink / raw)
To: Kenneth Salerno, Jan Kiszka; +Cc: qemu-devel
On Fri, Aug 5, 2011 at 8:09 PM, Kenneth Salerno
<kennethsalerno@yahoo.com> wrote:
> Hi,
>
> I'm not sure if any defaults (build or runtime) have changed since 0.14.1, but I can no longer get the following to work anymore for QEMU versions 0.15.0-rc2 or recent development builds:
>
> -device e1000,netdev=mynet0 -netdev type=user,id=mynet0 ...
>
> Works great in 0.14.1 however.
>
> From the QEMU console, "info networking" shows the NIC e1000 and the VLAN correctly setup, the guest (RHEL 6.1 x86_64) has its NIC recognized and networking setup, just can't seem to communicate with the gateway (10.0.2.2). The only difference I see in the console is cosmetic (restricted=off rather than restricted=n).
>
> Host OS: Windows XP
> Build env: i686-pc-mingw32-gcc 4.5.2, binutils 2.21.53.20110731 i386pe
> Runtime env: Cygwin 1.7.9 2011-03-29, SDL 1.2.14, mingw32-glib 2.28.1-1,
> mingw32-gettext 0.18.1-2
> Guest OS: RHEL 6.1
>
> Is it just me?
No, this is fallout from glib use:
http://lists.nongnu.org/archive/html/qemu-devel/2011-08/msg00134.html
The fix is to rewrite structures without using GCC bit fields.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
2011-08-05 20:46 ` Blue Swirl
@ 2011-08-05 21:43 ` Jan Kiszka
2011-08-05 23:17 ` Kenneth Salerno
2011-08-06 3:25 ` TeLeMan
1 sibling, 1 reply; 10+ messages in thread
From: Jan Kiszka @ 2011-08-05 21:43 UTC (permalink / raw)
To: Blue Swirl, Kenneth Salerno; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 2775 bytes --]
On 2011-08-05 22:46, Blue Swirl wrote:
> On Fri, Aug 5, 2011 at 8:09 PM, Kenneth Salerno
> <kennethsalerno@yahoo.com> wrote:
>> Hi,
>>
>> I'm not sure if any defaults (build or runtime) have changed since 0.14.1, but I can no longer get the following to work anymore for QEMU versions 0.15.0-rc2 or recent development builds:
>>
>> -device e1000,netdev=mynet0 -netdev type=user,id=mynet0 ...
>>
>> Works great in 0.14.1 however.
>>
>> From the QEMU console, "info networking" shows the NIC e1000 and the VLAN correctly setup, the guest (RHEL 6.1 x86_64) has its NIC recognized and networking setup, just can't seem to communicate with the gateway (10.0.2.2). The only difference I see in the console is cosmetic (restricted=off rather than restricted=n).
>>
>> Host OS: Windows XP
>> Build env: i686-pc-mingw32-gcc 4.5.2, binutils 2.21.53.20110731 i386pe
>> Runtime env: Cygwin 1.7.9 2011-03-29, SDL 1.2.14, mingw32-glib 2.28.1-1,
>> mingw32-gettext 0.18.1-2
>> Guest OS: RHEL 6.1
>>
>> Is it just me?
>
> No, this is fallout from glib use:
> http://lists.nongnu.org/archive/html/qemu-devel/2011-08/msg00134.html
>
> The fix is to rewrite structures without using GCC bit fields.
Does this help?
diff --git a/slirp/ip.h b/slirp/ip.h
index 48ea38e..72dbe9a 100644
--- a/slirp/ip.h
+++ b/slirp/ip.h
@@ -74,10 +74,10 @@ typedef uint32_t n_long; /* long as received from the net */
*/
struct ip {
#ifdef HOST_WORDS_BIGENDIAN
- u_int ip_v:4, /* version */
+ uint8_t ip_v:4, /* version */
ip_hl:4; /* header length */
#else
- u_int ip_hl:4, /* header length */
+ uint8_t ip_hl:4, /* header length */
ip_v:4; /* version */
#endif
uint8_t ip_tos; /* type of service */
@@ -140,10 +140,10 @@ struct ip_timestamp {
uint8_t ipt_len; /* size of structure (variable) */
uint8_t ipt_ptr; /* index of current entry */
#ifdef HOST_WORDS_BIGENDIAN
- u_int ipt_oflw:4, /* overflow counter */
+ uint8_t ipt_oflw:4, /* overflow counter */
ipt_flg:4; /* flags, see below */
#else
- u_int ipt_flg:4, /* flags, see below */
+ uint8_t ipt_flg:4, /* flags, see below */
ipt_oflw:4; /* overflow counter */
#endif
union ipt_timestamp {
diff --git a/slirp/tcp.h b/slirp/tcp.h
index 9d06836..b3817cb 100644
--- a/slirp/tcp.h
+++ b/slirp/tcp.h
@@ -51,10 +51,10 @@ struct tcphdr {
tcp_seq th_seq; /* sequence number */
tcp_seq th_ack; /* acknowledgement number */
#ifdef HOST_WORDS_BIGENDIAN
- u_int th_off:4, /* data offset */
+ uint8_t th_off:4, /* data offset */
th_x2:4; /* (unused) */
#else
- u_int th_x2:4, /* (unused) */
+ uint8_t th_x2:4, /* (unused) */
th_off:4; /* data offset */
#endif
uint8_t th_flags;
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
2011-08-05 21:43 ` Jan Kiszka
@ 2011-08-05 23:17 ` Kenneth Salerno
2011-08-06 7:31 ` Stefan Weil
0 siblings, 1 reply; 10+ messages in thread
From: Kenneth Salerno @ 2011-08-05 23:17 UTC (permalink / raw)
To: Blue Swirl, Jan Kiszka; +Cc: qemu-devel
--- On Fri, 8/5/11, Jan Kiszka <jan.kiszka@web.de> wrote:
> From: Jan Kiszka <jan.kiszka@web.de>
> Subject: Re: 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
> To: "Blue Swirl" <blauwirbel@gmail.com>, "Kenneth Salerno" <kennethsalerno@yahoo.com>
> Cc: qemu-devel@nongnu.org
> Date: Friday, August 5, 2011, 5:43 PM
> On 2011-08-05 22:46, Blue Swirl
> wrote:
> > On Fri, Aug 5, 2011 at 8:09 PM, Kenneth Salerno
> > <kennethsalerno@yahoo.com>
> wrote:
> >> Hi,
> >>
> >> I'm not sure if any defaults (build or runtime)
> have changed since 0.14.1, but I can no longer get the
> following to work anymore for QEMU versions 0.15.0-rc2 or
> recent development builds:
> >>
> >> -device e1000,netdev=mynet0 -netdev
> type=user,id=mynet0 ...
> >>
> >> Works great in 0.14.1 however.
> >>
> >> From the QEMU console, "info networking" shows the
> NIC e1000 and the VLAN correctly setup, the guest (RHEL 6.1
> x86_64) has its NIC recognized and networking setup, just
> can't seem to communicate with the gateway (10.0.2.2). The
> only difference I see in the console is cosmetic
> (restricted=off rather than restricted=n).
> >>
> >> Host OS: Windows XP
> >> Build env: i686-pc-mingw32-gcc 4.5.2, binutils
> 2.21.53.20110731 i386pe
> >> Runtime env: Cygwin 1.7.9 2011-03-29, SDL 1.2.14,
> mingw32-glib 2.28.1-1,
> >>
> mingw32-gettext 0.18.1-2
> >> Guest OS: RHEL 6.1
> >>
> >> Is it just me?
> >
> > No, this is fallout from glib use:
> > http://lists.nongnu.org/archive/html/qemu-devel/2011-08/msg00134.html
> >
> > The fix is to rewrite structures without using GCC bit
> fields.
>
> Does this help?
>
> diff --git a/slirp/ip.h b/slirp/ip.h
> index 48ea38e..72dbe9a 100644
> --- a/slirp/ip.h
> +++ b/slirp/ip.h
> @@ -74,10 +74,10 @@ typedef uint32_t n_long;
> /* long
> as received from the net */
> */
> struct ip {
> #ifdef HOST_WORDS_BIGENDIAN
> - u_int ip_v:4,
> /* version */
> + uint8_t ip_v:4,
> /* version */
>
> ip_hl:4; /* header
> length */
> #else
> - u_int ip_hl:4,
> /* header length */
> + uint8_t ip_hl:4,
> /* header length */
>
> ip_v:4;
> /* version */
> #endif
> uint8_t
> ip_tos;
> /* type of service */
> @@ -140,10 +140,10 @@ struct ip_timestamp
> {
> uint8_t
> ipt_len; /* size of
> structure (variable) */
> uint8_t
> ipt_ptr; /* index of
> current entry */
> #ifdef HOST_WORDS_BIGENDIAN
> - u_int
> ipt_oflw:4, /* overflow
> counter */
> + uint8_t
> ipt_oflw:4, /* overflow
> counter */
>
> ipt_flg:4; /* flags,
> see below */
> #else
> - u_int
> ipt_flg:4, /* flags,
> see below */
> + uint8_t
> ipt_flg:4, /* flags,
> see below */
>
> ipt_oflw:4; /* overflow
> counter */
> #endif
> union ipt_timestamp {
> diff --git a/slirp/tcp.h b/slirp/tcp.h
> index 9d06836..b3817cb 100644
> --- a/slirp/tcp.h
> +++ b/slirp/tcp.h
> @@ -51,10 +51,10 @@ struct tcphdr {
> tcp_seq
> th_seq;
> /* sequence number */
> tcp_seq
> th_ack;
> /* acknowledgement number */
> #ifdef HOST_WORDS_BIGENDIAN
> - u_int
> th_off:4, /* data
> offset */
> + uint8_t
> th_off:4, /* data
> offset */
>
> th_x2:4; /* (unused)
> */
> #else
> - u_int
> th_x2:4, /* (unused)
> */
> + uint8_t
> th_x2:4, /* (unused)
> */
>
> th_off:4; /* data
> offset */
> #endif
> uint8_t th_flags;
>
> Jan
>
>
With this patch it gets caught up in tcg/tcg.c line 1646:
if (ts->val_type == TEMP_VAL_REG)
...
else if (ts->val_type == TEMP_VAL_MEM)
...
else if (ts->val_type == TEMP_VAL_CONST)
....
} else { <------- we get here by changing unsigned int to unsigned character
tcg_abort();
}
Output from QEMU:
/home/kens/cross-compile/qemu/testing/qemu/tcg/tcg.c:1646: tcg fatal error
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Thanks,
Ken
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
2011-08-05 20:46 ` Blue Swirl
2011-08-05 21:43 ` Jan Kiszka
@ 2011-08-06 3:25 ` TeLeMan
2011-08-06 13:33 ` Anthony Liguori
1 sibling, 1 reply; 10+ messages in thread
From: TeLeMan @ 2011-08-06 3:25 UTC (permalink / raw)
To: Blue Swirl; +Cc: Jan Kiszka, Kenneth Salerno, qemu-devel
On Sat, Aug 6, 2011 at 04:46, Blue Swirl <blauwirbel@gmail.com> wrote:
> On Fri, Aug 5, 2011 at 8:09 PM, Kenneth Salerno
> <kennethsalerno@yahoo.com> wrote:
>> Hi,
>>
>> I'm not sure if any defaults (build or runtime) have changed since 0.14.1, but I can no longer get the following to work anymore for QEMU versions 0.15.0-rc2 or recent development builds:
>>
>> -device e1000,netdev=mynet0 -netdev type=user,id=mynet0 ...
>>
>> Works great in 0.14.1 however.
>>
>> From the QEMU console, "info networking" shows the NIC e1000 and the VLAN correctly setup, the guest (RHEL 6.1 x86_64) has its NIC recognized and networking setup, just can't seem to communicate with the gateway (10.0.2.2). The only difference I see in the console is cosmetic (restricted=off rather than restricted=n).
>>
>> Host OS: Windows XP
>> Build env: i686-pc-mingw32-gcc 4.5.2, binutils 2.21.53.20110731 i386pe
>> Runtime env: Cygwin 1.7.9 2011-03-29, SDL 1.2.14, mingw32-glib 2.28.1-1,
>> mingw32-gettext 0.18.1-2
>> Guest OS: RHEL 6.1
>>
>> Is it just me?
>
> No, this is fallout from glib use:
> http://lists.nongnu.org/archive/html/qemu-devel/2011-08/msg00134.html
>
> The fix is to rewrite structures without using GCC bit fields.
-mms-bitfields affects all byte-alignments in a structure. For example,
struct s
{
uint8_t a;
uint32_t b;
} __attribute__((packed));
sizeof(s) is 5 without -mms-bitfields but sizeof(s) is 8 with -mms-bitfields.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
2011-08-05 23:17 ` Kenneth Salerno
@ 2011-08-06 7:31 ` Stefan Weil
0 siblings, 0 replies; 10+ messages in thread
From: Stefan Weil @ 2011-08-06 7:31 UTC (permalink / raw)
To: Kenneth Salerno; +Cc: Blue Swirl, Jan Kiszka, qemu-devel
Am 06.08.2011 01:17, schrieb Kenneth Salerno:
> With this patch it gets caught up in tcg/tcg.c line 1646:
>
> if (ts->val_type == TEMP_VAL_REG)
> ...
> else if (ts->val_type == TEMP_VAL_MEM)
> ...
> else if (ts->val_type == TEMP_VAL_CONST)
> ....
> } else { <------- we get here by changing unsigned int to unsigned
> character
> tcg_abort();
> }
>
>
>
> Output from QEMU:
>
> /home/kens/cross-compile/qemu/testing/qemu/tcg/tcg.c:1646: tcg fatal error
>
> This application has requested the Runtime to terminate it in an
> unusual way.
> Please contact the application's support team for more information.
>
> Thanks,
> Ken
That's a different issue. Read more here:
http://lists.nongnu.org/archive/html/qemu-devel/2011-08/msg00758.html
http://lists.nongnu.org/archive/html/qemu-devel/2011-08/msg00797.html
Regards,
Stefan
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
2011-08-06 3:25 ` TeLeMan
@ 2011-08-06 13:33 ` Anthony Liguori
2011-08-06 14:35 ` Blue Swirl
0 siblings, 1 reply; 10+ messages in thread
From: Anthony Liguori @ 2011-08-06 13:33 UTC (permalink / raw)
To: TeLeMan; +Cc: Blue Swirl, Jan Kiszka, Kenneth Salerno, qemu-devel
On 08/05/2011 10:25 PM, TeLeMan wrote:
> On Sat, Aug 6, 2011 at 04:46, Blue Swirl<blauwirbel@gmail.com> wrote:
>> On Fri, Aug 5, 2011 at 8:09 PM, Kenneth Salerno
>> <kennethsalerno@yahoo.com> wrote:
>>> Hi,
>>>
>>> I'm not sure if any defaults (build or runtime) have changed since 0.14.1, but I can no longer get the following to work anymore for QEMU versions 0.15.0-rc2 or recent development builds:
>>>
>>> -device e1000,netdev=mynet0 -netdev type=user,id=mynet0 ...
>>>
>>> Works great in 0.14.1 however.
>>>
>>> From the QEMU console, "info networking" shows the NIC e1000 and the VLAN correctly setup, the guest (RHEL 6.1 x86_64) has its NIC recognized and networking setup, just can't seem to communicate with the gateway (10.0.2.2). The only difference I see in the console is cosmetic (restricted=off rather than restricted=n).
>>>
>>> Host OS: Windows XP
>>> Build env: i686-pc-mingw32-gcc 4.5.2, binutils 2.21.53.20110731 i386pe
>>> Runtime env: Cygwin 1.7.9 2011-03-29, SDL 1.2.14, mingw32-glib 2.28.1-1,
>>> mingw32-gettext 0.18.1-2
>>> Guest OS: RHEL 6.1
>>>
>>> Is it just me?
>>
>> No, this is fallout from glib use:
>> http://lists.nongnu.org/archive/html/qemu-devel/2011-08/msg00134.html
>>
>> The fix is to rewrite structures without using GCC bit fields.
>
> -mms-bitfields affects all byte-alignments in a structure. For example,
> struct s
> {
> uint8_t a;
> uint32_t b;
> } __attribute__((packed));
>
> sizeof(s) is 5 without -mms-bitfields but sizeof(s) is 8 with -mms-bitfields.
If you can identify the offending structs, you can do:
#pragma pack(push,1)
struct s
{
uint8_t a;
uint32_t b;
} __attribute__((packed));
#pragma pack(pop)
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
2011-08-06 13:33 ` Anthony Liguori
@ 2011-08-06 14:35 ` Blue Swirl
2012-02-01 22:16 ` Kenneth Salerno
0 siblings, 1 reply; 10+ messages in thread
From: Blue Swirl @ 2011-08-06 14:35 UTC (permalink / raw)
To: Anthony Liguori, Jan Kiszka; +Cc: TeLeMan, Kenneth Salerno, qemu-devel
On Sat, Aug 6, 2011 at 1:33 PM, Anthony Liguori <anthony@codemonkey.ws> wrote:
> On 08/05/2011 10:25 PM, TeLeMan wrote:
>>
>> On Sat, Aug 6, 2011 at 04:46, Blue Swirl<blauwirbel@gmail.com> wrote:
>>>
>>> On Fri, Aug 5, 2011 at 8:09 PM, Kenneth Salerno
>>> <kennethsalerno@yahoo.com> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I'm not sure if any defaults (build or runtime) have changed since
>>>> 0.14.1, but I can no longer get the following to work anymore for QEMU
>>>> versions 0.15.0-rc2 or recent development builds:
>>>>
>>>> -device e1000,netdev=mynet0 -netdev type=user,id=mynet0 ...
>>>>
>>>> Works great in 0.14.1 however.
>>>>
>>>> From the QEMU console, "info networking" shows the NIC e1000 and the
>>>> VLAN correctly setup, the guest (RHEL 6.1 x86_64) has its NIC recognized and
>>>> networking setup, just can't seem to communicate with the gateway
>>>> (10.0.2.2). The only difference I see in the console is cosmetic
>>>> (restricted=off rather than restricted=n).
>>>>
>>>> Host OS: Windows XP
>>>> Build env: i686-pc-mingw32-gcc 4.5.2, binutils 2.21.53.20110731 i386pe
>>>> Runtime env: Cygwin 1.7.9 2011-03-29, SDL 1.2.14, mingw32-glib 2.28.1-1,
>>>> mingw32-gettext 0.18.1-2
>>>> Guest OS: RHEL 6.1
>>>>
>>>> Is it just me?
>>>
>>> No, this is fallout from glib use:
>>> http://lists.nongnu.org/archive/html/qemu-devel/2011-08/msg00134.html
>>>
>>> The fix is to rewrite structures without using GCC bit fields.
>>
>> -mms-bitfields affects all byte-alignments in a structure. For example,
>> struct s
>> {
>> uint8_t a;
>> uint32_t b;
>> } __attribute__((packed));
>>
>> sizeof(s) is 5 without -mms-bitfields but sizeof(s) is 8 with
>> -mms-bitfields.
>
> If you can identify the offending structs, you can do:
>
> #pragma pack(push,1)
>
> struct s
> {
> uint8_t a;
> uint32_t b;
> } __attribute__((packed));
>
> #pragma pack(pop)
I grepped the tree for ((packed)). The only two places where bit
fields are used with packed structs are in SLIRP:
struct ip {
#ifdef HOST_WORDS_BIGENDIAN
u_int ip_v:4, /* version */
ip_hl:4; /* header length */
#else
u_int ip_hl:4, /* header length */
ip_v:4; /* version */
#endif
uint8_t ip_tos; /* type of service */
uint16_t ip_len; /* total length */
uint16_t ip_id; /* identification */
uint16_t ip_off; /* fragment offset field */
#define IP_DF 0x4000 /* don't fragment flag */
#define IP_MF 0x2000 /* more fragments flag */
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
uint8_t ip_ttl; /* time to live */
uint8_t ip_p; /* protocol */
uint16_t ip_sum; /* checksum */
struct in_addr ip_src,ip_dst; /* source and dest address */
} __attribute__((packed));
struct ip_timestamp {
uint8_t ipt_code; /* IPOPT_TS */
uint8_t ipt_len; /* size of structure (variable) */
uint8_t ipt_ptr; /* index of current entry */
#ifdef HOST_WORDS_BIGENDIAN
u_int ipt_oflw:4, /* overflow counter */
ipt_flg:4; /* flags, see below */
#else
u_int ipt_flg:4, /* flags, see below */
ipt_oflw:4; /* overflow counter */
#endif
union ipt_timestamp {
n_long ipt_time[1];
struct ipt_ta {
struct in_addr ipt_addr;
n_long ipt_time;
} ipt_ta[1];
} ipt_timestamp;
} __attribute__((packed));
I'd avoid the bit fields altogether in both cases, then also the
#ifdeffery could be removed.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
2011-08-06 14:35 ` Blue Swirl
@ 2012-02-01 22:16 ` Kenneth Salerno
2012-02-02 6:06 ` Stefan Weil
0 siblings, 1 reply; 10+ messages in thread
From: Kenneth Salerno @ 2012-02-01 22:16 UTC (permalink / raw)
To: Anthony Liguori, Jan Kiszka, Blue Swirl; +Cc: TeLeMan, qemu-devel
Hello,
While the patches fixed the pseudo ICMP between the guest (10.0.2.x) and the DHCP gateway (10.0.2.2), I have still never been able to get TCP/UDP working. I even tried compiling glib for MinGW32 without -mms-bitfields to force Qemu to build without taking this compiler flag from pkg-config, but I got the same results so I don't believe it's a packing issue this time. What is different about the way packets are constructed for ICMP versus actual TCP/UDP packets that leave the guest?
Here is a log I collected from the latest Git build as of 2012-02-01. The sequence was as follows: I ping 10.0.2.2 from 10.0.2.5, then I attempt a DNS lookup from nameserver 209.18.47.61:
arp_table_add...
ip = 0x502000a
hw addr = 52:54:00:12:34:56
arp_table_add...
ip = 0x502000a
hw addr = 52:54:00:12:34:56
m_get...
m = 5bd4f0b8
ip_input...
m = 5bd4f0b8
m_len = 84
icmp_input...
m = 5bd4f0b8
m_len = 84
icmp_type = 8
ip_output...
so = 0
m0 = 5bd4f0b8
if_output...
so = 0
ifm = 5bd4f0b8
if_start...
arp_table_search...
ip = 0x502000a
found hw addr = 52:54:00:12:34:56
m_free...
m = 5bd4f0b8
m_get...
m = 5bd4f0b8
ip_input...
m = 5bd4f0b8
m_len = 84
icmp_input...
m = 5bd4f0b8
m_len = 84
icmp_type = 8
ip_output...
so = 0
m0 = 5bd4f0b8
if_output...
so = 0
ifm = 5bd4f0b8
if_start...
arp_table_search...
ip = 0x502000a
found hw addr = 52:54:00:12:34:56
m_free...
m = 5bd4f0b8
arp_table_add...
ip = 0x502000a
hw addr = 52:54:00:12:34:56
m_get...
m = 5bd4f0b8
ip_input...
m = 5bd4f0b8
m_len = 55
udp_input...
m = 5bd4f0b8
iphlen = 20
sosendto...
so = 5bd104a0
m = 5bd4f0b8
sendto()ing, addr.sin_port=53, addr.sin_addr.s_addr=209.18.47.61
m_free...
m = 0
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
m_get...
m = 5bd4f728
ip_input...
m = 5bd4f728
m_len = 55
udp_input...
m = 5bd4f728
iphlen = 20
sosendto...
so = 5bd104a0
m = 5bd4f728
sendto()ing, addr.sin_port=53, addr.sin_addr.s_addr=209.18.47.61
m_free...
m = 5bd4f0b8
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
m_get...
m = 5bd4f0b8
ip_input...
m = 5bd4f0b8
m_len = 55
udp_input...
m = 5bd4f0b8
iphlen = 20
sosendto...
so = 5bd104a0
m = 5bd4f0b8
sendto()ing, addr.sin_port=53, addr.sin_addr.s_addr=209.18.47.61
m_free...
m = 5bd4f728
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
[repeated]
Another strange problem I've been having with newer builds from Git lately is I can only execute qemu-system-*.exe correctly from within gdb (i.e. "/usr/bin/gdb.exe ./i386-softmmu/qemu-system-i386.exe; gdb>run -L ./pc-bios"). If I run qemu-system-*.exe outside of gdb it will otherwise die complaining about exception code 0xc0000005 at address 0x000000007c91b21a in ntdll.dll... "--help" works though...
Any suggestions are appreciated. Thanks.
Ken
--- On Sat, 8/6/11, Blue Swirl <blauwirbel@gmail.com> wrote:
> From: Blue Swirl <blauwirbel@gmail.com>
> Subject: Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
> To: "Anthony Liguori" <anthony@codemonkey.ws>, "Jan Kiszka" <jan.kiszka@siemens.com>
> Cc: "TeLeMan" <geleman@gmail.com>, "Kenneth Salerno" <kennethsalerno@yahoo.com>, qemu-devel@nongnu.org
> Date: Saturday, August 6, 2011, 10:35 AM
> On Sat, Aug 6, 2011 at 1:33 PM,
> Anthony Liguori <anthony@codemonkey.ws>
> wrote:
> > On 08/05/2011 10:25 PM, TeLeMan wrote:
> >>
> >> On Sat, Aug 6, 2011 at 04:46, Blue Swirl<blauwirbel@gmail.com>
> wrote:
> >>>
> >>> On Fri, Aug 5, 2011 at 8:09 PM, Kenneth
> Salerno
> >>> <kennethsalerno@yahoo.com>
> wrote:
> >>>>
> >>>> Hi,
> >>>>
> >>>> I'm not sure if any defaults (build or
> runtime) have changed since
> >>>> 0.14.1, but I can no longer get the
> following to work anymore for QEMU
> >>>> versions 0.15.0-rc2 or recent development
> builds:
> >>>>
> >>>> -device e1000,netdev=mynet0 -netdev
> type=user,id=mynet0 ...
> >>>>
> >>>> Works great in 0.14.1 however.
> >>>>
> >>>> From the QEMU console, "info networking"
> shows the NIC e1000 and the
> >>>> VLAN correctly setup, the guest (RHEL 6.1
> x86_64) has its NIC recognized and
> >>>> networking setup, just can't seem to
> communicate with the gateway
> >>>> (10.0.2.2). The only difference I see in
> the console is cosmetic
> >>>> (restricted=off rather than restricted=n).
> >>>>
> >>>> Host OS: Windows XP
> >>>> Build env: i686-pc-mingw32-gcc 4.5.2,
> binutils 2.21.53.20110731 i386pe
> >>>> Runtime env: Cygwin 1.7.9 2011-03-29, SDL
> 1.2.14, mingw32-glib 2.28.1-1,
> >>>> mingw32-gettext 0.18.1-2
> >>>> Guest OS: RHEL 6.1
> >>>>
> >>>> Is it just me?
> >>>
> >>> No, this is fallout from glib use:
> >>> http://lists.nongnu.org/archive/html/qemu-devel/2011-08/msg00134.html
> >>>
> >>> The fix is to rewrite structures without using
> GCC bit fields.
> >>
> >> -mms-bitfields affects all byte-alignments in a
> structure. For example,
> >> struct s
> >> {
> >> uint8_t a;
> >> uint32_t b;
> >> } __attribute__((packed));
> >>
> >> sizeof(s) is 5 without -mms-bitfields but sizeof(s)
> is 8 with
> >> -mms-bitfields.
> >
> > If you can identify the offending structs, you can do:
> >
> > #pragma pack(push,1)
> >
> > struct s
> > {
> > uint8_t a;
> > uint32_t b;
> > } __attribute__((packed));
> >
> > #pragma pack(pop)
>
> I grepped the tree for ((packed)). The only two places where
> bit
> fields are used with packed structs are in SLIRP:
>
> struct ip {
> #ifdef HOST_WORDS_BIGENDIAN
> u_int ip_v:4,
> /* version */
>
> ip_hl:4; /* header
> length */
> #else
> u_int ip_hl:4,
> /* header length */
>
> ip_v:4;
> /* version */
> #endif
> uint8_t
> ip_tos;
> /* type of service */
> uint16_t
> ip_len;
> /* total length */
> uint16_t
> ip_id;
> /* identification */
> uint16_t
> ip_off;
> /* fragment offset field */
> #define IP_DF 0x4000
> /* don't fragment flag
> */
> #define IP_MF 0x2000
> /* more fragments flag
> */
> #define IP_OFFMASK
> 0x1fff /* mask for
> fragmenting bits */
> uint8_t ip_ttl;
> /* time to live */
> uint8_t ip_p;
> /* protocol */
> uint16_t
> ip_sum;
> /* checksum */
> struct in_addr
> ip_src,ip_dst; /* source and dest address
> */
> } __attribute__((packed));
>
> struct ip_timestamp {
> uint8_t
> ipt_code; /* IPOPT_TS
> */
> uint8_t
> ipt_len; /* size of
> structure (variable) */
> uint8_t
> ipt_ptr; /* index of
> current entry */
> #ifdef HOST_WORDS_BIGENDIAN
> u_int
> ipt_oflw:4, /* overflow
> counter */
>
> ipt_flg:4; /* flags,
> see below */
> #else
> u_int
> ipt_flg:4, /* flags,
> see below */
>
> ipt_oflw:4; /* overflow
> counter */
> #endif
> union ipt_timestamp {
>
> n_long ipt_time[1];
>
> struct ipt_ta {
>
> struct in_addr ipt_addr;
>
> n_long ipt_time;
> } ipt_ta[1];
> } ipt_timestamp;
> } __attribute__((packed));
>
> I'd avoid the bit fields altogether in both cases, then also
> the
> #ifdeffery could be removed.
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host
2012-02-01 22:16 ` Kenneth Salerno
@ 2012-02-02 6:06 ` Stefan Weil
0 siblings, 0 replies; 10+ messages in thread
From: Stefan Weil @ 2012-02-02 6:06 UTC (permalink / raw)
To: Kenneth Salerno; +Cc: Blue Swirl, Jan Kiszka, qemu-devel, TeLeMan
Am 01.02.2012 23:16, schrieb Kenneth Salerno:
> Another strange problem I've been having with newer builds from Git
> lately is I can only execute qemu-system-*.exe correctly from within
> gdb (i.e. "/usr/bin/gdb.exe ./i386-softmmu/qemu-system-i386.exe;
> gdb>run -L ./pc-bios"). If I run qemu-system-*.exe outside of gdb it
> will otherwise die complaining about exception code 0xc0000005 at
> address 0x000000007c91b21a in ntdll.dll... "--help" works though...
>
> Any suggestions are appreciated. Thanks.
>
> Ken
This problem was already reported, and there is a patch for it:
http://patchwork.ozlabs.org/patch/138690/
*https://bugs.launchpad.net/qemu/+bug/922131
Stefan
*
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-02-02 6:06 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-05 20:09 [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host Kenneth Salerno
2011-08-05 20:46 ` Blue Swirl
2011-08-05 21:43 ` Jan Kiszka
2011-08-05 23:17 ` Kenneth Salerno
2011-08-06 7:31 ` Stefan Weil
2011-08-06 3:25 ` TeLeMan
2011-08-06 13:33 ` Anthony Liguori
2011-08-06 14:35 ` Blue Swirl
2012-02-01 22:16 ` Kenneth Salerno
2012-02-02 6:06 ` Stefan Weil
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).