From owner-FreeBSD-users-jp@jp.freebsd.org  Thu Feb  4 07:44:54 1999
Received: (from daemon@localhost)
	by jaz.jp.freebsd.org (8.9.1+3.1W/8.7.3) id HAA28168;
	Thu, 4 Feb 1999 07:44:54 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from bd.mbn.or.jp (bd.mbn.or.jp [202.217.0.43])
	by jaz.jp.freebsd.org (8.9.1+3.1W/8.7.3) with ESMTP id HAA28161
	for <FreeBSD-users-jp@jp.freebsd.org>; Thu, 4 Feb 1999 07:44:53 +0900 (JST)
	(envelope-from chi@bd.mbn.or.jp)
Received: from chino.localhost (cse5-23.sapporo.mbn.or.jp [202.217.111.47])
	by bd.mbn.or.jp (8.9.1/bd.mbn.or.jp-2.0) with ESMTP id HAA28561
	for <FreeBSD-users-jp@jp.freebsd.org>; Thu, 4 Feb 1999 07:44:48 +0900 (JST)
Date: Thu, 4 Feb 1999 07:44:48 +0900 (JST)
Message-Id: <199902032244.HAA28561@bd.mbn.or.jp>
Posted-Date: Wed, 03 Feb 1999 13:25:48 JST
To: FreeBSD-users-jp@jp.freebsd.org
In-Reply-To: Your message of "Mon, 1 Feb 1999 16:48:25 JST".
	<199902010754.QAA21486@s-gikan2.maizuru-ct.ac.jp>
From: chi@bd.mbn.or.jp (Chiharu Shibata)
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
X-Mailer: mnews [version 1.21] 1997-12/23(Tue)
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+981115
X-Sequence: FreeBSD-users-jp 38342
Subject: [FreeBSD-users-jp 38342] Re: lnc multicast(Re: Server Spec)
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: chi@bd.mbn.or.jp

