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 */
