- xnnet(n->rip_dst[0]) = ns_netof(sns->sns_addr);
- n->rip_metric = htons(min(rt->rt_metric + 1, HOPCNT_INFINITY));
+ metric = min(rt->rt_metric + 1, HOPCNT_INFINITY);
+ net = ns_netof(sns->sns_addr);
+ /*
+ * Make sure that we don't put out a two net entries
+ * for a pt to pt link (one for the G route, one for the if)
+ * This is a kludge, and won't work if there are lots of nets.
+ */
+ for (nn = msg->rip_nets; nn < n; nn++) {
+ if(net == xnnet(nn->rip_dst[0])) {
+ if(metric < ntohs(nn->rip_metric))
+ nn->rip_metric = htons(metric);
+ goto next;
+ }
+ }
+ xnnet(n->rip_dst[0]) = net;
+ n->rip_metric = htons(metric);