- Timestamp:
- 10/26/07 10:25:49 (15 years ago)
- Location:
- trunk/src
- Files:
-
- 8 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/dataFlowSet.c
r60 r61 35 35 int myQueue, 36 36 struct PrefixV4 *V4PTab, 37 size_t nbPV4 37 size_t nbPV4, 38 struct PrefixV4 *V4STab, 39 size_t nbSV4 38 40 ) 39 41 { … … 65 67 66 68 unsigned short tplMsgType = 11; 67 struct PrefixV4 prefixKey, *res, *res2 ; /* for bsearch */69 struct PrefixV4 prefixKey, *res, *res2, *resSub; /* for bsearch */ 68 70 #if defined(IPV4AGGIDSNMP) 69 71 struct PrefixV4 *res3; … … 636 638 sizeof(struct PrefixV4), prefGlobalCmp); 637 639 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 } 638 650 #if defined(IPV4AGGIDR) 639 651 if ( myPtrs->routersID[res->routerNb] == agCache.routerAd ) { 640 652 #elif defined(IPV4AGGIDSNMP) 641 653 if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1 ) { … … 656 668 sizeof(struct PrefixV4), prefGlobalCmp); 657 669 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 } 658 680 if (myPtrs->currentRouterPtr->sampled != 0 ){ 659 681 /* IN ("traffic to the prefix/subnet") */ … … 672 694 prefixKey.beginning = agCache.v4AdD>>(32-agCache.maskD)<<(32-agCache.maskD); 673 695 res2 = bsearch(&prefixKey, V4PTab, nbPV4, 674 sizeof(struct PrefixV4), prefGlobalCmp);696 sizeof(struct PrefixV4), prefGlobalCmp); 675 697 if (res2!=NULL){ 676 698 ((struct POP *)((myPtrs->matrixPOP) … … 686 708 ( 687 709 ((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; 690 712 ( 691 713 ((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; 694 716 ( 695 717 ((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++; 698 720 } 699 721 /* end interpop matrix accounting */ 700 722 #endif /* matrix */ 701 723 } else { 702 724 /* doublon or bad reference in prefix list */ 703 725 } 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 */ 705 727 prefixKey.beginning = agCache.v4AdD>>(32-agCache.maskD)<<(32-agCache.maskD); 706 728 res = bsearch(&prefixKey, V4PTab, nbPV4, 707 729 sizeof(struct PrefixV4), prefGlobalCmp); 708 730 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 } 709 741 if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1 ) { 710 742 if (myPtrs->currentRouterPtr->sampled != 0 ){ -
trunk/src/dataFlowSet.h
r60 r61 98 98 struct MyPtrs *, 99 99 int, 100 struct PrefixV4 *, size_t, 100 101 struct PrefixV4 *, size_t 101 102 ); -
trunk/src/get_conf.c
r60 r61 133 133 * read IPv4 prefix file and sort the list 134 134 */ 135 unsigned short getPrefixV4(char *filename, struct PrefixV4 *pV4TabPtr) 135 unsigned short getPrefixV4(char *filename, 136 struct PrefixV4 *pV4TabPtr, 137 struct PrefixV4 *pV4SubTabPtr, 138 unsigned short *subnetNb) 136 139 { 137 140 FILE *prefixFile; … … 144 147 unsigned char buffer4[4]; 145 148 int i = 0; 146 char prefixStrTab[MAX_IPV4_PREFIX][50]; 149 char prefixStrTab[MAX_IPV4_PREFIX+MAX_IPV4_SUBNET][50]; 150 struct PrefixV4 lastSuperNet; 151 unsigned short lastSuperNetIndex = 0; 152 unsigned short superNetIndex = 0; 153 unsigned short subNetIndex = 0; 147 154 148 155 if (!(prefixFile = fopen(filename, "r"))) { … … 150 157 exit(1); 151 158 } 159 160 *subnetNb = 0; 161 162 lastSuperNet.beginning = 0; 163 lastSuperNet.end = 0; 164 lastSuperNet.mask = 0; 165 lastSuperNet.sampling = 0; 166 #ifdef IPV4AGGIDR 167 lastSuperNet.routerNb = 0; 168 #endif 169 lastSuperNet.flowNbIN = 0; 170 lastSuperNet.bytesNbIN = 0; 171 lastSuperNet.pktsNbIN = 0; 172 lastSuperNet.flowNbOUT = 0; 173 lastSuperNet.bytesNbOUT = 0; 174 lastSuperNet.pktsNbOUT = 0; 175 lastSuperNet.firstCoSIN = 0; 176 lastSuperNet.secondCoSIN = 0; 177 lastSuperNet.thirdCoSIN = 0; 178 lastSuperNet.fourthCoSIN = 0; 179 lastSuperNet.firstCoSOUT = 0; 180 lastSuperNet.secondCoSOUT = 0; 181 lastSuperNet.thirdCoSOUT = 0; 182 lastSuperNet.fourthCoSOUT = 0; 183 152 184 for(i=0;i<MAX_IPV4_PREFIX;i++){ 153 185 pV4TabPtr[i].beginning = 0; … … 173 205 pV4TabPtr[i].fourthCoSOUT = 0; 174 206 } 207 for(i=0;i<MAX_IPV4_SUBNET;i++){ 208 pV4SubTabPtr[i].beginning = 0; 209 pV4SubTabPtr[i].end = 0; 210 pV4SubTabPtr[i].mask = 0; 211 pV4SubTabPtr[i].sampling = 0; 212 #ifdef IPV4AGGIDR 213 pV4SubTabPtr[i].routerNb = 0; 214 #endif 215 pV4SubTabPtr[i].flowNbIN = 0; 216 pV4SubTabPtr[i].bytesNbIN = 0; 217 pV4SubTabPtr[i].pktsNbIN = 0; 218 pV4SubTabPtr[i].flowNbOUT = 0; 219 pV4SubTabPtr[i].bytesNbOUT = 0; 220 pV4SubTabPtr[i].pktsNbOUT = 0; 221 pV4SubTabPtr[i].firstCoSIN = 0; 222 pV4SubTabPtr[i].secondCoSIN = 0; 223 pV4SubTabPtr[i].thirdCoSIN = 0; 224 pV4SubTabPtr[i].fourthCoSIN = 0; 225 pV4SubTabPtr[i].firstCoSOUT = 0; 226 pV4SubTabPtr[i].secondCoSOUT = 0; 227 pV4SubTabPtr[i].thirdCoSOUT = 0; 228 pV4SubTabPtr[i].fourthCoSOUT = 0; 229 } 175 230 while (fgets(line, 50, prefixFile) != 0) 176 231 { 177 232 strcpy(prefixStrTab[counter], line); 178 233 counter++; 179 if (counter == MAX_IPV4_PREFIX ) {234 if (counter == MAX_IPV4_PREFIX+MAX_IPV4_SUBNET) { 180 235 fprintf(stderr, "bufferoverflow in getPrefixV4 function (get_conf.c)\ 181 236 change the value of MAX_IPV4_PREFIX declaration and recompile \n"); … … 197 252 buffer4[2] = (unsigned char)n1; 198 253 buffer4[3] = (unsigned char)n0; 199 pV4TabPtr[i].beginning = 200 *((unsigned long*)&buffer4[0]); 201 pV4TabPtr[i].end = 202 *((unsigned long*)&buffer4[0]) +~(~0<<(32-n4)); 203 pV4TabPtr[i].mask = n4; 204 pV4TabPtr[i].sampling = 0; 205 #ifdef IPV4AGGIDR 206 pV4TabPtr[i].routerNb = n5; 207 #endif 208 pV4TabPtr[i].flowNbIN = 0; 209 pV4TabPtr[i].bytesNbIN = 0; 210 pV4TabPtr[i].pktsNbIN = 0; 211 pV4TabPtr[i].flowNbOUT = 0; 212 pV4TabPtr[i].bytesNbOUT = 0; 213 pV4TabPtr[i].pktsNbOUT = 0; 214 pV4TabPtr[i].firstCoSIN = 0; 215 pV4TabPtr[i].secondCoSIN = 0; 216 pV4TabPtr[i].thirdCoSIN = 0; 217 pV4TabPtr[i].fourthCoSIN = 0; 218 pV4TabPtr[i].firstCoSOUT = 0; 219 pV4TabPtr[i].secondCoSOUT = 0; 220 pV4TabPtr[i].thirdCoSOUT = 0; 221 pV4TabPtr[i].fourthCoSOUT = 0; 254 /* we sort supernet and subnet */ 255 if (lastSuperNet.beginning == 0) { 256 /* case of first supernet */ 257 lastSuperNet.beginning = *((unsigned long*)&buffer4[0]); 258 lastSuperNet.end = *((unsigned long*)&buffer4[0]) +~(~0<<(32-n4)); 259 lastSuperNet.mask = n4; 260 lastSuperNetIndex = i; 261 superNetIndex++; 262 pV4TabPtr[i].beginning = 263 *((unsigned long*)&buffer4[0]); 264 pV4TabPtr[i].end = 265 *((unsigned long*)&buffer4[0]) +~(~0<<(32-n4)); 266 pV4TabPtr[i].mask = n4; 267 pV4TabPtr[i].sampling = 0; 268 #ifdef IPV4AGGIDR 269 pV4TabPtr[i].routerNb = n5; 270 #endif 271 pV4TabPtr[i].flowNbIN = 0; 272 pV4TabPtr[i].bytesNbIN = 0; 273 pV4TabPtr[i].pktsNbIN = 0; 274 pV4TabPtr[i].flowNbOUT = 0; 275 pV4TabPtr[i].bytesNbOUT = 0; 276 pV4TabPtr[i].pktsNbOUT = 0; 277 pV4TabPtr[i].firstCoSIN = 0; 278 pV4TabPtr[i].secondCoSIN = 0; 279 pV4TabPtr[i].thirdCoSIN = 0; 280 pV4TabPtr[i].fourthCoSIN = 0; 281 pV4TabPtr[i].firstCoSOUT = 0; 282 pV4TabPtr[i].secondCoSOUT = 0; 283 pV4TabPtr[i].thirdCoSOUT = 0; 284 pV4TabPtr[i].fourthCoSOUT = 0; 285 286 } else if ( (lastSuperNet.beginning <= *((unsigned long*)&buffer4[0])) 287 && (lastSuperNet.end>=*((unsigned long*)&buffer4[0]) +~(~0<<(32-n4))) ) { 288 /* we are in the case of subnet */ 289 *subnetNb += 1; 290 fprintf(stderr,"SUBNET %lu SUPERNET %lu %lu, subnetnb : %hu\n", 291 *((unsigned long*)&buffer4[0]), 292 pV4TabPtr[lastSuperNetIndex].beginning, 293 pV4TabPtr[lastSuperNetIndex].end, 294 *subnetNb); 295 296 pV4TabPtr[lastSuperNetIndex].hasSubnet = 1; 297 pV4SubTabPtr[subNetIndex].beginning = 298 *((unsigned long*)&buffer4[0]); 299 pV4SubTabPtr[subNetIndex].end = 300 *((unsigned long*)&buffer4[0]) +~(~0<<(32-n4)); 301 pV4SubTabPtr[subNetIndex].mask = n4; 302 pV4SubTabPtr[subNetIndex].sampling = 0; 303 #ifdef IPV4AGGIDR 304 pV4SubTabPtr[subNetIndex].routerNb = n5; 305 #endif 306 pV4SubTabPtr[subNetIndex].flowNbIN = 0; 307 pV4SubTabPtr[subNetIndex].bytesNbIN = 0; 308 pV4SubTabPtr[subNetIndex].pktsNbIN = 0; 309 pV4SubTabPtr[subNetIndex].flowNbOUT = 0; 310 pV4SubTabPtr[subNetIndex].bytesNbOUT = 0; 311 pV4SubTabPtr[subNetIndex].pktsNbOUT = 0; 312 pV4SubTabPtr[subNetIndex].firstCoSIN = 0; 313 pV4SubTabPtr[subNetIndex].secondCoSIN = 0; 314 pV4SubTabPtr[subNetIndex].thirdCoSIN = 0; 315 pV4SubTabPtr[subNetIndex].fourthCoSIN = 0; 316 pV4SubTabPtr[subNetIndex].firstCoSOUT = 0; 317 pV4SubTabPtr[subNetIndex].secondCoSOUT = 0; 318 pV4SubTabPtr[subNetIndex].thirdCoSOUT = 0; 319 pV4SubTabPtr[subNetIndex].fourthCoSOUT = 0; 320 subNetIndex++; 321 } else { 322 /* we are in the supernet case */ 323 lastSuperNet.beginning = *((unsigned long*)&buffer4[0]); 324 lastSuperNet.end = *((unsigned long*)&buffer4[0]) +~(~0<<(32-n4)); 325 lastSuperNet.mask = n4; 326 lastSuperNetIndex = i; 327 pV4TabPtr[superNetIndex].beginning = 328 *((unsigned long*)&buffer4[0]); 329 pV4TabPtr[superNetIndex].end = 330 *((unsigned long*)&buffer4[0]) +~(~0<<(32-n4)); 331 pV4TabPtr[superNetIndex].mask = n4; 332 pV4TabPtr[superNetIndex].sampling = 0; 333 #ifdef IPV4AGGIDR 334 pV4TabPtr[superNetIndex].routerNb = n5; 335 #endif 336 pV4TabPtr[superNetIndex].flowNbIN = 0; 337 pV4TabPtr[superNetIndex].bytesNbIN = 0; 338 pV4TabPtr[superNetIndex].pktsNbIN = 0; 339 pV4TabPtr[superNetIndex].flowNbOUT = 0; 340 pV4TabPtr[superNetIndex].bytesNbOUT = 0; 341 pV4TabPtr[superNetIndex].pktsNbOUT = 0; 342 pV4TabPtr[superNetIndex].firstCoSIN = 0; 343 pV4TabPtr[superNetIndex].secondCoSIN = 0; 344 pV4TabPtr[superNetIndex].thirdCoSIN = 0; 345 pV4TabPtr[superNetIndex].fourthCoSIN = 0; 346 pV4TabPtr[superNetIndex].firstCoSOUT = 0; 347 pV4TabPtr[superNetIndex].secondCoSOUT = 0; 348 pV4TabPtr[superNetIndex].thirdCoSOUT = 0; 349 pV4TabPtr[superNetIndex].fourthCoSOUT = 0; 350 superNetIndex++; 351 } 222 352 } 223 353 if( fclose(prefixFile) == 0) { 224 return ( counter);354 return (superNetIndex); 225 355 } else { 226 356 fprintf(stderr,"%s not closed, \n", filename); 227 357 exit(1); 228 return( counter);358 return(superNetIndex); 229 359 } 230 360 } -
trunk/src/get_conf.h
r60 r61 57 57 int longCmp(const void *, const void *); 58 58 int getRegisteredRouters(char *, unsigned long *, unsigned long *); 59 unsigned short getPrefixV4(char *, struct PrefixV4 *); 59 unsigned short getPrefixV4(char *, struct PrefixV4 *, struct PrefixV4 *, 60 unsigned short *); 60 61 unsigned short getAS(char *, struct AS *); 61 62 -
trunk/src/renetcol.c
r60 r61 121 121 /* Create the list of routers */ 122 122 for (i=0; i<routerNb; i++){ 123 fprintf(stderr, "add router : %lu\n", sortedRouterList[i]);124 123 routersListPtr = addRouter(routersListPtr, sortedRouterList[i]); 125 124 } … … 136 135 } 137 136 138 if ( (shmForAgg->v4PrefixNb = getPrefixV4(SUBNETS_LIST, &(shmForAgg->prefixV4Tab[0][0]))) < 1){ 137 if ( (shmForAgg->v4PrefixNb = 138 getPrefixV4(SUBNETS_LIST, 139 &(shmForAgg->prefixV4Tab[0][0]), 140 &(shmForAgg->prefixV4SubnetTab[0][0]), 141 &(shmForAgg->v4SubnetNb) 142 )) < 1){ 139 143 fprintf(stderr, "renetcol: Error in %s\n", SUBNETS_LIST); 140 exit(1);141 144 } else { 142 fprintf(stderr, " %hu prefix are readedfrom %s\n",145 fprintf(stderr, "We have found %hu supernets from %s\n", 143 146 shmForAgg->v4PrefixNb, 144 147 SUBNETS_LIST); 145 } 146 if ( (shmForAgg->v4PrefixNb = getPrefixV4(SUBNETS_LIST, &(shmForAgg->prefixV4Tab[1][0]))) < 1){ 148 fprintf(stderr, "and %hu subnets\n", 149 shmForAgg->v4SubnetNb); 150 } 151 if ( (shmForAgg->v4PrefixNb = 152 getPrefixV4(SUBNETS_LIST, 153 &(shmForAgg->prefixV4Tab[1][0]), 154 &(shmForAgg->prefixV4SubnetTab[1][0]), 155 &(shmForAgg->v4SubnetNb) 156 )) < 1){ 147 157 fprintf(stderr, "renetcol: Error in %s\n", SUBNETS_LIST); 148 158 exit(1); 149 159 } 160 /* for (i=0; i<shmForAgg->v4PrefixNb; i++){ */ 161 /* fprintf(stderr, "SUPERNET : %lu, %hu\n",shmForAgg->prefixV4Tab[0][i].beginning, shmForAgg->prefixV4Tab[0][i].hasSubnet); */ 162 /* } */ 163 /* for (i=0; i<shmForAgg->v4SubnetNb; i++){ */ 164 /* fprintf(stderr, "SUBNET : %lu, %hu\n",shmForAgg->prefixV4SubnetTab[0][i].beginning, shmForAgg->prefixV4SubnetTab[0][i].hasSubnet); */ 165 /* } */ 150 166 151 167 shmForAgg->currentTable = 0; … … 520 536 myQueue, 521 537 shmForAgg->prefixV4Tab[shmForAgg->currentTable], 522 (size_t) shmForAgg->v4PrefixNb 523 ) ) < 0 ) { 538 (size_t) shmForAgg->v4PrefixNb, 539 shmForAgg->prefixV4SubnetTab[shmForAgg->currentTable], 540 (size_t) shmForAgg->v4SubnetNb) ) < 0 ) { 524 541 #ifdef DEBUG 525 542 fprintf (stderr, "wd>\n"); -
trunk/src/renetcol.h
r60 r61 68 68 unsigned short readed; 69 69 unsigned short v4PrefixNb; 70 unsigned short v4SubnetNb; 70 71 #ifdef ASACC 71 72 unsigned short ASNb; -
trunk/src/renetcolAgg.c
r60 r61 53 53 static char name[2048]; 54 54 static char ipStr[24]; 55 #if defined(MATRIX) && defined(IPV4AGGIDR) 55 56 static char indexStr[24]; 57 #endif 56 58 static char asStr[7]; 57 59 static char createstr[2048]; … … 233 235 } 234 236 /* ACCOUNTING for prefixV4SubnetTab */ 235 for (i=0; i<shmForAgg->v4 PrefixNb; i++){237 for (i=0; i<shmForAgg->v4SubnetNb; i++){ 236 238 /* HERE create or update RRD FILE */ 237 239 if (shmForAgg->prefixV4SubnetTab[index][i].sampling != 0) { … … 630 632 shmForAgg->prefixV4Tab[index][i].thirdCoSOUT = 0; 631 633 shmForAgg->prefixV4Tab[index][i].fourthCoSOUT = 0; 632 634 } 635 for (i=0; i<shmForAgg->v4SubnetNb; i++){ 633 636 shmForAgg->prefixV4SubnetTab[index][i].flowNbIN = 0; 634 637 shmForAgg->prefixV4SubnetTab[index][i].bytesNbIN = 0; -
trunk/src/renetcolAgg.h
r60 r61 49 49 unsigned short readed; 50 50 unsigned short v4PrefixNb; 51 unsigned short v4SubnetNb; 51 52 #ifdef ASACC 52 53 unsigned short ASNb;