From owner-freebsd-hackers Wed Oct 25 23:20:50 1995 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id XAA12951 for hackers-outgoing; Wed, 25 Oct 1995 23:20:50 -0700 Received: from khipx2-gate.csl.ntt.jp (khipx2-gate.csl.ntt.jp [163.138.61.2]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id XAA12914 for ; Wed, 25 Oct 1995 23:20:42 -0700 Received: from kh10.csl.ntt.jp (kh10.csl.ntt.jp [163.138.61.4]) by khipx2-gate.csl.ntt.jp (8.6.12+2.4W/3.4W95061711) with ESMTP id PAA06734 for ; Thu, 26 Oct 1995 15:16:36 +0900 Message-Id: <199510260616.PAA06734@khipx2-gate.csl.ntt.jp> To: hackers@freebsd.org Subject: Multicast on 3com509 From: Masayuki Yanagiya (=?ISO-2022-JP?B?GyRCTHhDKxsoQg==?= =?ISO-2022-JP?B?GyRCMm1HNxsoQg==?= ) Reply-To: yanagiya@csl.ntt.jp X-Mailer: Mew beta version 0.89 on Emacs 19.28.1, Mule 2.2 Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Date: Thu, 26 Oct 1995 15:16:31 +0900 Sender: owner-hackers@freebsd.org Precedence: bulk Dear All, I put multicast-capability on 3com509 by making very small modification on i386/isa/if_ep.c. I checked the function by receiving NASA shuttle Mission with vic-2.6. Also mrouted3.4 works on the card correctly. There are two modifications: 1. Add IFF_MULTICAST flag in epattach(), 2. Add SIOCADDMULTI and SIOCDELMULTI handling in epioctl(). I included the context-diff file at the end of this mail. Best regards, Masayuki Yanagiya --- Masayuki Yanagiya NTT Communication Switching Laboratories 9-11, Midori-Cho 3-Chome Musashino-Shi, Tokyo 180 Japan yanagiya@csl.ntt.jp +81 422 59 4466 Fax +81 422 59 2473 --- cut here --- *** if_ep.c.current Thu Oct 26 14:23:13 1995 --- if_ep.c Thu Oct 26 14:40:27 1995 *************** *** 50,55 **** --- 50,61 ---- * babkin@hq.icb.chel.su */ + /* + 1995/10/26 + Multicast-capability added. + Masayuki Yanagiya (NTT) yanagiya@csl.ntt.jp + */ + #include "ep.h" #if NEP > 0 *************** *** 424,429 **** --- 430,436 ---- ifp->if_name = "ep"; ifp->if_mtu = ETHERMTU; ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX; + ifp->if_flags |= IFF_MULTICAST; ifp->if_init = epinit; ifp->if_output = ether_output; ifp->if_start = epstart; *************** *** 1217,1223 **** ifp->if_mtu = ifr->ifr_mtu; } break; ! default: error = EINVAL; } --- 1224,1240 ---- ifp->if_mtu = ifr->ifr_mtu; } break; ! case SIOCADDMULTI: ! error = ether_addmulti((struct ifreq *)data, &sc->arpcom); ! goto reset; ! case SIOCDELMULTI: ! error = ether_delmulti((struct ifreq *)data, &sc->arpcom); ! reset: ! if (error == ENETRESET) { ! epinit(ifp->if_unit); ! error = 0; ! } ! break; default: error = EINVAL; } --- cut here ---