Changeset 59 for trunk/src/dataFlowSet.c

Show
Ignore:
Timestamp:
10/18/07 11:41:05 (15 years ago)
Author:
andreu
Message:

new aggregation method, based on SNMP index. New parameters in renetcolParam.h and new compilation options in configure.in.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/dataFlowSet.c

    r58 r59  
    132132      return (-1); 
    133133    } 
    134 #ifdef IPV4AGG 
     134#if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 
    135135    agCache.routerAd = myPtrs->pcktPtr->ipH->srcAdd;  
    136136#endif 
     
    192192              } 
    193193              /* end rule check */ 
    194 #ifdef IPV4AGG 
     194#if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 
    195195              if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ 
    196196                agCache.maskS = *((unsigned char*)&buffer1); 
     
    221221                  == *((unsigned short*)&buffer2)) 
    222222                ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 1; 
    223 #ifdef IPV4AGG 
     223#if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 
    224224              if (pftmp->fieldType==10){ 
    225225                agCache.inputSnmp = *((unsigned short*)&buffer2); 
     
    277277                  } 
    278278              } 
    279 #ifdef IPV4AGG 
     279#if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 
    280280              if ((pftmp->fieldType==8)){ 
    281281                bool = 1; /* very important, test if we have an IPv4 flow for Agg */ 
     
    448448          buffer1 = *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr));  
    449449          (*myPtrs->offsetV9Ptr)++; 
    450 #ifdef IPV4AGG 
     450#if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 
    451451          if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ 
    452452            agCache.maskS = *((unsigned char*)&buffer1); 
     
    474474          buffer2[0]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr));  
    475475          (*myPtrs->offsetV9Ptr)++; 
    476 #ifdef IPV4AGG 
     476#if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 
    477477          if (pftmp->fieldType==10){ 
    478478            agCache.inputSnmp = *((unsigned short*)&buffer2); 
     
    506506          buffer4[0]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr));  
    507507          (*myPtrs->offsetV9Ptr)++; 
    508 #ifdef IPV4AGG 
     508#if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 
    509509          if ((pftmp->fieldType==8)){ 
    510510            bool = 1; 
     
    548548        /* Aggregation mode must be enable in ./configure options   */ 
    549549        /* first we must know if the address belong to our prefix   */ 
    550 #ifdef IPV4AGG 
     550#if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 
    551551        if ( (bool == 1) && (isMplsFlow == 0) ){ 
    552552          prefixKey.beginning = agCache.v4AdS>>(32-agCache.maskS)<<(32-agCache.maskS); 
     
    554554                        sizeof(struct PrefixV4), prefGlobalCmp); 
    555555          if (res!=NULL){ 
    556 /*          if ( myPtrs->routersID[res->routerNb] == agCache.routerAd  ) { */ 
     556#if defined(IPV4AGGIDR) 
     557            if ( myPtrs->routersID[res->routerNb] == agCache.routerAd  ) {  
     558#elif defined(IPV4AGGIDSNMP) 
    557559            if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1  ) {          
    558               /* OUT ("traffic from the prefix/subnet")  */ 
    559               res->bytesNbOUT += agCache.bytes; 
    560               res->pktsNbOUT += agCache.pkts; 
    561               (res->flowNbOUT)++; 
    562               if (res->sampling == 0) { 
     560#endif 
     561              if (myPtrs->currentRouterPtr->sampled != 0 ){ 
     562                /* OUT ("traffic from the prefix/subnet")  */ 
     563                res->bytesNbOUT += agCache.bytes; 
     564                res->pktsNbOUT += agCache.pkts; 
     565                (res->flowNbOUT)++; 
     566              } 
     567              if (res->sampling == 0  
     568                  && myPtrs->currentRouterPtr->sampled != 0){ 
    563569                res->sampling = myPtrs->currentRouterPtr->sampled; 
    564               } else if (res->sampling != myPtrs->currentRouterPtr->sampled) { 
    565                 syslog(LOG_INFO, 
    566                        "2 sampling values for 1 subnet: %lu.%lu.%lu.%lu % from router %lu.%lu.%lu.%lu", 
    567                        agCache.v4AdS>>24, 
    568                        agCache.v4AdS<<8>>24, 
    569                        agCache.v4AdS<<16>>24, 
    570                        agCache.v4AdS<<24>>24, 
    571                        (myPtrs->pcktPtr->ipH->srcAdd>>24), 
    572                        (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), 
    573                        (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), 
    574                        (myPtrs->pcktPtr->ipH->srcAdd<<24>>24)); 
    575               } 
     570              } 
     571#if defined(MATRIX) && defined(IPV4AGGIDR) 
    576572              /* inter-pop matrix Accounting */ 
    577573              prefixKey.beginning = agCache.v4AdD>>(32-agCache.maskD)<<(32-agCache.maskD); 
     
    603599              } 
    604600              /* end interpop matrix accounting */ 
     601#endif /* matrix */ 
    605602            } else { 
    606603              /* doublon or bad reference in prefix list */ 
     
    612609            if (res!=NULL){ 
    613610              if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1  ) {        
    614                 /* IN ("traffic to the prefix/subnet")  */ 
    615                 res->bytesNbIN += agCache.bytes; 
    616                 res->pktsNbIN += agCache.pkts; 
    617                 (res->flowNbIN)++;       
    618 /*            if ( myPtrs->routersID[res->routerNb] == agCache.routerAd  ) { */ 
    619 /*               IN ("traffic to the prefix")  */  
    620 /*              res->bytesNbIN += agCache.bytes; */ 
    621 /*              res->pktsNbIN += agCache.pkts; */ 
    622 /*              (res->flowNbIN)++; */ 
    623 /*              if (res->sampling == 0) { */ 
    624 /*                res->sampling = myPtrs->currentRouterPtr->sampled; */ 
    625 /*              } else if (res->sampling !=  myPtrs->currentRouterPtr->sampled) { */ 
    626 /*                syslog(LOG_INFO, */ 
    627 /*                       "2 sampling values for 1 /: %lu.%lu.%lu.%lu % from router %lu.%lu.%lu.%lu", */ 
    628 /*                       agCache.v4AdS>>24, */ 
    629 /*                       agCache.v4AdS<<8>>24, */ 
    630 /*                       agCache.v4AdS<<16>>24, */ 
    631 /*                       agCache.v4AdS<<24>>24, */ 
    632 /*                       (myPtrs->pcktPtr->ipH->srcAdd>>24), */ 
    633 /*                       (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), */ 
    634 /*                       (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), */ 
    635 /*                       (myPtrs->pcktPtr->ipH->srcAdd<<24>>24)); */ 
    636 /*              } */ 
     611                if (myPtrs->currentRouterPtr->sampled != 0 ){ 
     612                  /* IN ("traffic to the prefix/subnet")  */ 
     613                  res->bytesNbIN += agCache.bytes; 
     614                  res->pktsNbIN += agCache.pkts; 
     615                  (res->flowNbIN)++; 
     616                } 
     617#if defined(IPV4AGGIDR)  
     618              if ( myPtrs->routersID[res->routerNb] == agCache.routerAd  ) { 
     619                if (myPtrs->currentRouterPtr->sampled != 0 ){ 
     620                  /* IN ("traffic to the prefix")  */ 
     621                  res->bytesNbIN += agCache.bytes; 
     622                  res->pktsNbIN += agCache.pkts; 
     623                  (res->flowNbIN)++; 
     624                } 
     625#endif 
     626                if (res->sampling == 0  
     627                    && myPtrs->currentRouterPtr->sampled != 0 ){ 
     628                  res->sampling = myPtrs->currentRouterPtr->sampled; 
     629                } 
    637630/*            } else { */ 
    638631                /* doublon or bad reference in prefix list */ 
     
    662655                      (myPtrs->pcktPtr->ipH->srcAdd<<24>>24) 
    663656                      ); 
    664 #endif 
     657#endif /* PRINTUNKNOWNSUBNET */ 
    665658            } 
    666659          } 
     
    668661        bool = 0; 
    669662        isMplsFlow = 0; 
    670 #endif 
     663#endif /* (IPV4AGGIDR) || (IPV4AGGIDSNMP) */ 
    671664        /*  
    672665         * Redirection if needed  
     
    831824              } 
    832825            }else{ 
    833               syslog(LOG_INFO,"Sampling value not standard for router : %lu.%lu.%lu.%lu", 
     826              syslog(LOG_INFO,"Sampling value not standard for router : %lu.%lu.%lu.%lu, value : %lu", 
    834827                     (myPtrs->pcktPtr->ipH->srcAdd>>24), 
    835828                     (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), 
    836829                     (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), 
    837                      (myPtrs->pcktPtr->ipH->srcAdd<<24>>24) 
     830                     (myPtrs->pcktPtr->ipH->srcAdd<<24>>24), 
     831                     *((unsigned long*)&buffer4) 
    838832                     ); 
    839833            }