initNeighborIdx(nidx, ll_addr);
} else {
dbg("LI", "No room in the table\n");
- if (signal CompareBit.shouldInsert(msg,
- call Packet.getPayload(msg, call Packet.payloadLength(msg)),
- call Packet.payloadLength(msg),
- call LinkPacketMetadata.highChannelQuality(msg))) {
- nidx = findRandomNeighborIdx();
- if (nidx != INVALID_RVAL) {
- signal LinkEstimator.evicted(NeighborTable[nidx].ll_addr);
- initNeighborIdx(nidx, ll_addr);
+
+ /* if the white bit is set, lets ask the router if the path through
+ this link is better than at least one known path - if so
+ lets insert this link into the table.
+ */
+ if (call LinkPacketMetadata.highChannelQuality(msg)) {
+ if (signal CompareBit.shouldInsert(msg,
+ call Packet.getPayload(msg, call Packet.payloadLength(msg)),
+ call Packet.payloadLength(msg))) {
+ nidx = findRandomNeighborIdx();
+ if (nidx != INVALID_RVAL) {
+ signal LinkEstimator.evicted(NeighborTable[nidx].ll_addr);
+ initNeighborIdx(nidx, ll_addr);
+ }
}
}
}