diff -urN uClibc-0.9.30.1.orig/include/netinet/igmp.h uClibc-0.9.30.1/include/netinet/igmp.h --- uClibc-0.9.30.1.orig/include/netinet/igmp.h 2009-04-08 09:00:10.926545132 +0200 +++ uClibc-0.9.30.1/include/netinet/igmp.h 2009-04-08 09:00:26.242514273 +0200 @@ -69,7 +69,7 @@ u_int8_t igmp_code; /* routing code */ u_int16_t igmp_cksum; /* checksum */ struct in_addr igmp_group; /* group address */ -}; +} __attribute__ ((__packed__)); #define IGMP_MINLEN 8 diff -urN uClibc-0.9.30.1.orig/include/netinet/in.h uClibc-0.9.30.1/include/netinet/in.h --- uClibc-0.9.30.1.orig/include/netinet/in.h 2009-04-08 09:00:10.926545132 +0200 +++ uClibc-0.9.30.1/include/netinet/in.h 2009-04-08 09:00:26.242514273 +0200 @@ -202,7 +202,7 @@ #define s6_addr in6_u.u6_addr8 #define s6_addr16 in6_u.u6_addr16 #define s6_addr32 in6_u.u6_addr32 - }; + } __attribute__ ((__packed__)); extern const struct in6_addr in6addr_any; /* :: */ extern const struct in6_addr in6addr_loopback; /* ::1 */ @@ -229,7 +229,7 @@ __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)]; - }; + } __attribute__ ((__packed__)); #endif /* Ditto, for IPv6. */ @@ -240,7 +240,7 @@ uint32_t sin6_flowinfo; /* IPv6 flow information */ struct in6_addr sin6_addr; /* IPv6 address */ uint32_t sin6_scope_id; /* IPv6 scope-id */ - }; + } __attribute__ ((__packed__)); /* IPv4 multicast request. */ @@ -251,7 +251,7 @@ /* Local IP address of interface. */ struct in_addr imr_interface; - }; + } __attribute__ ((__packed__)); struct ip_mreq_source { @@ -263,7 +263,7 @@ /* IP address of interface. */ struct in_addr imr_sourceaddr; - }; + } __attribute__ ((__packed__)); /* Likewise, for IPv6. */ struct ipv6_mreq @@ -273,7 +273,7 @@ /* local interface */ unsigned int ipv6mr_interface; - }; + } __attribute__ ((__packed__)); /* Multicast group request. */ @@ -284,7 +284,7 @@ /* Group address. */ struct sockaddr_storage gr_group; - }; + } __attribute__ ((__packed__)); struct group_source_req { @@ -296,7 +296,7 @@ /* Source address. */ struct sockaddr_storage gsr_source; - }; + } __attribute__ ((__packed__)); /* Full-state filter operations. */ @@ -315,7 +315,7 @@ uint32_t imsf_numsrc; /* Source addresses. */ struct in_addr imsf_slist[1]; - }; + } __attribute__ ((__packed__)); #define IP_MSFILTER_SIZE(numsrc) (sizeof (struct ip_msfilter) \ - sizeof (struct in_addr) \ @@ -336,7 +336,7 @@ uint32_t gf_numsrc; /* Source addresses. */ struct sockaddr_storage gf_slist[1]; -}; +} __attribute__ ((__packed__)); #define GROUP_FILTER_SIZE(numsrc) (sizeof (struct group_filter) \ - sizeof (struct sockaddr_storage) \ @@ -460,14 +460,14 @@ { struct in6_addr ipi6_addr; /* src/dst IPv6 address */ unsigned int ipi6_ifindex; /* send/recv interface index */ - }; + } __attribute__ ((__packed__)); /* IPv6 MTU information. */ struct ip6_mtuinfo { struct sockaddr_in6 ip6m_addr; /* dst address including zone ID */ uint32_t ip6m_mtu; /* path MTU in host byte order */ - }; + } __attribute__ ((__packed__)); #if 0 /*def __USE_GNU*/ diff -urN uClibc-0.9.30.1.orig/include/netinet/ip.h uClibc-0.9.30.1/include/netinet/ip.h --- uClibc-0.9.30.1.orig/include/netinet/ip.h 2009-04-08 09:00:10.926545132 +0200 +++ uClibc-0.9.30.1/include/netinet/ip.h 2009-04-08 09:00:26.242514273 +0200 @@ -63,7 +63,7 @@ u_int32_t saddr; u_int32_t daddr; /*The options start here. */ - }; + } __attribute__ ((__packed__)); #ifdef __USE_BSD /* @@ -127,7 +127,7 @@ u_int8_t ip_p; /* protocol */ u_short ip_sum; /* checksum */ struct in_addr ip_src, ip_dst; /* source and dest address */ - }; + } __attribute__ ((__packed__)); /* * Time stamp option structure. diff -urN uClibc-0.9.30.1.orig/include/netinet/ip_icmp.h uClibc-0.9.30.1/include/netinet/ip_icmp.h --- uClibc-0.9.30.1.orig/include/netinet/ip_icmp.h 2009-04-08 09:00:10.926545132 +0200 +++ uClibc-0.9.30.1/include/netinet/ip_icmp.h 2009-04-08 09:00:26.242514273 +0200 @@ -43,7 +43,7 @@ u_int16_t mtu; } frag; /* path mtu discovery */ } un; -}; +} __attribute__ ((__packed__)); #define ICMP_ECHOREPLY 0 /* Echo Reply */ #define ICMP_DEST_UNREACH 3 /* Destination Unreachable */ @@ -199,7 +199,7 @@ #define icmp_radv icmp_dun.id_radv #define icmp_mask icmp_dun.id_mask #define icmp_data icmp_dun.id_data -}; +} __attribute__ ((__packed__)); /* * Lower bounds on packet lengths for various types. diff -urN uClibc-0.9.30.1.orig/include/netinet/tcp.h uClibc-0.9.30.1/include/netinet/tcp.h --- uClibc-0.9.30.1.orig/include/netinet/tcp.h 2009-04-08 09:00:10.926545132 +0200 +++ uClibc-0.9.30.1/include/netinet/tcp.h 2009-04-08 09:00:26.242514273 +0200 @@ -86,7 +86,7 @@ u_int16_t th_win; /* window */ u_int16_t th_sum; /* checksum */ u_int16_t th_urp; /* urgent pointer */ -}; +} __attribute__ ((__packed__)); # else /* !__FAVOR_BSD */ struct tcphdr @@ -121,7 +121,7 @@ u_int16_t window; u_int16_t check; u_int16_t urg_ptr; -}; +} __attribute__ ((__packed__)); # endif /* __FAVOR_BSD */ enum @@ -226,7 +226,7 @@ u_int32_t tcpi_rcv_space; u_int32_t tcpi_total_retrans; -}; +} __attribute__ ((__packed__)); /* For TCP_MD5SIG socket option. */ @@ -239,7 +239,7 @@ u_int16_t tcpm_keylen; /* Key length. */ u_int32_t __tcpm_pad2; /* Zero. */ u_int8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; /* Key (binary). */ -}; +} __attribute__ ((__packed__)); #endif /* Misc. */ diff -urN uClibc-0.9.30.1.orig/include/netinet/udp.h uClibc-0.9.30.1/include/netinet/udp.h --- uClibc-0.9.30.1.orig/include/netinet/udp.h 2009-04-08 09:00:10.926545132 +0200 +++ uClibc-0.9.30.1/include/netinet/udp.h 2009-04-08 09:00:26.242514273 +0200 @@ -61,7 +61,7 @@ u_int16_t uh_dport; /* destination port */ u_int16_t uh_ulen; /* udp length */ u_int16_t uh_sum; /* udp checksum */ -}; +} __attribute__ ((__packed__)); #else @@ -71,7 +71,7 @@ u_int16_t dest; u_int16_t len; u_int16_t check; -}; +} __attribute__ ((__packed__)); #endif #define SOL_UDP 17 /* sockopt level for UDP */