From owner-FreeBSD-tech-jp@jp.freebsd.org  Fri Jun 13 19:25:11 1997
Received: by jaz.jp.freebsd.org (8.8.5+2.7Wbeta5/8.7.3) id TAA27954
	Fri, 13 Jun 1997 19:25:11 +0900 (JST)
Received: by jaz.jp.freebsd.org (8.8.5+2.7Wbeta5/8.7.3) with ESMTP id TAA27947
	for <FreeBSD-tech-jp@jp.freebsd.org>; Fri, 13 Jun 1997 19:25:09 +0900 (JST)
From: candy@fct.kgc.co.jp
Received: from uucp1.iij.ad.jp (uucp1.iij.ad.jp [202.232.2.201]) by mail0.iij.ad.jp (8.8.5+2.7Wbeta5/3.5Wpl4-MAIL) with SMTP id TAA07866 for <FreeBSD-tech-jp@jp.freebsd.org>; Fri, 13 Jun 1997 19:25:08 +0900 (JST)
Received: (from uucp@localhost) by uucp1.iij.ad.jp (8.6.12+2.4W/3.3W9-UUCP) with UUCP id TAA01440 for FreeBSD-tech-jp@jp.freebsd.org; Fri, 13 Jun 1997 19:25:07 +0900
Received: from xxx.fct.kgc.co.jp by vvv.kgc.co.jp (8.8.5/3.5Wpl7:97050817) id TAA23044; Fri, 13 Jun 1997 19:24:33 +0900 (JST)
Received: from localhost by xxx.fct.kgc.co.jp (8.8.5/3.3W8:95062916) id TAA00462; Fri, 13 Jun 1997 19:24:32 +0900 (JST)
Message-Id: <199706131024.TAA00462@xxx.fct.kgc.co.jp>
To: FreeBSD-tech-jp@jp.freebsd.org
In-reply-to: Koji Imada - je4owb/2's message of 13 Jun 1997 03:40:35 +0900
References: <199706120250.LAA00828@moon.trad.pfu.co.jp>
	<199706121745.CAA03431@bimota.imada.math.human.nagoya-u.ac.jp>
X-Mailer: Mew version 1.69 on Emacs 19.28.2 / Mule 2.3
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Date: Fri, 13 Jun 1997 19:24:31 +0900
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: bulk
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: FreeBSD-tech-jp 272
Subject: [FreeBSD-tech-jp 272] Re: How to forward broadcasts? (was Re:
	 iij-pppTunelDevice Netmask)
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org

