diff -up iputils-s20100418/ping6.c.corr_type iputils-s20100418/ping6.c --- iputils-s20100418/ping6.c.corr_type 2010-04-20 15:42:39.181245576 +0200 +++ iputils-s20100418/ping6.c 2010-04-20 15:42:39.198230879 +0200 @@ -1335,7 +1335,7 @@ parse_reply(struct msghdr *msg, int cc, #endif if (c->cmsg_len < CMSG_LEN(sizeof(int))) continue; - hops = *(int*)CMSG_DATA(c); + memcpy(&hops, CMSG_DATA(c), sizeof (int)); } } diff -up iputils-s20100418/ping.c.corr_type iputils-s20100418/ping.c --- iputils-s20100418/ping.c.corr_type 2010-04-20 15:42:39.193242030 +0200 +++ iputils-s20100418/ping.c 2010-04-20 15:42:39.199231317 +0200 @@ -1211,18 +1211,20 @@ pr_addr(__u32 addr) struct hostent *hp; static char buf[4096]; static __u32 addr_cache = 0; + struct in_addr tmp_addr; if ( addr == addr_cache ) return buf; addr_cache = addr; + tmp_addr.s_addr = addr; if ((options & F_NUMERIC) || !(hp = gethostbyaddr((char *)&addr, 4, AF_INET))) - sprintf(buf, "%s", inet_ntoa(*(struct in_addr *)&addr)); + sprintf(buf, "%s", inet_ntoa(tmp_addr)); else snprintf(buf, sizeof(buf), "%s (%s)", hp->h_name, - inet_ntoa(*(struct in_addr *)&addr)); + inet_ntoa(tmp_addr)); return(buf); } diff -up iputils-s20100418/rdisc.c.corr_type iputils-s20100418/rdisc.c --- iputils-s20100418/rdisc.c.corr_type 2010-04-18 06:45:45.000000000 +0200 +++ iputils-s20100418/rdisc.c 2010-04-20 15:42:39.201230377 +0200 @@ -1487,14 +1487,19 @@ rtioctl(struct in_addr addr, int op) { int sock; struct rtentry rt; - struct sockaddr_in *sin; + union { + struct sockaddr *sa; + struct sockaddr_in *sin; + } conv; memset((char *)&rt, 0, sizeof(struct rtentry)); rt.rt_dst.sa_family = AF_INET; rt.rt_gateway.sa_family = AF_INET; rt.rt_genmask.sa_family = AF_INET; - sin = (struct sockaddr_in *)ALLIGN(&rt.rt_gateway); - sin->sin_addr = addr; + // gcc4.4 hack + conv.sa = ALLIGN(&rt.rt_gateway); + memcpy(&conv.sin->sin_addr, &addr, sizeof(struct in_addr)); + // ----------- rt.rt_flags = RTF_UP | RTF_GATEWAY; sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); diff -up iputils-s20100418/tracepath6.c.corr_type iputils-s20100418/tracepath6.c --- iputils-s20100418/tracepath6.c.corr_type 2010-04-18 06:45:45.000000000 +0200 +++ iputils-s20100418/tracepath6.c 2010-04-20 15:44:15.129480911 +0200 @@ -173,7 +173,7 @@ restart: #ifdef IPV6_2292HOPLIMIT case IPV6_2292HOPLIMIT: #endif - rethops = *(int*)CMSG_DATA(cmsg); + memcpy(&rethops, CMSG_DATA(cmsg), sizeof (int)); break; default: printf("cmsg6:%d\n ", cmsg->cmsg_type); diff -up iputils-s20100418/tracepath.c.corr_type iputils-s20100418/tracepath.c --- iputils-s20100418/tracepath.c.corr_type 2010-04-18 06:45:45.000000000 +0200 +++ iputils-s20100418/tracepath.c 2010-04-20 15:42:39.203240403 +0200 @@ -145,7 +145,7 @@ restart: if (cmsg->cmsg_type == IP_RECVERR) { e = (struct sock_extended_err *) CMSG_DATA(cmsg); } else if (cmsg->cmsg_type == IP_TTL) { - rethops = *(int*)CMSG_DATA(cmsg); + memcpy(&rethops, CMSG_DATA(cmsg), sizeof(int)); } else { printf("cmsg:%d\n ", cmsg->cmsg_type); }