Hi Gabriel,

  I send you some explanations about "local repair" from rfc 3561.
localrepairtimer function that is called from rt_ll_failed function is
for local repair as explained below.

/*_________________________________________*/
6.12. Local Repair

   When a link break in an active route occurs, the node upstream of that
break MAY choose to repair the link locally if the destination was no
farther than MAX_REPAIR_TTL hops away.  To repair the link break, the
node increments the sequence number for the destination and then
broadcasts a RREQ for that destination.  .....

/*_________________________________________*/

from rt_ll_failed function
/* if the broken link is closer to the dest than source, attempt a local
repair. Otherwise, bring down the route. */

  if (ch->num_forwards() > rt->rt_hops) {
     local_rt_repair(rt, p); // local repair
      return;
  }
  else
   {
    drop(p, DROP_RTR_MAC_CALLBACK);
    while((p = ifqueue->filter(broken_nbr))) {
        drop(p, DROP_RTR_MAC_CALLBACK);
     }
     // below function sends error message to the neighbors
     nb_delete(broken_nbr);
    }

    As you see above, if "local repair" is processed, local_rt_repair
function is called. And this function implements 6.12 section of the
rfc. Else all the packets waiting in the queue are dropped, and
senderror function is called from nb_delete function as Cenker says
before in the list.

 Best Regards.

Guzin Ulutas (CEng)


Reply via email to