On Sun, Oct 12, 2008 at 21:55:54 +0100, Jose Calhariz wrote: > xorp don't build because of a g++ error: > > cc1plus: warnings being treated as errors > io_link_pcap.cc: In member function 'int > IoLinkPcap::join_leave_multicast_group(bool, const Mac&, std::string&)': > io_link_pcap.cc:419: warning: cast from 'uint8_t*' to 'ifreq*' increases > required alignment of target type > The attached patch was build-tested on sparc and should fix this afaict.
Cheers, Julien
diff -u xorp-1.5/debian/changelog xorp-1.5/debian/changelog --- xorp-1.5/debian/changelog +++ xorp-1.5/debian/changelog @@ -1,3 +1,10 @@ +xorp (1.5-4.1) unstable; urgency=low + + * Non-maintainer upload. + * Don't cast uint8t* to struct ifreq*. + + -- Julien Cristau <[EMAIL PROTECTED]> Sun, 12 Oct 2008 19:34:44 +0000 + xorp (1.5-4) unstable; urgency=low * Upload to unstable as requested by release team. Amongst --- xorp-1.5.orig/fea/data_plane/io/io_link_pcap.cc +++ xorp-1.5/fea/data_plane/io/io_link_pcap.cc @@ -415,11 +415,14 @@ // On NetBSD and OpenBSD we need to use ifreq.ifr_addr with sa_family // of AF_UNSPEC. // - uint8_t buffer[sizeof(struct ifreq) + sizeof(struct sockaddr_storage)]; - struct ifreq* ifreq_p = reinterpret_cast<struct ifreq *>(&buffer[0]); + struct { + struct ifreq r; + struct sockaddr_storage s; + } buffer; + struct ifreq* ifreq_p = &buffer.r; struct sockaddr* sa = NULL; - memset(buffer, 0, sizeof(buffer)); + memset(&buffer, 0, sizeof(buffer)); strlcpy(ifreq_p->ifr_name, vif_name().c_str(), sizeof(ifreq_p->ifr_name)); #ifdef HAVE_STRUCT_IFREQ_IFR_HWADDR sa = &ifreq_p->ifr_hwaddr;