From owner-freebsd-current Sat Jan 30 14:10:13 1999 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id OAA22798 for freebsd-current-outgoing; Sat, 30 Jan 1999 14:10:13 -0800 (PST) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from skynet.ctr.columbia.edu (skynet.ctr.columbia.edu [128.59.64.70]) by hub.freebsd.org (8.8.8/8.8.8) with SMTP id OAA22773 for ; Sat, 30 Jan 1999 14:10:07 -0800 (PST) (envelope-from wpaul@skynet.ctr.columbia.edu) Received: (from wpaul@localhost) by skynet.ctr.columbia.edu (8.6.12/8.6.9) id RAA00129 for current@freebsd.org; Sat, 30 Jan 1999 17:17:08 -0500 From: Bill Paul Message-Id: <199901302217.RAA00129@skynet.ctr.columbia.edu> Subject: CAP port and non-IP multicast To: current@FreeBSD.ORG Date: Sat, 30 Jan 1999 17:17:07 -0500 (EST) X-Mailer: ELM [version 2.4 PL24] Content-Type: text Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Somebody wrote me recently to tell me they were having trouble getting the Columbia Appletalk package to work with a PCI ethernet card. Looking through both the Columbia Appletalk code and the kernel, I think the problem is a general one not necessarily related to a given ethernet driver. I'm not sure what the proper fix is though. The CAP code contains a module called cap60/support/ethertalk/bpfiltp.c which contains library support code for libcap when the package is built with EtherTalk Phase 2 support. As the name implies, it works with BPF, but it also contains the pi_addmulti() routine. The aarpd program uses this function to join the 09:00:07:ff:ff:ff multicast group. Since this is not an IP multicast group, you have to specify something besides AF_INET as the family when using SIOCADDMULTI to join. The question is, what should this something else be. In 2.2.x, you have to use AF_UNSPEC, but in 3.x and up, you have to use AF_LINK. The CAP port uses AF_UNSPEC in both cases, which is incorrect if you're building the port on a 3.0 (or 4.0) host. What's the right way to fix this? There are really two possibilities: 1) change bpfiltp.c so that it conditionally uses AF_UNSPEC or AF_LINK depending on the OS release on which the port is being compiled, or 2) change sys/net/if_ethersubr.c so that it treats AF_UNSPEC and AF_LINK the same. I expect changing the CAP code would be the more 'politically correct' approach, but it doesn't seem unreasonable to allow backwards compatibility in the kernel code either. -Bill -- ============================================================================= -Bill Paul (212) 854-6020 | System Manager, Master of Unix-Fu Work: wpaul@ctr.columbia.edu | Center for Telecommunications Research Home: wpaul@skynet.ctr.columbia.edu | Columbia University, New York City ============================================================================= "It is not I who am crazy; it is I who am mad!" - Ren Hoek, "Space Madness" ============================================================================= To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message