In the current version of Quagga on Linux, I found there is a rule which can suppress some kind routes information from advertising out to neighbor routers via RIPv2.
If router r1 connects to another router r2 via an interface 'nic0', and r1 has another interface 'nic1' connect to another network 'net1'. Then r1 hopes to advertise route to 'net1' to its neighbor r2. The network, say net0, is the network connecting r1 and r2, which is, say, 10.3.1.32/27, and the network 'net1' is, say, 10.3.1.0/24.
In this case, the route entry of 10.3.1.0/24 (via nic1) will not be sent to r2 because the RIPv2 program in Quagga internally suppressed the entry and drop it.
I checked the source code of RIPv2 of Quagga, and found that is because of a rule: 10.3.1.0/24 has a network prefix which is contained by the network prefix of 10.3.1.32/27, in other words, the leftmost 24 bits of 10.3.1.0 is a substring of the leftmost 27 bits of 10.3.1.32.
But I don't understand why there is such a rule. Is it defined by RIPv2 standard or just a quirk of Quagga? In my understanding, the overlapping between net0 and net1 is valid and should not be a problem because of the 'Longest Network Prefix Matching Rule' in routing, and to the router r2, it really need to know there exists a bigger network net1 (comparing to net0) can be reached via r1. If this route info was suppressed by Quagga, r2 will not know that and the hosts in net1 cannot be accessed from net0 from r2 side.
Is there someone who know that?
Thanks, woody