(tech $B$N$_$K$7$^$7$?!#(B)
$B:#ED$5$s!">\$7$$@bL@$"$j$,$H$&$4$6$$$^$9!#(B

> $B$3$l$C$F(B ***.***.178.62 $B$N(B tun0 $B$N(B address $B$O2?$G$7$g$&!)(B

  $B85$N%a!<%k$K$h$k$H(B Ethernet(ed0), tun0 $B$H$b(B *.*.178.62 $B$K$J$C$F$$$^(B
$B$9!#(B

> ***.***.178.62 $B$G(B proxy arp $B$9$k$+(B host route $B$r;XDj$7$J$$$H(B 
> ***.***.178.0 $B$N(B network $B$+$i$O(B ***.***.178.28 $B$K(B IP datagram $B$rAw$l$J(B
> $B$$$h$&$K8+$($^$9!#(B

  /etc/ppp/ppp.conf $B$G(B ` enable proxy' $B$5$l$F$$$k$h$&$G$9!#(B

> $B7kO@$+$i$$$&$H(B ***.***.178.28 $B$,(B point to point $B$G(B ***.***.178.62 $B$H7Q$C(B
> $B$F$$$k$J$i!"$b$7(B ***.***.178.62 $B$,(B ***.***.178.63 $B$rE>Aw$7$F$/$l$F$b<u(B
> $B$1<h$l$^$;$s!#(Bpoint to point link $B$G$O(B netmask $B$O$"$s$^$j;E;v$7$F$J$$(B
> $B$7!"(Bbroadcast address $B$K;j$C$F$OB8:_$7$J$$$N$G!#(B

  $B$3$l$O(B ed0 -> tun0 $B$N>l9g$G$9$M(B? $B$J$k$[$I$J$k$[$I!#G<F@$7$^$7$?!#(B

> $B$3$l$O(B limited broadcast(255.255.255.255) $B$O(B forward $B$7$J$$$,@52r$G(B 
> directly connected network $B$N(B directed broadcast(host part $B$,(B all 1) 
> $B$O$I$&$9$k$+$C$A$e$&OC$K$J$k$H;W$&$N$G$9$,!#(B

  $B85$N%a!<%k$K$O(B broadcast $B$,(B limited $B$+(B directed $B$+$H$$$&>pJs$O$"$j$^(B
$B$;$s$G$7$?!#$,!"<ALd$5$l$?J}$,%M%C%H%o!<%/$K>\$7$=$&$K$*8+<u$1$7$?$N$G!"(B
directed broadcast $B$b;n$5$l$?$N$G$O$J$$$+$H>!<j$KA[A|$7$F$7$^$$$^$7$?!#(B
$B$9$_$^$;$s!#(B

  $B$H!"0J>e$O(B ed0 <--> tun0 $B$N$*OC$G$9!#$G!";d$N<ALd$G$9$,!"(B

> $B$3$l$@$1(B(if0 $B$H(B if1 $B$N(B network address $B$,0c$&$N$OBgA0Ds(B)$B$J$i!"(B4.4BSD 
> $B$N(B code $B$KLa$;$PNI$$$N$G$O!)(B NetBSD $B$O(B rfc1812 $B$G?d>)$5$l$F$k$h$&$K$3(B
> $B$N5!G=$N(B enable/disable $B$b=PMh$k$h$&$K$J$C$F$k$N$G$=$C$A$r;2>H$9$l$P$h(B
> $B$$$G$7$g$&!#(B
> $B$A$e!<Lu$G:G8e$K<jH4$-(B version $B$N(B diff $B$D$1$H$-$^$9!#(B

  $B$3$N%Q%C%A$rEv$F$?$@$1$G$O$@$a$G$7$?$,!"(BNetBSD 1.2 $B$r;29M$K!"$b$&0l(B
$B2U=jJQ99$9$k$HF0:n$7$^$7$?!#:G8e$K%Q%C%A$rIU$1$^$9$N$G!"$I$J$?$+(B 
send-pr $B$7$FD:$1$l$P$H;W$$$^$9!#(B

$B4D6-(B:

uname -srm == FreeBSD 2.2.1-RELEASE i386

o----+-------------------------+------o  192.168.1.0/24
     | ed0 192.168.1.8         |192.168.1.68
 [FreeBSD]                    [A(win95)] 
     | ed1 192.168.95.8
o----+-------------------------+------o  192.168.95.0/24
                               |192.168.95.95
                              [B(win95)]

host A, B $B$N(B default router $B$O$=$l$>$l(B ed0, ed1 $B$K8~$1$F$"$j$^$9!#(B

$B<B83(B:

  $B>e5-$N9=@.$G!"(Bhost A $B$+$i(B ping.exe(;_;) $B$G%F%9%H$7$?$H$3$m!"<!$N$h$&(B
$B$J7k2L$K$J$j$^$7$?!#(B(host B $B$G%F%9%H$r$7$F$bF1MM!#(B)

(1) A -> 192.168.1.255	$B@5>o(B
(2) A -> B		$B@5>o(B
(3) A -> 192.168.95.255	$B@5>o(B
	(Win95 $B$O(B broadcast ping $B$KJV;v$r$7$J$$$N$G!"(Btcpdump(8) $B$G(B ed1 
	$B$K%Q%1%C%H$,N.$l$F$k$3$H$r3NG'(B)

$BM>CL(B:

  $B<B$O<RFb(B LAN $B$G(B Windows NT $B$r(B IP $B%k!<%?$K;H$C$F$$$k2U=j$,$"$j!"$=$N(B
$B@h$K(B directed broadcast $B$,FO$+$J$$$H$$$&LdBj$,$"$j$^$7$?!#;d$O$^$5$+(B 
FreeBSD $B$bF1MM$H$OCN$i$:!"(B
$B!V(BNT $B$J$s$+$5$C$5$H<N$F$F!"(BBSD $B$KBX$($l$P!A!A(B?$B!W(B
$B$J$I$H$[$6$$$F$*$j$^$7$?!#(B

  $B$=$N8e(B FreeBSD $B%@%a%@%a$H$$$&HkL)$,$P$l$F$7$^$$!";d$O@P$r$V$D$1$i$l(B
$B$k@83h$,B3$$$F$*$j$^$7$?$,!"$3$l$G2~$a$F$U$s$>$jJV$C$F(B NT $BGS=|$rAJ$($k(B
$B;v$,$G$-$k$h$&$K$J$j$^$7$?(B(^^; $B$I$&$b$"$j$,$H$&$4$6$$$^$9!#(B


$B?7$?$J5?Ld(B:

  FreeBSD 2.2.1R $B$G(B tcpdump -i ed0 $B$7$J$,$i!"F1$8%[%9%H$G(B
 ping -c1 (ed0 $B$N(B broadcast address) $B$9$k$H!"(B

H:M:S.U 0:54:10:c7:0:0 2:0:0:0:45:0 ff01 88: 
                 6a89 c0a8 5f08 c0a8 5fff 0800 d938 5802
                 0000 f8fb a033 4292 0000 0809 0a0b 0c0d
                 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d
                 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d
                 2e2f 3031 3233 3435 3637
H:M:S.U (ed0 MAC) ff:ff:ff:ff:ff:ff 0800 98: 192.168.95.8 > 192.168.95.255: icmp: echo request
                 4500 0054 10c7 0000 ff01 6a89 c0a8 5f08
                 c0a8 5fff 0800 d938 5802 0000 f8fb a033
                 4292 0000 0809 0a0b 0c0d 0e0f 1011 1213
                 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223
                 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233
                 3435 3637

$B$N$h$&$K!"Lu$N$o$+$i$J$$%Q%1%C%H$,I=<($5$l$^$9!#<B:]$K$=$N$h$&$J%Q%1%C(B
$B%H$,%M%C%H%o!<%/$K=P$F$$$k$+$I$&$+$OITL@$G$9!#$^$?(B FreeBSD 2.1.0R $B$G$O(B
$B:F8=$7$^$;$s$G$7$?!#(B

-------8<--------------8<--------------8<-------
directed broadcast $B$r(B RFC#1812 $B=`5r$K$9$k%Q%C%A(B
(NetBSD 1.2 $B$+$i%^!<%8!#L5J]>Z(B)

$B;H$$J}(B:
kernel configuration $B$K(B

options		DIRECTED_BROADCAST	#Broadcast across subnets

$B$rDI2C$7$F2<$5$$!#(B

*** sys/netinet/ip_input.c.orig	Fri Jun 13 11:16:48 1997
--- sys/netinet/ip_input.c	Fri Jun 13 18:40:33 1997
***************
*** 365,371 ****
  
  		if (IA_SIN(ia)->sin_addr.s_addr == ip->ip_dst.s_addr)
  			goto ours;
! 		if (ia->ia_ifp && ia->ia_ifp->if_flags & IFF_BROADCAST) {
  			if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr ==
  			    ip->ip_dst.s_addr)
  				goto ours;
--- 365,375 ----
  
  		if (IA_SIN(ia)->sin_addr.s_addr == ip->ip_dst.s_addr)
  			goto ours;
! 		if (ia->ia_ifp && ia->ia_ifp->if_flags & IFF_BROADCAST
! #ifdef DIRECTED_BROADCAST
! 		 && ia->ia_ifp == m->m_pkthdr.rcvif
! #endif
! 						) {
  			if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr ==
  			    ip->ip_dst.s_addr)
  				goto ours;
***************
*** 1270,1275 ****
--- 1274,1282 ----
  	}
  
  	error = ip_output(m, (struct mbuf *)0, &ipforward_rt, 
+ #ifdef DIRECTED_BROADCAST
+ 			IP_ALLOWBROADCAST |
+ #endif
  			  IP_FORWARDING, 0);
  	if (error)
  		ipstat.ips_cantforward++;
-------8<--------------8<--------------8<-------

$B?@EDIR9-(B <candy@fct.kgc.co.jp>