$B$3$s$K$A$O!"<FED$G$9!#(B
Mon, 01 Feb 1999 16:48:25 JST$B$K(B
magara@maizuru-ct.ac.jp$B$5$s$O=q$-$^$7$?!#(B

>$B#O#K$G$7$?!%(B
>$B%d%^%@!w;0LZ;T$5$s$b$*;n$7$"$l!*(B

Mon, 01 Feb 1999 21:09:51 JST$B$K(B
lets@d1.dion.ne.jp$B$5$s$O=q$-$^$7$?!#(B

>$B%F%9%H$7$^$7$?!#(B
>$B8+;v$K@\B3$G$-$F$$$^$9!#(B($B9,$;(B)
>$BM-Fq$&$4$6$$$^$9!#!d<FEDMM!!$=$NB>%"%I%P%$%9$r$$$?$@$$$?3'MM(B

$B$I$&$d$i$&$^$/$$$C$?$h$&$G$9$,!"$d$O$j!"$3$&$7$F@Q6KE*$K%F%9%H$7$F2<$5(B
$B$kJ}$,8=$l$l$P!">u67$,?JE8$7$^$9$M!#(B
$B$5$i$K(BNetaTalk$B0J30$N(Bmulticast$BBP1~%"%W%j$,F0:n$9$l$P!"$h$j3N<B$H8@$($k(B
$B$N$G$7$g$&$,!"(Brouted$B0J30$G!"$J$K$+>.<j7Z$J$b$N$C$F$"$j$^$;$s$+!)(B
$B!d(Bmulticast$B$K>\$7$$J}(B

$B$^$?!"0lO"$NN.$l$NCf$G!"J,$+$C$?$3$H$H$7$F$O!"(B
Q. lnc$B%I%i%$%P$G(BNetaTalk$B$,F0:n$7$^$;$s!#(B
Q. MacOS8.5$B$K$7$?$i(BNetaTalk$B$N%5!<%P$,8+$($J$/$J$j$^$7$?!#(B
$B$H$$$&!"Fs$D$NLdBj$,$"$j$=$&$G$9$M!#(B

QandA$BE*$K$O!"::FI$rB>$N(BML$B$G$d$k$H(B2$B=E$K$J$k$+$i!"D>$KAw$C$FM_$7$$$h$&$J(B
$BOC$,0JA0$"$C$?$H;W$$$^$9$,!"MpH/$7$?%Q%C%A$N@0M}$N0UL#$H!"<+J,$G$O(B
NetaTalk$B$r;H$C$?$3$H$,$J$$$H$$$&$3$H$b$"$C$F!"A0<T$N(BQ$B$K$D$$$F!"$^$:$O!"(B
$B$3$N(BML$B$K=P$7$F$*$-$^$9!#(B

PS.
send-pr$B$b$9$Y$-$J$N$G$7$g$&$,!"1Q:nJ8$,BgJQ$@$J$!!d<+J,(B
----
Q. lnc$B%I%i%$%P$G(BNetaTalk$B$,F0:n$7$^$;$s!#(B
atalkd: addmulti: Invalid argument
AppleTalk not up! Child exited with 1.
$B$H$$$&%(%i!<$,=P$F!"5/F0$7$F$/$l$^$;$s!#(B

A. lnc$B%I%i%$%P$,!"(Bmulticast$BBP1~$H$7$F%3%s%Q%$%k$5$l$F$$$J$$!"$+$D(B
multicast$BBP1~ItJ,$K%P%0$,$"$k$?$a$G$9!#(B
$B0J2<$N%Q%C%A$rEv$F$F!"%+!<%M%k$r:F9=C[$7$F2<$5$$!#(B

$B$^$?!"(B[$B4IM}HV9f(B: 706]$B$b;2>H$7$F2<$5$$!#(B

--- /sys/i386/isa/if_lnc.c.orig	Wed Feb  3 12:36:11 1999
+++ /sys/i386/isa/if_lnc.c	Wed Feb  3 12:38:10 1999
@@ -32,8 +32,8 @@
  *
  */
 
-/*
 #define LNC_MULTICAST
+/*
 #define DIAGNOSTIC
 #define DEBUG
  *
@@ -69,6 +69,11 @@
 /* Some defines that should really be in generic locations */
 #define FCS_LEN 4
 #define MULTICAST_FILTER_LEN 8
+#ifdef LNC_MULTICAST
+#define LNC_IFF_DEFAULT (IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST)
+#else
+#define LNC_IFF_DEFAULT (IFF_BROADCAST | IFF_SIMPLEX)
+#endif
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -207,19 +212,20 @@
 static inline u_long
 ether_crc(u_char *ether_addr)
 {
-#define POLYNOMIAL 0x04c11db6
-	u_long crc = 0xffffffffL;
-	int i, j, carry;
+#define POLYNOMIAL 0xEDB88320UL
+	u_long crc = 0xFFFFFFFFUL;
+	int i, j;
 	u_char b;
+	u_long m;
 
 	for (i = ETHER_ADDR_LEN; --i >= 0;) {
 		b = *ether_addr++;
 		for (j = 8; --j >= 0;) {
-			carry  = ((crc & 0x80000000L) ? 1 : 0) ^ (b & 0x01);
-			crc <<= 1;
+			m = crc;
+			crc >>= 1;
+			if ((m ^ b) & 1)
+				crc ^= POLYNOMIAL;
 			b >>= 1;
-			if (carry)
-				crc = ((crc ^ POLYNOMIAL) | carry);
 		}
 	}
 	return crc;
@@ -1222,7 +1228,7 @@
 	sc->arpcom.ac_if.if_name = lncdriver.name;
 	sc->arpcom.ac_if.if_unit = unit;
 	sc->arpcom.ac_if.if_mtu = ETHERMTU;
-	sc->arpcom.ac_if.if_flags = IFF_BROADCAST | IFF_SIMPLEX;
+	sc->arpcom.ac_if.if_flags = LNC_IFF_DEFAULT;
 	sc->arpcom.ac_if.if_timer = 0;
 	sc->arpcom.ac_if.if_output = ether_output;
 	sc->arpcom.ac_if.if_start = lnc_start;
@@ -1312,7 +1318,7 @@
 
 	s = splimp();
 	lnc_stop(sc);
-	sc->arpcom.ac_if.if_flags |= IFF_BROADCAST | IFF_SIMPLEX; /* XXX??? */
+	sc->arpcom.ac_if.if_flags |= LNC_IFF_DEFAULT; /* XXX??? */
 
 	/*
 	 * This sets up the memory area for the controller. Memory is set up for
@@ -1833,7 +1839,12 @@
 					ether_delmulti(ifr, &sc->arpcom);
 
 		if (error == ENETRESET) {
-			lnc_setladrf(sc);
+			/*
+			 * Multicast list has changed; set the logical address
+			 * filter accordingly. 
+			 * (not only initialisation block, but also the LANCE)
+			 */
+			lnc_init(sc);
 			error = 0;
 		}
 		break;
-- 
$B<FED(B $B@i=U(B($B!i(B) chi@bd.mbn.or.jp <http://plaza17.mbn.or.jp/~chi/>
	new fe$B%I%i%$%P(B(LAC-98$BEy%5%]!<%H(B)$B%F%9%?!<Jg=8Cf(B
		<http://plaza17.mbn.or.jp/~chi/myprog/FreeBSD/fe_P9808.html>
	FreeBSD(98)-current$B$,%T%s%A(B!?
		<http://plaza17.mbn.or.jp/~chi/FreeBSD/PC98/develop.html>
