On 2011-08-05 22:46, Blue Swirl wrote: > On Fri, Aug 5, 2011 at 8:09 PM, Kenneth Salerno > <kennethsale...@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
signature.asc
Description: OpenPGP digital signature