Changeset 61 for trunk/src/dataFlowSet.c

Show
Ignore:
Timestamp:
10/26/07 10:25:49 (15 years ago)
Author:
andreu
Message:

tickets 12,19 & 20 closed

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/dataFlowSet.c

    r60 r61  
    3535                 int myQueue,  
    3636                 struct PrefixV4 *V4PTab,  
    37                  size_t nbPV4 
     37                 size_t nbPV4, 
     38                 struct PrefixV4 *V4STab, 
     39                 size_t nbSV4 
    3840                 ) 
    3941{ 
     
    6567 
    6668  unsigned short tplMsgType = 11; 
    67   struct PrefixV4 prefixKey, *res, *res2; /* for bsearch */ 
     69  struct PrefixV4 prefixKey, *res, *res2, *resSub; /* for bsearch */ 
    6870#if defined(IPV4AGGIDSNMP) 
    6971  struct PrefixV4 *res3; 
     
    636638                        sizeof(struct PrefixV4), prefGlobalCmp); 
    637639          if (res!=NULL){ 
     640            /* res is supernet or subnet ? */ 
     641            if (res->hasSubnet == 1) { 
     642              resSub = NULL; 
     643              resSub = bsearch(&prefixKey, V4STab, nbSV4,  
     644                               sizeof(struct PrefixV4), prefGlobalCmp); 
     645              if (resSub != NULL) { 
     646                res = resSub; 
     647                resSub = NULL; 
     648              } 
     649            } 
    638650#if defined(IPV4AGGIDR) 
    639             if ( myPtrs->routersID[res->routerNb] == agCache.routerAd  ) {  
     651            if ( myPtrs->routersID[res->routerNb] == agCache.routerAd  ) {  
    640652#elif defined(IPV4AGGIDSNMP) 
    641653            if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1  ) {          
     
    656668                             sizeof(struct PrefixV4), prefGlobalCmp); 
    657669              if (res3!=NULL){ 
     670                /* res is supernet or subnet ? */ 
     671                if (res3->hasSubnet == 1) { 
     672                  resSub = NULL; 
     673                  resSub = bsearch(&prefixKey, V4STab, nbSV4,  
     674                                   sizeof(struct PrefixV4), prefGlobalCmp); 
     675                  if (resSub != NULL) { 
     676                    res3 = resSub; 
     677                    resSub = NULL; 
     678                  } 
     679                } 
    658680                if (myPtrs->currentRouterPtr->sampled != 0 ){ 
    659681                  /* IN ("traffic to the prefix/subnet")  */ 
     
    672694              prefixKey.beginning = agCache.v4AdD>>(32-agCache.maskD)<<(32-agCache.maskD); 
    673695              res2 = bsearch(&prefixKey, V4PTab, nbPV4,  
    674                             sizeof(struct PrefixV4), prefGlobalCmp); 
     696                             sizeof(struct PrefixV4), prefGlobalCmp); 
    675697              if (res2!=NULL){           
    676698                ((struct POP *)((myPtrs->matrixPOP) 
     
    686708                ( 
    687709                 ((struct POP *)(myPtrs->matrixPOP) 
    688                  +((res->routerNb)*ROUTER_INDEX_MAX) 
    689                  +((ROUTER_INDEX_MAX-1))))->pktsNb += agCache.pkts;  
     710                  +((res->routerNb)*ROUTER_INDEX_MAX) 
     711                  +((ROUTER_INDEX_MAX-1))))->pktsNb += agCache.pkts;  
    690712                ( 
    691713                 ((struct POP *)(myPtrs->matrixPOP) 
    692                  +((res->routerNb)*ROUTER_INDEX_MAX) 
    693                  +((ROUTER_INDEX_MAX-1))))->bytesNb += agCache.bytes;  
     714                  +((res->routerNb)*ROUTER_INDEX_MAX) 
     715                  +((ROUTER_INDEX_MAX-1))))->bytesNb += agCache.bytes;  
    694716                ( 
    695717                 ((struct POP *)(myPtrs->matrixPOP) 
    696                  +((res->routerNb)*ROUTER_INDEX_MAX) 
    697                  +((ROUTER_INDEX_MAX-1))))->flowNb++;  
     718                  +((res->routerNb)*ROUTER_INDEX_MAX) 
     719                  +((ROUTER_INDEX_MAX-1))))->flowNb++;  
    698720              } 
    699721              /* end interpop matrix accounting */ 
    700722#endif /* matrix */ 
    701723            } else { 
    702               /* doublon or bad reference in prefix list */ 
     724                /* doublon or bad reference in prefix list */ 
    703725            } 
    704           } else { /* the prefix in source don't exist in your prefix list */ 
     726          } else { /* res==NULL, the prefix in source don't exist in your prefix list */ 
    705727            prefixKey.beginning = agCache.v4AdD>>(32-agCache.maskD)<<(32-agCache.maskD); 
    706728            res = bsearch(&prefixKey, V4PTab, nbPV4,  
    707729                          sizeof(struct PrefixV4), prefGlobalCmp); 
    708730            if (res!=NULL){ 
     731              /* res is supernet or subnet ? */ 
     732              if (res->hasSubnet == 1) { 
     733                resSub = NULL; 
     734                resSub = bsearch(&prefixKey, V4STab, nbSV4,  
     735                                 sizeof(struct PrefixV4), prefGlobalCmp); 
     736                if (resSub != NULL) { 
     737                  res = resSub; 
     738                  resSub = NULL; 
     739                } 
     740              } 
    709741              if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1  ) { 
    710742                if (myPtrs->currentRouterPtr->sampled != 0 ){