Many thanks to Roger Fujii (rmf@lookhere.com) for pointing out that my
original summary (attached below) was not really correct. My summary
was assigning blame to multicast, when really it was mrouted that was
broken all along. He pointed out that ntp, which also uses multicast,
seems to work fine on x86.
It turned out to be a big-endian / little-endian problem. Taking a look
at the original error messages reported in my original question:
> > One of our users is trying to make this work on the Intel box, but
keeps
> > getting errors like:
> >
> > Apr 26 23:56:33 gw unix: Packet length mismatch: 7168, 28
7168 = 28, if a short is revered.
> > Apr 26 23:56:33 gw last message repeated 3 times
> > Apr 26 23:56:33 gw unix: Packet length mismatch: 8192, 32
8192 = 32, if a short is reversed (msb/lsb)
Roger suggested applying a fix like this:
----------------------------------------------------
*** mrinfo.c Tue May 2 13:16:32 2000
--- mrinfo.c.orig Tue May 2 13:19:03 2000
***************
*** 492,498 ****
src = ip->ip_src.s_addr;
dst = ip->ip_dst.s_addr;
iphdrlen = ip->ip_hl << 2;
! ipdatalen = ntohs(ip->ip_len);
if (iphdrlen + ipdatalen != recvlen) {
log(LOG_WARNING, 0,
"packet shorter (%u bytes) than hdr+data length
(%u+%u)",
--- 492,498 ----
src = ip->ip_src.s_addr;
dst = ip->ip_dst.s_addr;
iphdrlen = ip->ip_hl << 2;
! ipdatalen = ip->ip_len;
if (iphdrlen + ipdatalen != recvlen) {
log(LOG_WARNING, 0,
"packet shorter (%u bytes) than hdr+data length
(%u+%u)",
----------------------------------------------------
In all, six such fixes needed to be applied:
----------------------------------------------------
igmp.c:156: ipdatalen = ntohs(ip->ip_len);
igmp.c:318: ip->ip_len = htons(MIN_IP_HEADER_LEN + IGMP_MINLEN +
datalen);
igmp.c:342: if (sendto(igmp_socket, send_buf, ntohs(ip->ip_len), 0,
mrinfo.c:495: ipdatalen = ntohs(ip->ip_len);
mtrace.c:502: ipdatalen = ntohs(ip->ip_len);
mtrace.c:658: ipdatalen = ntohs(ip->ip_len);
----------------------------------------------------
Finally, for those of you who cannot find mrouted on parcftp.xerox.com,
here is a snippet from the README file which explains where to get the
sources as well as some pre-compiled binaries:
----------------------------------------------------
$Id: README-3.8.mrouted,v 3.8 1995/11/29 22:23:02 fenner Rel $
IP Multicast Extensions for BSD-Derived Unix Systems
Release 3.8
November 29, 1995
available from parcftp.xerox.com,
file pub/net-research/ipmulti/mrouted3.8.tar.Z
binaries pub/net-research/ipmulti/mrouted3.8-sparc-sunos41x.tar.Z
pub/net-research/ipmulti/mrouted3.8-sparc-solaris2.tar.Z
pub/net-research/ipmulti/mrouted3.8-i386-bsd.tar.Z
pub/net-research/ipmulti/mrouted3.8-alpha-osf1.tar.Z
pub/net-research/ipmulti/mrouted3.8-sgi-irix.tar.Z
pub/net-research/ipmulti/mrouted3.8-hp-hpux.tar.Z
----------------------------------------------------
Thanks again!
-- Mike van der Velden email mvanderv@redback.com System Administrator voice (604) 433-0597 x281 Redback Networks pager (604) 975-3929 305 - 8988 Fraserton Court fax (604) 433-0257 Burnaby, BC. Canada
attached mail follows:
It appears that mrouted functionality is broken for x86. Since I only
received one response (and 9 Out of Office AutoReplies), I've included it
in its entirety.
Thanks to Peter Durst from Learnix for taking the time to respond:
> I have been going through an ongoing battle with Sun over the Multi-cast
> issues on the x86 platform. I have told them lots of times that it's
> broken, but alas, they have ignored me. I have noticed that 2.6/7/8 have
> all exhibited this type of problem. I would send a report directly to
Sun
> and see if we can't overwhelm them with "it's broken" statements. Sorry
> that I can't help you.
Also, there was a fairly comprehensive summary in the archives from 1996
about multicasting. It included a number of links, but all of them appear
to have disappeared since then. :( Here is the link to the summary for
those who are interested
http://scorpion.latech.edu/cgi-bin/SFgate?language=English&verbose=0&listenv=DL&application=&convert=Mail&converthl=&refinequery=&formintern=&formextern=&multiple=0&descriptor=scorpion.latech.edu%2fsun-managers-summary%7c677%7c6348%7cRasana%20Atreya%20%3cRasan%20Summary:%20MBONE%20Multicasting%7cTEXT%7cscorpion:210%7c%2finfo%2fwais%2findexes%2fsun-managers-summary%7c365433%20371781%20%2finfo%2fwais%2fdata%2fsun-managers%2f%2fsum.10.96
"Mike van der Velden;" wrote:
> Has anyone got mrouted (version 3.8 from parcftp.xerox.com) to work on
> Solaris x86? We've been running it successfully on an Ultra5 with
> Solaris 2.6 for some time now, but for various reasons we wish to
> transfer this functionality to a Gateway P3 450MHz, running Solaris 2.6
>
> One of our users is trying to make this work on the Intel box, but keeps
> getting errors like:
>
> Apr 26 23:56:33 gw unix: Packet length mismatch: 7168, 28
> Apr 26 23:56:33 gw last message repeated 3 times
> Apr 26 23:56:33 gw unix: Packet length mismatch: 8192, 32
> Apr 26 23:56:33 gw last message repeated 3 times
> Apr 26 23:56:33 gw mrouted[23218]: warning - received packet from
> 192.168.200.10 shorter (28 bytes) than hdr+data length
> (20+4294962203:ec1b)
> Apr 26 23:56:33 gw mrouted[23218]: warning - received packet from
> 192.168.201.1 shorter (28 bytes) than hdr+data length
> (20+4294962203:ec1b)
> Apr 26 23:56:33 gw mrouted[23218]: warning - received packet from
> 192.168.129.1 shorter (28 bytes) than hdr+data length
> (20+4294962203:ec1b)
> Apr 26 23:56:33 gw mrouted[23218]: warning - received packet from
> 192.168.130.1 shorter (28 bytes) than hdr+data length
> (20+4294962203:ec1b)
>
> Any clues?
-- Mike van der Velden email mvanderv@redback.com System Administrator voice (604) 433-0597 x281 Redback Networks pager (604) 975-3929 305 - 8988 Fraserton Court fax (604) 433-0257 Burnaby, BC. Canada
This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:14:07 CDT