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;
       }
   }
}
  
  
  
  
  
  
  
  
  
    Copyright © 1994 - 2018 Linux Journal.  All rights reserved.