Changeset 18 for trunk/src/dataFlowSet.c

Show
Ignore:
Timestamp:
06/09/06 18:18:15 (17 years ago)
Author:
andreu
Message:

ajout pour CRIHAN

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/dataFlowSet.c

    r17 r18  
    3535                 short *cFId, DatagramPtr pcktPtr, RuleDefPtr *rulesCache, 
    3636                 RulesPtr rlPtr, int myQueue, struct PrefixV4 *V4PTab,  
    37                  size_t nbPV4) 
     37                 size_t nbPV4,  
     38                 struct IPFLowCache *ipCache, struct MPLSFlowCache *mplsCache, 
     39                 unsigned long *ipCounter, unsigned long *mplsCounter) 
    3840{ 
    3941  TplFlowSetPtr tmp; 
     
    6365  struct PrefixV4 prefixKey, *res; /* for bsearch */ 
    6466  struct AggCache agCache; 
     67  struct IPFLowCache ipFirstCache; /* CRI */ 
     68  struct MPLSFlowCache mplsFirstCache; /* CRI */ 
     69  unsigned long firstTime = 0; /* CRI */ 
     70  unsigned long lastTime = 0; /* CRI */ 
    6571  int bool = 0; 
     72 
     73  /* CRI */ 
     74  ipFirstCache.ipProt = 0; 
     75  ipFirstCache.bytes = 0; 
     76  ipFirstCache.pkts = 0; 
     77  ipFirstCache.inSnmp = 0; 
     78  ipFirstCache.outSnmp = 0; 
     79  ipFirstCache.v4AdS = 0; 
     80  ipFirstCache.v4AdD = 0; 
     81  ipFirstCache.tProt = 0; 
     82  ipFirstCache.sPort = 0; 
     83  ipFirstCache.dPort = 0; 
     84  ipFirstCache.maskD = 0; 
     85  ipFirstCache.maskS = 0; 
     86  ipFirstCache.routerAd = 0; 
     87  ipFirstCache.liveTime = 0; 
     88  mplsFirstCache.ipProt = 0; 
     89  mplsFirstCache.v4AdS = 0; 
     90  mplsFirstCache.v4AdD = 0; 
     91  mplsFirstCache.routerAd = 0; 
     92  mplsFirstCache.mplsLabel1 = 0; 
     93  /* CRI */ 
    6694 
    6795  buffer2[1] = *(buf+(*offV9));(*offV9)++; 
     
    88116    } 
    89117    /* aggreg */ 
    90     agCache.routerAd = pcktPtr->ipH->srcAdd; 
     118/*     agCache.routerAd = pcktPtr->ipH->srcAdd; */ 
    91119    /* end aggreg */ 
     120 
     121    /* CRI */ 
     122    ipFirstCache.routerAd = pcktPtr->ipH->srcAdd; 
     123    mplsFirstCache.routerAd = pcktPtr->ipH->srcAdd; 
     124    /* end CRI */ 
     125 
    92126    pftmp = tmp->lastField; 
    93127    secondPftmp = tmp->lastField;     
     
    129163              /* end rule check */ 
    130164              /* aggregation */ 
     165/*            if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ */ 
     166/*              agCache.maskS = *((unsigned char*)&buffer1); */ 
     167/*            } */ 
     168/*            if ((pftmp->fieldType==13)||(pftmp->fieldType==30)){ */ 
     169/*              agCache.maskD = *((unsigned char*)&buffer1); */ 
     170/*            } */ 
     171/*            if (pftmp->fieldType==60){ */ 
     172/*              agCache.ipProt = *((unsigned char*)&buffer1); */ 
     173/*            } */ 
     174/*            if (pftmp->fieldType==4){ */ 
     175/*              agCache.tProt = *((unsigned char*)&buffer1); */ 
     176/*            } */ 
     177/*            if (pftmp->fieldType==61){ */ 
     178/*              agCache.sens = *((unsigned char*)&buffer1); */ 
     179/*            } */ 
     180/*            if (pftmp->fieldType==5){ */ 
     181/*              agCache.dscp = *((unsigned char*)&buffer1); */ 
     182/*            } */ 
     183              /* end aggregation */ 
     184              /* CRI */ 
    131185              if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ 
    132                 agCache.maskS = *((unsigned char*)&buffer1); 
     186                ipFirstCache.maskS = *((unsigned char*)&buffer1); 
    133187              } 
    134188              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               } 
    149               /* end aggregation */ 
     189                ipFirstCache.maskD = *((unsigned char*)&buffer1); 
     190              } 
     191              if (pftmp->fieldType==60){  
     192                ipFirstCache.ipProt = *((unsigned char*)&buffer1);  
     193                mplsFirstCache.ipProt = *((unsigned char*)&buffer1);  
     194              } 
     195              if (pftmp->fieldType==4){  
     196                ipFirstCache.tProt = *((unsigned char*)&buffer1);  
     197              } 
     198              /* end CRI */ 
    150199              break; 
    151200            case 2: 
     
    156205                ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 
    157206              /* aggregation */ 
     207/*            if (pftmp->fieldType==10){ */ 
     208/*              agCache.idSnmp = *((unsigned short*)&buffer2); */ 
     209/*            } */ 
     210              /* end aggregation */ 
     211              /* CRI */ 
    158212              if (pftmp->fieldType==10){ 
    159                 agCache.idSnmp = *((unsigned short*)&buffer2); 
    160               } 
    161               /* end aggregation */ 
     213                ipFirstCache.inSnmp = *((unsigned short*)&buffer2); 
     214              } 
     215              if (pftmp->fieldType==14){ 
     216                ipFirstCache.outSnmp = *((unsigned short*)&buffer2); 
     217              } 
     218              if (pftmp->fieldType==7){ 
     219                ipFirstCache.sPort = *((unsigned short*)&buffer2); 
     220              } 
     221              if (pftmp->fieldType==11){ 
     222                ipFirstCache.dPort = *((unsigned short*)&buffer2); 
     223              } 
     224              /* end CRI */  
    162225              break; 
    163226            case 3: 
     
    171234              /* aggregation */ 
    172235              /* end aggregation */ 
     236              /* CRI */ 
     237              if (pftmp->fieldType==70){ 
     238                mplsFirstCache.mplsLabel1 = (*((unsigned long*)&buffer4))>>4; 
     239              } 
     240              /* end CRI */ 
    173241              break; 
    174242            case 4: 
     
    186254              }        
    187255              /* aggregation */ 
    188               if ((pftmp->fieldType==8)){ 
    189                 agCache.v4AdS = *((unsigned long*)&buffer4); 
    190               } 
    191               if ((pftmp->fieldType==12)){ 
    192                 agCache.v4AdD = *((unsigned long*)&buffer4); 
     256/*            if ((pftmp->fieldType==8)){ */ 
     257/*              agCache.v4AdS = *((unsigned long*)&buffer4); */ 
     258/*            } */ 
     259/*            if ((pftmp->fieldType==12)){ */ 
     260/*              agCache.v4AdD = *((unsigned long*)&buffer4); */ 
     261/*            } */ 
     262/*            if (pftmp->fieldType==1){ */ 
     263/*              agCache.bytes = *((unsigned long*)&buffer4); */ 
     264/*            } */ 
     265/*            if (pftmp->fieldType==2){ */ 
     266/*              agCache.pkts = *((unsigned long*)&buffer4); */ 
     267/*            } */ 
     268              /* end aggregation */ 
     269              /* CRI */ 
     270              if (pftmp->fieldType==8){ 
     271                ipFirstCache.v4AdS = *((unsigned long*)&buffer4); 
     272              } 
     273              if (pftmp->fieldType==12){ 
     274                ipFirstCache.v4AdD = *((unsigned long*)&buffer4); 
    193275              } 
    194276              if (pftmp->fieldType==1){ 
    195                 agCache.bytes = *((unsigned long*)&buffer4); 
     277                ipFirstCache.bytes = *((unsigned long*)&buffer4); 
    196278              } 
    197279              if (pftmp->fieldType==2){ 
    198                 agCache.pkts = *((unsigned long*)&buffer4); 
    199               } 
    200               /* end aggregation */ 
     280                ipFirstCache.pkts = *((unsigned long*)&buffer4); 
     281              } 
     282              if (pftmp->fieldType==22){ 
     283                firstTime = *((unsigned long*)&buffer4); 
     284              } 
     285              if (pftmp->fieldType==21){ 
     286                lastTime = *((unsigned long*)&buffer4); 
     287              } 
     288              /* end CRI */ 
    201289              break; 
    202290            case 16: 
     
    351439          buffer1 = *(buf+(*offV9)); (*offV9)++; 
    352440          /* aggregation */ 
     441/*        if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ */ 
     442/*          agCache.maskS = *((unsigned char*)&buffer1); */ 
     443/*        } */ 
     444/*        if ((pftmp->fieldType==13)||(pftmp->fieldType==30)){ */ 
     445/*          agCache.maskD = *((unsigned char*)&buffer1); */ 
     446/*        } */ 
     447/*        if (pftmp->fieldType==60){ */ 
     448/*          agCache.ipProt = *((unsigned char*)&buffer1); */ 
     449/*        } */ 
     450/*        if (pftmp->fieldType==4){ */ 
     451/*          agCache.tProt = *((unsigned char*)&buffer1); */ 
     452/*        } */ 
     453/*        if (pftmp->fieldType==61){ */ 
     454/*          agCache.sens = *((unsigned char*)&buffer1); */ 
     455/*        } */ 
     456/*        if (pftmp->fieldType==5){ */ 
     457/*          agCache.dscp = *((unsigned char*)&buffer1); */ 
     458/*        }        */ 
     459          /* end aggregation */ 
     460          /* CRI */ 
    353461          if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ 
    354             agCache.maskS = *((unsigned char*)&buffer1); 
     462            ipFirstCache.maskS = *((unsigned char*)&buffer1); 
    355463          } 
    356464          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           }        
    371           /* end aggregation */ 
     465            ipFirstCache.maskD = *((unsigned char*)&buffer1); 
     466          } 
     467          if (pftmp->fieldType==60){  
     468            ipFirstCache.ipProt = *((unsigned char*)&buffer1);  
     469            mplsFirstCache.ipProt = *((unsigned char*)&buffer1);  
     470          } 
     471          if (pftmp->fieldType==4){  
     472            ipFirstCache.tProt = *((unsigned char*)&buffer1);  
     473          } 
    372474          break; 
    373475        case 2: 
     
    379481          }        
    380482          /* end aggregation */ 
     483          /* CRI */ 
     484          if (pftmp->fieldType==10){ 
     485            ipFirstCache.inSnmp = *((unsigned short*)&buffer2); 
     486          } 
     487          if (pftmp->fieldType==14){ 
     488            ipFirstCache.outSnmp = *((unsigned short*)&buffer2); 
     489          } 
     490          if (pftmp->fieldType==7){ 
     491            ipFirstCache.sPort = *((unsigned short*)&buffer2); 
     492          } 
     493          if (pftmp->fieldType==11){ 
     494            ipFirstCache.dPort = *((unsigned short*)&buffer2); 
     495          } 
     496          /* end CRI */  
    381497          break; 
    382498        case 3: 
     
    385501          buffer4[1]= *(buf+(*offV9)); (*offV9)++; 
    386502          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); */ 
    391503          /* aggregation */ 
    392504          /* end aggregation */ 
     505          /* CRI */ 
     506          if (pftmp->fieldType==70){ 
     507            mplsFirstCache.mplsLabel1 = (*((unsigned long*)&buffer4))>>4; 
     508          } 
     509          /* end CRI */ 
    393510          break; 
    394511        case 4: 
     
    398515          buffer4[0]= *(buf+(*offV9)); (*offV9)++; 
    399516          /* aggregation */ 
    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           } 
     517/*        if ((pftmp->fieldType==8)){ */ 
     518/*          bool = 1; */ 
     519/*          agCache.v4AdS = *((unsigned long*)&buffer4); */ 
     520/*        } else if ((pftmp->fieldType==12)){ */ 
     521/*          agCache.v4AdD = *((unsigned long*)&buffer4); */ 
     522/*        } else if (pftmp->fieldType==1){ */ 
     523/*          agCache.bytes = *((unsigned long*)&buffer4); */ 
     524/*        } else if (pftmp->fieldType==2){ */ 
     525/*          agCache.pkts = *((unsigned long*)&buffer4); */ 
     526/*        } */ 
    410527          /* end aggregation */ 
     528          /* CRI */ 
     529          if (pftmp->fieldType==8){ 
     530            ipFirstCache.v4AdS = *((unsigned long*)&buffer4); 
     531          } 
     532          if (pftmp->fieldType==12){ 
     533            ipFirstCache.v4AdD = *((unsigned long*)&buffer4); 
     534          } 
     535          if (pftmp->fieldType==1){ 
     536            ipFirstCache.bytes = *((unsigned long*)&buffer4); 
     537          } 
     538          if (pftmp->fieldType==2){ 
     539            ipFirstCache.pkts = *((unsigned long*)&buffer4); 
     540          } 
     541          if (pftmp->fieldType==22){ 
     542            firstTime = *((unsigned long*)&buffer4); 
     543          } 
     544          if (pftmp->fieldType==21){ 
     545            lastTime = *((unsigned long*)&buffer4); 
     546          } 
     547          /* end CRI */ 
    411548          break; 
    412549        case 16: 
     
    417554            buffer2[0]= *(buf+(*offV9)); (*offV9)++; 
    418555          } 
    419           /* aggregation */ 
    420            
     556          /* aggregation */        
    421557          /* end aggregation */ 
    422558          break; 
     
    432568         * end of one flow (not the flowset)  
    433569         */ 
     570        /* CRI */ 
     571        printf("!"); 
     572        if ( mplsFirstCache.mplsLabel1 == 0 ) { 
     573          (ipCache+(*ipCounter))->ipProt = ipFirstCache.ipProt; 
     574          ipFirstCache.ipProt = 0; 
     575          (ipCache+(*ipCounter))->bytes = ipFirstCache.bytes; 
     576          ipFirstCache.bytes = 0; 
     577          (ipCache+(*ipCounter))->pkts = ipFirstCache.pkts; 
     578          ipFirstCache.pkts = 0; 
     579          (ipCache+(*ipCounter))->inSnmp = ipFirstCache.inSnmp; 
     580          ipFirstCache.inSnmp = 0; 
     581          (ipCache+(*ipCounter))->outSnmp = ipFirstCache.outSnmp; 
     582          ipFirstCache.outSnmp = 0; 
     583          (ipCache+(*ipCounter))->v4AdS = ipFirstCache.v4AdS; 
     584          ipFirstCache.outSnmp = 0; 
     585          (ipCache+(*ipCounter))->v4AdD = ipFirstCache.v4AdD; 
     586          ipFirstCache.v4AdD = 0; 
     587          (ipCache+(*ipCounter))->tProt = ipFirstCache.tProt; 
     588          ipFirstCache.tProt = 0; 
     589          (ipCache+(*ipCounter))->sPort = ipFirstCache.sPort; 
     590          ipFirstCache.sPort = 0; 
     591          (ipCache+(*ipCounter))->dPort = ipFirstCache.dPort; 
     592          ipFirstCache.dPort = 0; 
     593          (ipCache+(*ipCounter))->maskD = ipFirstCache.maskD; 
     594          ipFirstCache.maskD = 0; 
     595          (ipCache+(*ipCounter))->maskS = ipFirstCache.maskS; 
     596          ipFirstCache.maskS = 0; 
     597          (ipCache+(*ipCounter))->routerAd = ipFirstCache.routerAd; 
     598          (ipCache+(*ipCounter))->liveTime = lastTime - firstTime; 
     599          firstTime = 0; lastTime = 0; 
     600          (*ipCounter)++; 
     601        } else { 
     602          printf("im\n"); 
     603          (mplsCache+(*mplsCounter))->ipProt = mplsFirstCache.ipProt; 
     604          mplsFirstCache.ipProt = 0; 
     605          (mplsCache+(*mplsCounter))->v4AdS =  mplsFirstCache.v4AdS; 
     606          mplsFirstCache.v4AdS = 0; 
     607          (mplsCache+(*mplsCounter))->v4AdD =  mplsFirstCache.v4AdD;  
     608          mplsFirstCache.v4AdD = 0; 
     609          (mplsCache+(*mplsCounter))->routerAd =  mplsFirstCache.routerAd; 
     610          (mplsCache+(*mplsCounter))->mplsLabel1 =  mplsFirstCache.mplsLabel1; 
     611          mplsFirstCache.mplsLabel1 = 0; 
     612          (*mplsCounter)++; 
     613        } 
     614        /* CRI */ 
    434615        /* put aggregation cache information to tables */ 
    435616        if (bool == 1){ 
     
    443624         * Redirection if needed  
    444625         * switch the rules definition (check & fieldToRecord),  
    445          * we send the flow or a part of the flow to the msg queue 
     626         * we send the flow or a part of the flow to a remote host or a file 
    446627         */ 
    447628        tmpRuleList = rlPtr;