mirror of
https://github.com/qemu/qemu.git
synced 2025-08-04 17:05:34 +00:00
slirp: Don't mark struct ipq or struct ipasfrag as packed
There is no reason to mark the struct ipq and struct ipasfrag as packed: they are naturally aligned anyway, and are not representing any on-the-wire packet format. Indeed they vary in size depending on the size of pointers on the host system, because the 'struct qlink' members include 'void *' fields. Dropping the 'packed' annotation fixes clang -Waddress-of-packed-member warnings and probably lets the compiler generate better code too. The only thing we do care about in the layout of the struct is that the frag_link matches up with the ipf_link of the struct ipasfrag, as documented in the comment on that struct; assert at build time that this is the case. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
This commit is contained in:
parent
c74e3ae9c8
commit
aaa0c642b1
@ -217,7 +217,7 @@ struct ipq {
|
|||||||
uint8_t ipq_p; /* protocol of this fragment */
|
uint8_t ipq_p; /* protocol of this fragment */
|
||||||
uint16_t ipq_id; /* sequence id for reassembly */
|
uint16_t ipq_id; /* sequence id for reassembly */
|
||||||
struct in_addr ipq_src,ipq_dst;
|
struct in_addr ipq_src,ipq_dst;
|
||||||
} QEMU_PACKED;
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ip header, when holding a fragment.
|
* Ip header, when holding a fragment.
|
||||||
@ -227,7 +227,10 @@ struct ipq {
|
|||||||
struct ipasfrag {
|
struct ipasfrag {
|
||||||
struct qlink ipf_link;
|
struct qlink ipf_link;
|
||||||
struct ip ipf_ip;
|
struct ip ipf_ip;
|
||||||
} QEMU_PACKED;
|
};
|
||||||
|
|
||||||
|
QEMU_BUILD_BUG_ON(offsetof(struct ipq, frag_link) !=
|
||||||
|
offsetof(struct ipasfrag, ipf_link));
|
||||||
|
|
||||||
#define ipf_off ipf_ip.ip_off
|
#define ipf_off ipf_ip.ip_off
|
||||||
#define ipf_tos ipf_ip.ip_tos
|
#define ipf_tos ipf_ip.ip_tos
|
||||||
|
Loading…
Reference in New Issue
Block a user