Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.3 alpha 4/15/85; site ucbvax.ARPA Path: utzoo!watmath!clyde!burl!ulysses!ucbvax!tcp-ip From: tcp-ip@ucbvax.ARPA Newsgroups: fa.tcp-ip Subject: Re: Sun Gateway problems Message-ID: <7185@ucbvax.ARPA> Date: Thu, 16-May-85 20:46:19 EDT Article-I.D.: ucbvax.7185 Posted: Thu May 16 20:46:19 1985 Date-Received: Fri, 17-May-85 05:21:46 EDT Sender: daemon@ucbvax.ARPA Organization: University of California at Berkeley Lines: 26 From: Chris Torek If it's the ICMP bug Jim and I found, and you have Sun source, you can fix it by finding modules that call "m_pullup" but have already used "mtod" on the argument to m_pullup. Whatever was mtod'ed needs to be mtod'ed again. Example: icmp_xyzzy(m) struct mbuf *m; { struct icmp_hdr *ic = mtod(m, struct icmp_hdr *); ... ... if (m->m_len < sizeof (struct icmp_hdr)) { if ((m = m_pullup(m, sizeof (struct icmp_hdr))) == NULL) { /* forget it */ } +--> ic = mtod(m, struct icmp_hdr *); | } | ... icmp_fields> ... | +---ADD THIS LINE (We've reported the bug to Sun; I don't know when they'll get around to fixing it.)