Hi ML,
I'm working on a mips target and I used qemu_mips target to simulate my target
(that I hope to have in the next week...)
Following my activities I noticed that IP_t structure is no defined with
attribute "packed". I noticed this issue because using a self-made toolchain
(gcc4.2.4+binutils2.8+uclibc0.9.30) the compiler has aligned all bytes to
32bit boundary. This is not ok, because the packets IP_t can be non aligned
(see the /net/net.c PingSend function, for an example).
The dirty solution is to define the structure with the
__attribute__((__packed__))... but, from my point of view, a better packet
forging mechanism should be implemented into the net.c stack.
I attached a trivial patch that solved the issue on my target.
Any comments is welcome.
best regards,
luigi
--
Luigi Mantellini
R&D - Software
Industrie Dial Face S.p.A.
Via Canzo, 4
20068 Peschiera Borromeo (MI), Italy
Tel.: +39 02 5167 2813
Fax: +39 02 5167 2459
Email: [email protected]
diff --git a/include/net.h b/include/net.h
index d2d394f..c04f84c 100644
--- a/include/net.h
+++ b/include/net.h
@@ -198,7 +198,7 @@ typedef struct {
ushort udp_dst; /* UDP destination port */
ushort udp_len; /* Length of UDP packet */
ushort udp_xsum; /* Checksum */
-} IP_t;
+} __attribute__((__packed__)) IP_t;
#define IP_OFFS 0x1fff /* ip offset *= 8 */
#define IP_FLAGS 0xe000 /* first 3 bits */
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot