- Timestamp:
- 02/09/09 17:55:11 (14 years ago)
- Location:
- trunk
- Files:
-
- 10 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/configure.in
r94 r95 14 14 CFLAGS_IPV4AGGIDSNMP="-DIPV4AGGIDSNMP" 15 15 CFLAGS_IPV6AGGIDSNMP="-DIPV6AGGIDSNMP" 16 CFLAGS_IPV6LINKAGG="-DIPV6LINKAGG" 16 17 CFLAGS_IPV4AGGIDR="-DIPV4AGGIDR" 17 18 CFLAGS_MATRIX="-DMATRIX" … … 64 65 fi 65 66 66 AC_ARG_ENABLE(ipv6aggidsnmp,[ --enable-ipv6aggidsnmp aggregation for IPv6 prefix, localisation based on SNMP ID= yes],67 ipv6aggidsnmp=$enableval,ipv6aggidsnmp= yes)67 AC_ARG_ENABLE(ipv6aggidsnmp,[ --enable-ipv6aggidsnmp aggregation for IPv6 prefix, localisation based on SNMP ID=no], 68 ipv6aggidsnmp=$enableval,ipv6aggidsnmp=no) 68 69 if test $ipv6aggidsnmp = yes ; then 69 70 CFLAGS="$CFLAGS $CFLAGS_IPV6AGGIDSNMP" 71 fi 72 73 AC_ARG_ENABLE(ipv6linkagg,[ --enable-ipv6linkagg aggregation for IPv6 link agg (based on SNMP ID)=no], 74 ipv6linkagg=$enableval,ipv6linkagg=no) 75 if test $ipv6linkagg = yes ; then 76 CFLAGS="$CFLAGS $CFLAGS_IPV6LINKAGG" 70 77 fi 71 78 -
trunk/src/dataFlowSet.c
r94 r95 76 76 struct AggCache agCache; 77 77 int bool = 0; /* in IPV4 Agg mode enabled, we need to now if it's an IPv4 */ 78 int isIPv6 = 0; 78 79 /* flow, we test on the field and then put bool at 1 */ 79 80 int isMplsFlow = 0; … … 350 351 break; 351 352 case 16: 352 for (i=0; i<4; i++) { 353 buffer4[3]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 354 (*myPtrs->offsetV9Ptr)++; 355 buffer4[2]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 356 (*myPtrs->offsetV9Ptr)++; 357 buffer4[1]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 358 (*myPtrs->offsetV9Ptr)++; 359 buffer4[0]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 360 (*myPtrs->offsetV9Ptr)++; 361 if (1==moreIsNecessary){ 362 switch(i){ 363 case 0: 364 if (((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask <= 32){ 365 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 366 == 367 (*((unsigned long*)&buffer4))>>(32-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask)<<(32-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask) 368 ) 369 { 370 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 1; 353 if ((pftmp->fieldType==27)||(pftmp->fieldType==28)){ 354 isIPv6 = 1; 355 for (i=0; i<4; i++) { 356 buffer4[3]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 357 (*myPtrs->offsetV9Ptr)++; 358 buffer4[2]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 359 (*myPtrs->offsetV9Ptr)++; 360 buffer4[1]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 361 (*myPtrs->offsetV9Ptr)++; 362 buffer4[0]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 363 (*myPtrs->offsetV9Ptr)++; 364 if (1==moreIsNecessary){ 365 switch(i){ 366 case 0: 367 if (((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask <= 32){ 368 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 369 == 370 (*((unsigned long*)&buffer4))>>(32-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask)<<(32-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask) 371 ) 372 { 373 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 1; 374 moreIsNecessary = 0; 375 } else { 376 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 371 377 moreIsNecessary = 0; 372 } else { 373 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 378 } 379 } else { 380 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 381 == 382 (*((unsigned long*)&buffer4)) 383 ) 384 { 385 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 1; 386 } else { 387 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 388 moreIsNecessary = 0; 389 } 390 } 391 break; 392 case 1: 393 if (((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask <= 64){ 394 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 395 == 396 (*((unsigned long*)&buffer4))>>(64-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask)<<(64-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask) 397 ) 398 { 399 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 400 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 401 moreIsNecessary = 0; 402 } else { 403 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 404 moreIsNecessary = 0; 405 } 406 } else { 407 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 408 == 409 (*((unsigned long*)&buffer4)) 410 ) 411 { 412 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 413 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 414 } else { 415 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 416 moreIsNecessary = 0; 417 } 418 } 419 break; 420 case 2: 421 if (((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask <= 96){ 422 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 423 == 424 (*((unsigned long*)&buffer4))>>(96-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask)<<(96-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask) 425 ) 426 { 427 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 428 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 429 moreIsNecessary = 0; 430 } else { 431 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 374 432 moreIsNecessary = 0; 433 } 434 } else { 435 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 436 == 437 (*((unsigned long*)&buffer4)) 438 ) 439 { 440 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 441 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 442 } else { 443 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 444 moreIsNecessary = 0; 445 } 375 446 } 376 } else { 377 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 378 == 379 (*((unsigned long*)&buffer4)) 380 ) 381 { 382 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 1; 383 } else { 384 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 385 moreIsNecessary = 0; 447 break; 448 case 3: 449 if (((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask <= 128){ 450 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 451 == 452 (*((unsigned long*)&buffer4))>>(128-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask)<<(128-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask) 453 ) 454 { 455 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 456 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 457 } else { 458 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 459 moreIsNecessary = 0; 460 } 461 } else { 462 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 463 == 464 (*((unsigned long*)&buffer4)) 465 ) 466 { 467 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 468 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 469 } else { 470 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 471 moreIsNecessary = 0; 472 } 386 473 } 387 } 388 break; 389 case 1: 390 if (((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask <= 64){ 391 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 392 == 393 (*((unsigned long*)&buffer4))>>(64-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask)<<(64-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask) 394 ) 395 { 396 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 397 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 398 moreIsNecessary = 0; 399 } else { 400 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 401 moreIsNecessary = 0; 402 } 403 } else { 404 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 405 == 406 (*((unsigned long*)&buffer4)) 407 ) 408 { 409 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 410 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 411 } else { 412 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 413 moreIsNecessary = 0; 414 } 415 } 416 break; 417 case 2: 418 if (((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask <= 96){ 419 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 420 == 421 (*((unsigned long*)&buffer4))>>(96-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask)<<(96-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask) 422 ) 423 { 424 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 425 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 426 moreIsNecessary = 0; 427 } else { 428 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 429 moreIsNecessary = 0; 430 } 431 } else { 432 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 433 == 434 (*((unsigned long*)&buffer4)) 435 ) 436 { 437 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 438 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 439 } else { 440 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 441 moreIsNecessary = 0; 442 } 443 } 444 break; 445 case 3: 446 if (((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask <= 128){ 447 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 448 == 449 (*((unsigned long*)&buffer4))>>(128-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask)<<(128-((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->mask) 450 ) 451 { 452 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 453 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 454 } else { 455 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 456 moreIsNecessary = 0; 457 } 458 } else { 459 if (ntohl(((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->value->stor.tabAdd6[i]) 460 == 461 (*((unsigned long*)&buffer4)) 462 ) 463 { 464 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 465 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check && 1; 466 } else { 467 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 0; 468 moreIsNecessary = 0; 469 } 470 } 471 break; 472 default: 473 break; 474 } /* end of switch(i) */ 475 } /* end of if moreIsNecessary */ 476 } 477 moreIsNecessary = 1; 478 /* aggregation for IPv6 flows */ 479 480 /* end aggregation */ 474 break; 475 default: 476 break; 477 } /* end of switch(i) */ 478 } /* end of if moreIsNecessary */ 479 #if defined IPV6AGGIDSNMP 480 if ((pftmp->fieldType==27)){ 481 agCache.tabAdd6S[i] = *((unsigned long*)&buffer4); 482 } else if ((pftmp->fieldType==28)){ 483 agCache.tabAdd6D[i] = *((unsigned long*)&buffer4); 484 } 485 #endif 486 } 487 moreIsNecessary = 1; 488 /* aggregation for IPv6 flows */ 489 490 /* end aggregation */ 491 } /* end of : if ((pftmp->fieldType==27)||(pftmp->fieldType==28)){ */ 481 492 break; 482 493 default: … … 598 609 break; 599 610 case 16: 611 if ((pftmp->fieldType==27)||(pftmp->fieldType==28)){ 612 isIPv6 = 1; 613 } 600 614 for (i=0; i<4; i++) { 601 buffer 2[1]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr));615 buffer4[3]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 602 616 (*myPtrs->offsetV9Ptr)++; 603 buffer 2[0]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr));617 buffer4[2]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 604 618 (*myPtrs->offsetV9Ptr)++; 605 buffer 2[1]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr));619 buffer4[1]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 606 620 (*myPtrs->offsetV9Ptr)++; 607 buffer 2[0]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr));621 buffer4[0]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 608 622 (*myPtrs->offsetV9Ptr)++; 609 } 610 /* aggregation IPv6 */ 611 /* end aggregation */ 623 #if defined IPV6AGGIDSNMP 624 if ((pftmp->fieldType==27)){ 625 agCache.tabAdd6S[i] = *((unsigned long*)&buffer4); 626 } else if ((pftmp->fieldType==28)){ 627 agCache.tabAdd6D[i] = *((unsigned long*)&buffer4); 628 } 629 #endif 630 } 612 631 break; 613 632 default: … … 1065 1084 } /* end of the prefix is in our list */ 1066 1085 bool = 0; 1086 #endif /* (IPV4AGGIDR) || (IPV4AGGIDSNMP) */ 1087 #ifdef IPV6LINKAGG 1088 if ( ( isIPv6 == 1 ) && (isMplsFlow == 0) ){ 1089 for (i=0; i<MAX_INDEX_BY_ROUTER; i++){ /* FIXME : to optimized */ 1090 if (agCache.inputSnmp == myPtrs->currentRouterPtr->snmpIndexID[i] ) { 1091 break; 1092 } 1093 } 1094 /* FIXME : here we need to make two case switch sampling values !!! */ 1095 ((struct IndexV6 *)((myPtrs->currentV6IndexTab) 1096 +((myPtrs->currentRouterPtr->ID)*ROUTER_INDEX_MAX) 1097 +(agCache.inputSnmp)))->bytesNbIN = agCache.bytes; 1098 for (i=0; i<MAX_INDEX_BY_ROUTER; i++){ /* FIXME : to optimized */ 1099 if (agCache.outputSnmp == myPtrs->currentRouterPtr->snmpIndexID[i] ) { 1100 break; 1101 } 1102 } 1103 ((struct IndexV6 *)((myPtrs->currentV6IndexTab) 1104 +((myPtrs->currentRouterPtr->ID)*ROUTER_INDEX_MAX) 1105 +(agCache.outputSnmp)))->bytesNbOUT = agCache.bytes; 1106 isIPv6 = 0; 1107 fprintf(stderr,"IPV6LINKAGG .%hu -> .%hu , router : %lu\n", 1108 agCache.inputSnmp, 1109 agCache.outputSnmp, 1110 myPtrs->currentRouterPtr->IpAddress 1111 ); 1112 } 1113 #endif /* IPV6LINKAGG */ 1067 1114 isMplsFlow = 0; 1068 #endif /* (IPV4AGGIDR) || (IPV4AGGIDSNMP) */1069 1115 /* 1070 1116 * -
trunk/src/get_conf.c
r94 r95 701 701 } 702 702 } 703 qsort(p refixStrTab, prefixIndex, sizeof(struct PrefixV6), prefixV6Cmp);703 qsort(pV6TabPtr, prefixIndex, sizeof(struct PrefixV6), prefixV6Cmp); 704 704 if( fclose(prefixFile) == 0) { 705 705 return (prefixIndex); -
trunk/src/get_conf.h
r94 r95 76 76 }; 77 77 78 struct IndexV6{ 79 unsigned long routerIPAddress; 80 unsigned short indexSNMP; 81 unsigned long long flowNbIN; /* WARNING !!! */ 82 unsigned long long bytesNbIN; /* Here, IN means "IN the equipement" */ 83 unsigned long long pktsNbIN; 84 unsigned long long flowNbOUT; 85 unsigned long long bytesNbOUT; 86 unsigned long long pktsNbOUT; 87 }; 88 78 89 void initConf(char *); 79 90 int longCmp(const void *, const void *); -
trunk/src/renetcol.c
r94 r95 98 98 int i,j; 99 99 int k; 100 unsigned short routerIndex = 0; 100 101 101 102 #if defined(IPV4AGGIDR) … … 108 109 #if defined(IPV6AGGIDSNMP) 109 110 fprintf(stderr, "renetcol compilation and execution with IPv6 Aggregation feature enable based on SNMP ID in %s file.\n", INTERFACES_TYPE_LIST); 111 #endif 112 #if defined(IPV6LINKAGG) 113 fprintf(stderr, "renetcol compilation and execution with IPv6 Links Aggregation.\n"); 110 114 #endif 111 115 … … 123 127 } 124 128 /* Create the list of routers */ 125 for ( i=0; i<routerNb; i++){126 routersListPtr = addRouter(routersListPtr, sortedRouterList[ i]);129 for (routerIndex=0; routerIndex<routerNb; routerIndex++){ 130 routersListPtr = addRouter(routersListPtr, sortedRouterList[routerIndex],routerIndex); 127 131 } 128 132 … … 162 166 } 163 167 #if defined(IPV6AGGIDSNMP) 168 fprintf(stderr, "ci0\n"); 164 169 if ( (shmForAgg->v6PrefixNb = 165 170 getPrefixV6(SUBNETS_V6_LIST, … … 179 184 exit(1); 180 185 } 186 fprintf(stderr, "ci00\n"); 181 187 #endif 182 188 … … 230 236 exit(4); 231 237 } 232 238 fprintf(stderr, " handler, SIGUSR1 from renetcolSender\n"); 233 239 /* handler, SIGUSR1 from renetcolSender */ 234 240 myAction.sa_handler = sigusr1Mgmt; … … 238 244 sigaction (SIGUSR1, &myAction, NULL); 239 245 246 fprintf(stderr, " Cache for fast rules access\n"); 240 247 /* Cache for fast rules access */ 241 248 setCache(myPtrs.rulesListPtr); 242 249 myPtrs.rulesAddressPtr = (RuleDefPtr *)rulesAddress; 243 250 fprintf(stderr, "IPC messages queue init\n"); 244 251 /* IPC messages queue init */ 245 252 myKey = createKey(argv[0]); 246 253 myQueue = createQueue(myKey); 247 254 sendMyPid(myQueue); 248 255 fprintf(stderr, "get SNMP index information\n"); 249 256 /* get SNMP index information */ 250 257 #ifdef IPV4AGGIDSNMP … … 264 271 myPtrs.currentV4Tab = shmForAgg->prefixV4Tab[shmForAgg->currentTable]; 265 272 myPtrs.secondV4Tab = shmForAgg->prefixV4Tab[shmForAgg->secondTable]; 273 #ifdef IPV6AGGIDSNMP 274 fprintf(stderr, "ci1\n"); 275 myPtrs.currentV6Tab = shmForAgg->prefixV6Tab[shmForAgg->currentTable]; 276 myPtrs.secondV6Tab = shmForAgg->prefixV6Tab[shmForAgg->secondTable]; 277 #endif 278 #ifdef IPV6LINKAGG 279 fprintf(stderr, "ci2\n"); 280 myPtrs.currentV6IndexTab = shmForAgg->indexV6Tab[shmForAgg->currentTable]; 281 myPtrs.secondV6IndexTab = shmForAgg->indexV6Tab[shmForAgg->secondTable]; 282 fprintf(stderr, "ci3\n"); 283 #endif 266 284 #ifdef ASACC 267 285 myPtrs.asNb = shmForAgg->ASNb; … … 285 303 } 286 304 } 305 #endif 306 /* INIT IPV6 index TABLES */ 307 #ifdef IPV6LINKAGG 308 fprintf(stderr, "ci\n"); 309 for (i=0; i<ROUTER_INDEX_MAX; i++){ 310 for (j=0; j<MAX_INDEX_BY_ROUTER; j++) { 311 shmForAgg->indexV6Tab[0][i][j].bytesNbIN = 0; 312 shmForAgg->indexV6Tab[0][i][j].pktsNbIN = 0; 313 shmForAgg->indexV6Tab[0][i][j].flowNbIN = 0; 314 shmForAgg->indexV6Tab[1][i][j].bytesNbOUT = 0; 315 shmForAgg->indexV6Tab[1][i][j].pktsNbOUT = 0; 316 shmForAgg->indexV6Tab[1][i][j].flowNbOUT = 0; 317 } 318 } 319 fprintf(stderr, "icci\n"); 287 320 #endif 288 321 -
trunk/src/renetcol.h
r94 r95 80 80 #endif 81 81 struct PrefixV6 prefixV6Tab[2][MAX_IPV6_PREFIX]; 82 #if defined(IPV6LINKAGG) && defined(IPV6AGGIDSNMP) 83 struct IndexV6 indexV6Tab[2][ROUTER_INDEX_MAX][MAX_INDEX_BY_ROUTER]; 84 #endif 82 85 }; 83 84 86 85 87 void setCache(RulesPtr); -
trunk/src/renetcolAgg.h
r94 r95 61 61 #endif 62 62 struct PrefixV6 prefixV6Tab[2][MAX_IPV6_PREFIX]; 63 #ifdef IPV6LINKAGG && IPV6AGGIDSNMP 64 struct IndexV6 indexV6Tab[2][ROUTER_INDEX_MAX][MAX_INDEX_BY_ROUTER]; 65 #endif 63 66 }; -
trunk/src/renetcolParam.h
r94 r95 90 90 91 91 /* 92 * maximum number of interfaces by router (one interface == one SNMP index) 93 */ 94 #define MAX_INDEX_BY_ROUTER 150 95 96 /* 92 97 * Path to the rrd file 93 98 */ -
trunk/src/routers_mgmt.c
r84 r95 39 39 } 40 40 41 RouterPtr addRouter(RouterPtr routersList, unsigned long address )41 RouterPtr addRouter(RouterPtr routersList, unsigned long address, unsigned short id) 42 42 { 43 43 RouterPtr tmp = (RouterPtr) malloc(sizeof(struct Router)); 44 44 if (tmp==NULL) { 45 syslog(LOG_ERR, "ERROR in malloc in add _routersfunction\n");45 syslog(LOG_ERR, "ERROR in malloc in addRouter function\n"); 46 46 exit(1); 47 47 } else { 48 48 tmp->IpAddress = address; 49 tmp->ID = id; 49 50 tmp->tplList = NULL; 50 51 tmp->tplOptList = NULL; … … 167 168 unsigned long ipAddress; 168 169 RouterPtr routerTmp = NULL; 170 unsigned short snmpIndex = 0; 171 unsigned short snmpCpt = 0; 169 172 170 173 if (!(indexFile = fopen(filename, "r"))) { … … 198 201 exit(1); 199 202 } 203 snmpCpt = 0; 200 204 }else{ 201 205 if ( strspn(line, "I") == 1 ) { … … 211 215 if ( strcmp(tid, "B") == 0 ) { 212 216 routerTmp->snmpIndexList[index] = 0; 217 routerTmp->snmpIndexID[snmpCpt] = index; 218 routerTmp->snmpIndexType[snmpCpt] = 0; 213 219 } else if ( strcmp(tid, "C") == 0 ) { 214 220 routerTmp->snmpIndexList[index] = 1; 221 routerTmp->snmpIndexID[snmpCpt] = index; 222 routerTmp->snmpIndexType[snmpCpt] = 1; 215 223 } else { 216 224 fprintf(stderr, "Error in file %s, line %d : bad code B or C \n", -
trunk/src/routers_mgmt.h
r60 r95 48 48 TplOptionPtr tplOptList; /* list of the optional template definitions */ 49 49 unsigned long sampled; /* sampling value: (one for) 10, 100 or 1(full mode)*/ 50 unsigned short ID; /* internal ID */ 50 51 #ifdef IPV4AGGIDSNMP 51 52 unsigned short snmpIndexList[MAX_SNMP_INDEX]; /* 0:Backbone, 1:Customer */ 53 unsigned short snmpIndexType[MAX_INDEX_BY_ROUTER]; /* 0:Backbone, 1:Customer */ 54 unsigned short snmpIndexID[MAX_INDEX_BY_ROUTER]; 52 55 #endif 53 56 RouterPtr next; … … 72 75 struct PrefixV4 *currentV4SubnetTab; 73 76 struct PrefixV4 *secondV4SubnetTab; 77 #ifdef IPV6AGGIDSNMP 78 struct PrefixV6 *currentV6Tab; 79 struct PrefixV6 *secondV6Tab; 80 #endif 81 #ifdef IPV6LINKAGG 82 struct IndexV6 *currentV6IndexTab; 83 struct IndexV6 *secondV6IndexTab; 84 #endif 74 85 #ifdef ASACC 75 86 unsigned short asNb; … … 83 94 84 95 RouterPtr notExistRouter(RouterPtr, unsigned long); 85 RouterPtr addRouter(RouterPtr, unsigned long );96 RouterPtr addRouter(RouterPtr, unsigned long, unsigned short); 86 97 RouterPtr updateRouter(RouterPtr, unsigned long, unsigned long); 87 98 TplFlowSetPtr newRouterTplList();