<p dir="ltr">Hello all ^^</p>
<p dir="ltr">I'm puzzled with a really weird RIPng default gateway propagation problem.<br>
I don't quite understand what's happening. Here is what happens ...</p>
<p dir="ltr">Network topology :</p>
<p dir="ltr">PC1---Router1---Router2----InternetGateway---z</p>
<p dir="ltr">RIPng enabled on PC1, Router1, Router2<br>
Router2 has a static IPv6 DG ( Default Gateway ) to InternetGateway<br>
Router1 has no static IPv6 DG, and no kernel{learn} directive.</p>
<p dir="ltr">Router2=Ubuntu14.04 LTS, Router1=raspbian Wheezy, bird = last version, compiled from sources<br>
link-local addresses replaces with symbolic names ( ie [fe80::Router1] )</p>
<p dir="ltr">Something really strange seems to happen :</p>
<p dir="ltr">. Router2 gets this routing table :</p>
<p dir="ltr">default via InternetGateway dev eth0  proto static  metric 1 <br>
default via [fe80::Router1] dev eth1  proto bird  metric 1024</p>
<p dir="ltr">But Router1 isn't announcing any IPv6 DefaultGateway, just ::/0 metric 16 ( ie it is poisoning the route ).<br>
( I checked using Wireshark ).</p>
<p dir="ltr">Is there a bug that transforms a received "::/0 metric 16" into a "default via [fe80::Router1] dev eth1  proto bird  metric 1024" route ?</p>
<p dir="ltr">Here is Router2 bird6.conf file :</p>
<p dir="ltr">-------------------------------------------------<br>
log syslog all;<br>
debug protocols all;<br>
#log stderr all;<br>
#log "tmp" all;</p>
<p dir="ltr">router id 192.168.4.1;<br>
protocol kernel {<br>
learn;<br>
scan time 20;<br>
export all;<br>
import all;<br>
}</p>
<p dir="ltr">protocol direct {<br>
#interface "eth0";<br>
}</p>
<p dir="ltr">protocol device {<br>
scan time 10;<br>
}</p>
<p dir="ltr">protocol rip {<br>
debug all;<br>
port 521;<br>
interface "*" { mode multicast; ttl security on; };<br>
honor neighbor;<br>
authentication none;<br>
import all;<br>
export all;<br>
}<br>
-------------------------------------------------------------<br></p>
<p dir="ltr">I managed to solve the problem, by having Router2 drop incomming ::/0 announcements :</p>
<p dir="ltr">---------------------------------------------------------<br>
import filter {   # This block filters ::/0 in<br>
                if net ~ [ ::/0+ ] then<br>
                        reject "ripng:rejected:DG";<br>
                else<br>
                        accept "ripng:accepted:not-DG";<br>
        };</p>
<p dir="ltr">export all;</p>
<p dir="ltr">---------------------------------------------------------</p>
<p dir="ltr">the problem is solved, yet it puzzles me.<br>
This is really strange. Does anybody understand what is happening ??</p>