Changeset 17 for trunk/src/dataFlowSet.c

Show
Ignore:
Timestamp:
05/22/06 16:25:24 (17 years ago)
Author:
andreu
Message:

*** empty log message ***

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/dataFlowSet.c

    r16 r17  
    6363  struct PrefixV4 prefixKey, *res; /* for bsearch */ 
    6464  struct AggCache agCache; 
     65  int bool = 0; 
    6566 
    6667  buffer2[1] = *(buf+(*offV9));(*offV9)++; 
     
    8687      return (data_length+shift); 
    8788    } 
     89    /* aggreg */ 
     90    agCache.routerAd = pcktPtr->ipH->srcAdd; 
     91    /* end aggreg */ 
    8892    pftmp = tmp->lastField; 
    8993    secondPftmp = tmp->lastField;     
     
    118122            case 1: 
    119123              buffer1 = *(buf+(*offV9)); (*offV9)++; 
     124              /* rule check */ 
    120125              if (((RuleDefPtr)(*(rulesCache+pos)))->value->stor.cvalue  
    121126                  == *((unsigned char*)&buffer1)) { 
    122127                ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 
    123128              } 
     129              /* end rule check */ 
    124130              /* aggregation */ 
    125  
     131              if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ 
     132                agCache.maskS = *((unsigned char*)&buffer1); 
     133              } 
     134              if ((pftmp->fieldType==13)||(pftmp->fieldType==30)){ 
     135                agCache.maskD = *((unsigned char*)&buffer1); 
     136              } 
     137              if (pftmp->fieldType==60){ 
     138                agCache.ipProt = *((unsigned char*)&buffer1); 
     139              } 
     140              if (pftmp->fieldType==4){ 
     141                agCache.tProt = *((unsigned char*)&buffer1); 
     142              } 
     143              if (pftmp->fieldType==61){ 
     144                agCache.sens = *((unsigned char*)&buffer1); 
     145              } 
     146              if (pftmp->fieldType==5){ 
     147                agCache.dscp = *((unsigned char*)&buffer1); 
     148              } 
    126149              /* end aggregation */ 
    127150              break; 
     
    133156                ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 
    134157              /* aggregation */ 
    135  
     158              if (pftmp->fieldType==10){ 
     159                agCache.idSnmp = *((unsigned short*)&buffer2); 
     160              } 
     161              /* end aggregation */ 
     162              break; 
     163            case 3: 
     164              buffer4[3]= 0; 
     165              buffer4[2]= *(buf+(*offV9)); (*offV9)++; 
     166              buffer4[1]= *(buf+(*offV9)); (*offV9)++; 
     167              buffer4[0]= *(buf+(*offV9)); (*offV9)++; 
     168              if (((RuleDefPtr)(*(rulesCache+pos)))->value->stor.lvalue  
     169                  == *((unsigned long*)&buffer4)) 
     170                ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 
     171              /* aggregation */ 
    136172              /* end aggregation */ 
    137173              break; 
     
    148184                    ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 
    149185                  } 
    150                 prefixKey.beginning = *((unsigned long*)&buffer4); 
    151                 res = bsearch(&prefixKey, V4PTab, nbPV4,  
    152                               sizeof(struct PrefixV4), prefCmp); 
    153                 if (res == NULL) 
    154                   fprintf(stderr,"!"); 
    155                 else 
    156                   fprintf(stderr,"."); 
    157186              }        
    158187              /* aggregation */ 
    159  
     188              if ((pftmp->fieldType==8)){ 
     189                agCache.v4AdS = *((unsigned long*)&buffer4); 
     190              } 
     191              if ((pftmp->fieldType==12)){ 
     192                agCache.v4AdD = *((unsigned long*)&buffer4); 
     193              } 
     194              if (pftmp->fieldType==1){ 
     195                agCache.bytes = *((unsigned long*)&buffer4); 
     196              } 
     197              if (pftmp->fieldType==2){ 
     198                agCache.pkts = *((unsigned long*)&buffer4); 
     199              } 
    160200              /* end aggregation */ 
    161201              break; 
     
    311351          buffer1 = *(buf+(*offV9)); (*offV9)++; 
    312352          /* aggregation */ 
    313            
     353          if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ 
     354            agCache.maskS = *((unsigned char*)&buffer1); 
     355          } 
     356          if ((pftmp->fieldType==13)||(pftmp->fieldType==30)){ 
     357            agCache.maskD = *((unsigned char*)&buffer1); 
     358          } 
     359          if (pftmp->fieldType==60){ 
     360            agCache.ipProt = *((unsigned char*)&buffer1); 
     361          } 
     362          if (pftmp->fieldType==4){ 
     363            agCache.tProt = *((unsigned char*)&buffer1); 
     364          } 
     365          if (pftmp->fieldType==61){ 
     366            agCache.sens = *((unsigned char*)&buffer1); 
     367          } 
     368          if (pftmp->fieldType==5){ 
     369            agCache.dscp = *((unsigned char*)&buffer1); 
     370          }        
    314371          /* end aggregation */ 
    315372          break; 
     
    318375          buffer2[0]= *(buf+(*offV9)); (*offV9)++; 
    319376          /* aggregation */ 
    320            
     377          if (pftmp->fieldType==10){ 
     378            agCache.idSnmp = *((unsigned short*)&buffer2); 
     379          }        
     380          /* end aggregation */ 
     381          break; 
     382        case 3: 
     383          buffer4[3]= 0; 
     384          buffer4[2]= *(buf+(*offV9)); (*offV9)++; 
     385          buffer4[1]= *(buf+(*offV9)); (*offV9)++; 
     386          buffer4[0]= *(buf+(*offV9)); (*offV9)++; 
     387/*        fprintf(stderr,"L: %lu\n",(*((unsigned long*)&buffer4))); */ 
     388/*        fprintf(stderr,"L>>4: %lu\n",(*((unsigned long*)&buffer4))>>4); */ 
     389/*        fprintf(stderr,"L>>1<<29>>29: %lu\n",(*((unsigned long*)&buffer4))>>1<<29>>29); */ 
     390/*        fprintf(stderr,"L<<31>>31: %lu\n",(*((unsigned long*)&buffer4))<<31>>31); */ 
     391          /* aggregation */ 
    321392          /* end aggregation */ 
    322393          break; 
     
    327398          buffer4[0]= *(buf+(*offV9)); (*offV9)++; 
    328399          /* aggregation */ 
    329            
     400          if ((pftmp->fieldType==8)){ 
     401            bool = 1; 
     402            agCache.v4AdS = *((unsigned long*)&buffer4); 
     403          } else if ((pftmp->fieldType==12)){ 
     404            agCache.v4AdD = *((unsigned long*)&buffer4); 
     405          } else if (pftmp->fieldType==1){ 
     406            agCache.bytes = *((unsigned long*)&buffer4); 
     407          } else if (pftmp->fieldType==2){ 
     408            agCache.pkts = *((unsigned long*)&buffer4); 
     409          } 
    330410          /* end aggregation */ 
    331411          break; 
     
    353433         */ 
    354434        /* put aggregation cache information to tables */ 
    355  
     435        if (bool == 1){ 
     436          prefixKey.beginning = agCache.v4AdS>>(32-agCache.maskS)<<(32-agCache.maskS); 
     437          res = bsearch(&prefixKey, V4PTab, nbPV4,  
     438                        sizeof(struct PrefixV4), prefCmp); 
     439        } 
     440        bool = 0;     
    356441        /* end put */ 
    357442        /*