The Keil compiler insists on having the IP address structure packed, but doing so causes problems with warnings being generated on other compilers.  uip.h was therefore updated to just use the pack attribute when the Keil compiler is used.
diff --git a/Demo/Common/ethernet/FreeTCPIP/net/uip.h b/Demo/Common/ethernet/FreeTCPIP/net/uip.h
index 3cfad7b..3a0ed19 100644
--- a/Demo/Common/ethernet/FreeTCPIP/net/uip.h
+++ b/Demo/Common/ethernet/FreeTCPIP/net/uip.h
@@ -69,14 +69,16 @@
 

 	typedef uip_ip6addr_t	uip_ipaddr_t;

 #else /* UIP_CONF_IPV6 */

-	#include "pack_struct_start.h"

-		typedef union			uip_ip4addr_t

-		{

-			u8_t	u8[4];	/* Initializer, must come first!!! */

-			u16_t	u16[2];

-		} uip_ip4addr_t;

-		typedef uip_ip4addr_t	uip_ipaddr_t

-	#include "pack_struct_end.h"

+	#ifdef __CC_ARM

+		__packed /* The ARM compiler insists on this being packed, but with other compilers packing it generates a warning as it will be packed anyway. */

+	#endif

+

+	typedef union			uip_ip4addr_t

+	{

+		u8_t	u8[4];	/* Initializer, must come first!!! */

+		u16_t	u16[2];

+	} uip_ip4addr_t;

+	typedef uip_ip4addr_t	uip_ipaddr_t;

 #endif /* UIP_CONF_IPV6 */

 

 /*---------------------------------------------------------------------------*/