Listing 3. How the kernel updates a current MFC entry.

static void
ipmr_update_thresholds(struct mfc_cache *cache,
                        unsigned char *ttls)
{
   int vifi;

   cache->mfc_un.res.minvif = MAXVIFS;
   cache->mfc_un.res.maxvif = 0;
   memset(cache->mfc_un.res.ttls, 255, MAXVIFS);

   for (vifi=0; vifi<maxvif; vifi++) {
       if (VIF_EXISTS(vifi) &&
           ttls[vifi] && ttls[vifi] < 255) {
           cache->mfc_un.res.ttls[vifi] =
             ttls[vifi];
           if (cache->mfc_un.res.minvif > vifi)
               cache->mfc_un.res.minvif = vifi;
           if (cache->mfc_un.res.maxvif <= vifi)
               cache->mfc_un.res.maxvif = vifi + 1;
       }
   }
}