- Timestamp:
- 10/18/07 11:41:05 (15 years ago)
- Location:
- trunk/src
- Files:
-
- 10 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/dataFlowSet.c
r58 r59 132 132 return (-1); 133 133 } 134 #if def IPV4AGG134 #if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 135 135 agCache.routerAd = myPtrs->pcktPtr->ipH->srcAdd; 136 136 #endif … … 192 192 } 193 193 /* end rule check */ 194 #if def IPV4AGG194 #if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 195 195 if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ 196 196 agCache.maskS = *((unsigned char*)&buffer1); … … 221 221 == *((unsigned short*)&buffer2)) 222 222 ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+pos)))->check = 1; 223 #if def IPV4AGG223 #if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 224 224 if (pftmp->fieldType==10){ 225 225 agCache.inputSnmp = *((unsigned short*)&buffer2); … … 277 277 } 278 278 } 279 #if def IPV4AGG279 #if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 280 280 if ((pftmp->fieldType==8)){ 281 281 bool = 1; /* very important, test if we have an IPv4 flow for Agg */ … … 448 448 buffer1 = *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 449 449 (*myPtrs->offsetV9Ptr)++; 450 #if def IPV4AGG450 #if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 451 451 if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ 452 452 agCache.maskS = *((unsigned char*)&buffer1); … … 474 474 buffer2[0]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 475 475 (*myPtrs->offsetV9Ptr)++; 476 #if def IPV4AGG476 #if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 477 477 if (pftmp->fieldType==10){ 478 478 agCache.inputSnmp = *((unsigned short*)&buffer2); … … 506 506 buffer4[0]= *(myPtrs->ptr_buffer+(*myPtrs->offsetV9Ptr)); 507 507 (*myPtrs->offsetV9Ptr)++; 508 #if def IPV4AGG508 #if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 509 509 if ((pftmp->fieldType==8)){ 510 510 bool = 1; … … 548 548 /* Aggregation mode must be enable in ./configure options */ 549 549 /* first we must know if the address belong to our prefix */ 550 #if def IPV4AGG550 #if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 551 551 if ( (bool == 1) && (isMplsFlow == 0) ){ 552 552 prefixKey.beginning = agCache.v4AdS>>(32-agCache.maskS)<<(32-agCache.maskS); … … 554 554 sizeof(struct PrefixV4), prefGlobalCmp); 555 555 if (res!=NULL){ 556 /* if ( myPtrs->routersID[res->routerNb] == agCache.routerAd ) { */ 556 #if defined(IPV4AGGIDR) 557 if ( myPtrs->routersID[res->routerNb] == agCache.routerAd ) { 558 #elif defined(IPV4AGGIDSNMP) 557 559 if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1 ) { 558 /* OUT ("traffic from the prefix/subnet") */ 559 res->bytesNbOUT += agCache.bytes; 560 res->pktsNbOUT += agCache.pkts; 561 (res->flowNbOUT)++; 562 if (res->sampling == 0) { 560 #endif 561 if (myPtrs->currentRouterPtr->sampled != 0 ){ 562 /* OUT ("traffic from the prefix/subnet") */ 563 res->bytesNbOUT += agCache.bytes; 564 res->pktsNbOUT += agCache.pkts; 565 (res->flowNbOUT)++; 566 } 567 if (res->sampling == 0 568 && myPtrs->currentRouterPtr->sampled != 0){ 563 569 res->sampling = myPtrs->currentRouterPtr->sampled; 564 } else if (res->sampling != myPtrs->currentRouterPtr->sampled) { 565 syslog(LOG_INFO, 566 "2 sampling values for 1 subnet: %lu.%lu.%lu.%lu % from router %lu.%lu.%lu.%lu", 567 agCache.v4AdS>>24, 568 agCache.v4AdS<<8>>24, 569 agCache.v4AdS<<16>>24, 570 agCache.v4AdS<<24>>24, 571 (myPtrs->pcktPtr->ipH->srcAdd>>24), 572 (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), 573 (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), 574 (myPtrs->pcktPtr->ipH->srcAdd<<24>>24)); 575 } 570 } 571 #if defined(MATRIX) && defined(IPV4AGGIDR) 576 572 /* inter-pop matrix Accounting */ 577 573 prefixKey.beginning = agCache.v4AdD>>(32-agCache.maskD)<<(32-agCache.maskD); … … 603 599 } 604 600 /* end interpop matrix accounting */ 601 #endif /* matrix */ 605 602 } else { 606 603 /* doublon or bad reference in prefix list */ … … 612 609 if (res!=NULL){ 613 610 if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1 ) { 614 /* IN ("traffic to the prefix/subnet") */ 615 res->bytesNbIN += agCache.bytes; 616 res->pktsNbIN += agCache.pkts; 617 (res->flowNbIN)++; 618 /* if ( myPtrs->routersID[res->routerNb] == agCache.routerAd ) { */ 619 /* IN ("traffic to the prefix") */ 620 /* res->bytesNbIN += agCache.bytes; */ 621 /* res->pktsNbIN += agCache.pkts; */ 622 /* (res->flowNbIN)++; */ 623 /* if (res->sampling == 0) { */ 624 /* res->sampling = myPtrs->currentRouterPtr->sampled; */ 625 /* } else if (res->sampling != myPtrs->currentRouterPtr->sampled) { */ 626 /* syslog(LOG_INFO, */ 627 /* "2 sampling values for 1 /: %lu.%lu.%lu.%lu % from router %lu.%lu.%lu.%lu", */ 628 /* agCache.v4AdS>>24, */ 629 /* agCache.v4AdS<<8>>24, */ 630 /* agCache.v4AdS<<16>>24, */ 631 /* agCache.v4AdS<<24>>24, */ 632 /* (myPtrs->pcktPtr->ipH->srcAdd>>24), */ 633 /* (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), */ 634 /* (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), */ 635 /* (myPtrs->pcktPtr->ipH->srcAdd<<24>>24)); */ 636 /* } */ 611 if (myPtrs->currentRouterPtr->sampled != 0 ){ 612 /* IN ("traffic to the prefix/subnet") */ 613 res->bytesNbIN += agCache.bytes; 614 res->pktsNbIN += agCache.pkts; 615 (res->flowNbIN)++; 616 } 617 #if defined(IPV4AGGIDR) 618 if ( myPtrs->routersID[res->routerNb] == agCache.routerAd ) { 619 if (myPtrs->currentRouterPtr->sampled != 0 ){ 620 /* IN ("traffic to the prefix") */ 621 res->bytesNbIN += agCache.bytes; 622 res->pktsNbIN += agCache.pkts; 623 (res->flowNbIN)++; 624 } 625 #endif 626 if (res->sampling == 0 627 && myPtrs->currentRouterPtr->sampled != 0 ){ 628 res->sampling = myPtrs->currentRouterPtr->sampled; 629 } 637 630 /* } else { */ 638 631 /* doublon or bad reference in prefix list */ … … 662 655 (myPtrs->pcktPtr->ipH->srcAdd<<24>>24) 663 656 ); 664 #endif 657 #endif /* PRINTUNKNOWNSUBNET */ 665 658 } 666 659 } … … 668 661 bool = 0; 669 662 isMplsFlow = 0; 670 #endif 663 #endif /* (IPV4AGGIDR) || (IPV4AGGIDSNMP) */ 671 664 /* 672 665 * Redirection if needed … … 831 824 } 832 825 }else{ 833 syslog(LOG_INFO,"Sampling value not standard for router : %lu.%lu.%lu.%lu ",826 syslog(LOG_INFO,"Sampling value not standard for router : %lu.%lu.%lu.%lu, value : %lu", 834 827 (myPtrs->pcktPtr->ipH->srcAdd>>24), 835 828 (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), 836 829 (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), 837 (myPtrs->pcktPtr->ipH->srcAdd<<24>>24) 830 (myPtrs->pcktPtr->ipH->srcAdd<<24>>24), 831 *((unsigned long*)&buffer4) 838 832 ); 839 833 } -
trunk/src/get_conf.c
r34 r59 138 138 char line[200]; 139 139 unsigned short counter = 0; 140 unsigned short n0, n1, n2, n3, n4, n5; 140 unsigned short n0, n1, n2, n3, n4; 141 #if defined(IPV4AGGIDR) 142 unsigned short n5; 143 #endif 141 144 unsigned char buffer4[4]; 142 145 int i = 0; … … 146 149 fprintf (stderr, "error during %s opening\n", filename); 147 150 exit(1); 151 } 152 for(i=0;i<MAX_IPV4_PREFIX;i++){ 153 pV4TabPtr[i].beginning = 0; 154 pV4TabPtr[i].end = 0; 155 pV4TabPtr[i].mask = 0; 156 pV4TabPtr[i].sampling = 0; 157 #ifdef IPV4AGGIDR 158 pV4TabPtr[i].routerNb = 0; 159 #endif 160 pV4TabPtr[i].flowNbIN = 0; 161 pV4TabPtr[i].bytesNbIN = 0; 162 pV4TabPtr[i].pktsNbIN = 0; 163 pV4TabPtr[i].flowNbOUT = 0; 164 pV4TabPtr[i].bytesNbOUT = 0; 165 pV4TabPtr[i].pktsNbOUT = 0; 166 pV4TabPtr[i].firstCoSIN = 0; 167 pV4TabPtr[i].secondCoSIN = 0; 168 pV4TabPtr[i].thirdCoSIN = 0; 169 pV4TabPtr[i].fourthCoSIN = 0; 170 pV4TabPtr[i].firstCoSOUT = 0; 171 pV4TabPtr[i].secondCoSOUT = 0; 172 pV4TabPtr[i].thirdCoSOUT = 0; 173 pV4TabPtr[i].fourthCoSOUT = 0; 148 174 } 149 175 while (fgets(line, 50, prefixFile) != 0) … … 160 186 for(i=0;i<counter;i++) 161 187 { 188 #if defined(IPV4AGGIDR) 162 189 sscanf(prefixStrTab[i],"%hu.%hu.%hu.%hu/%hu-%hu\n", 163 &n0,&n1,&n2,&n3,&n4,&n5); 190 &n0,&n1,&n2,&n3,&n4,&n5); 191 #else 192 sscanf(prefixStrTab[i],"%hu.%hu.%hu.%hu %hu\n", 193 &n0,&n1,&n2,&n3,&n4); 194 #endif 164 195 buffer4[0] = (unsigned char)n3; 165 196 buffer4[1] = (unsigned char)n2; … … 171 202 *((unsigned long*)&buffer4[0]) +~(~0<<(32-n4)); 172 203 pV4TabPtr[i].mask = n4; 173 pV4TabPtr[i].sampling = 0; 204 pV4TabPtr[i].sampling = 0; 205 #ifdef IPV4AGGIDR 174 206 pV4TabPtr[i].routerNb = n5; 207 #endif 175 208 pV4TabPtr[i].flowNbIN = 0; 176 209 pV4TabPtr[i].bytesNbIN = 0; -
trunk/src/get_conf.h
r29 r59 26 26 #define GET_CONF_H 27 27 28 # define MAX_IPV4_PREFIX 1000028 #include "renetcolParam.h" 29 29 30 30 struct PrefixV4{ … … 32 32 unsigned long end; 33 33 unsigned short mask; /* prefix mask */ 34 unsigned short hasSubnet; /* to know if we need to read the prefixV4SubnetTab */ 35 #ifdef IPV4AGGIDR 34 36 unsigned short routerNb; /* router ID */ 37 #endif 35 38 unsigned long sampling; /* Sampling value */ 36 39 unsigned long long flowNbIN; /* WARNING !!! */ -
trunk/src/renetcol.c
r58 r59 99 99 int k; 100 100 101 #ifdef IPV4AGG 102 fprintf(stderr, "renetcol compilation and execution with IPv4 Aggregation feature enable\n"); 101 #ifdef IPV4AGGIDR 102 fprintf(stderr, "renetcol compilation and execution with IPv4 Aggregation feature enable based on routers ID in %s file.\n", ROUTERS_LIST); 103 #endif 104 105 #ifdef IPV4AGGIDSNMP 106 fprintf(stderr, "renetcol compilation and execution with IPv4 Aggregation feature enable based on SNMP ID in %s file.\n", INTERFACES_TYPE_LIST); 103 107 #endif 104 108 … … 133 137 134 138 if ( (shmForAgg->v4PrefixNb = getPrefixV4(SUBNETS_LIST, &(shmForAgg->prefixV4Tab[0][0]))) < 1){ 135 fprintf(stderr, "renetcol: Error \n"); 136 exit(1); 139 fprintf(stderr, "renetcol: Error in %s\n", SUBNETS_LIST); 140 exit(1); 141 } else { 142 fprintf(stderr, "%hu prefix are readed from %s\n", 143 shmForAgg->v4PrefixNb, 144 SUBNETS_LIST); 137 145 } 138 146 if ( (shmForAgg->v4PrefixNb = getPrefixV4(SUBNETS_LIST, &(shmForAgg->prefixV4Tab[1][0]))) < 1){ 139 fprintf(stderr, "renetcol: Error \n");147 fprintf(stderr, "renetcol: Error in %s\n", SUBNETS_LIST); 140 148 exit(1); 141 149 } … … 194 202 myPtrs.pcktPtr = (DatagramPtr) malloc(sizeof(struct Datagram)); 195 203 myPtrs.currentFlowsetNumberPtr = ¤tFlowsetNumber; 204 #ifdef IPV4AGGIDR 196 205 myPtrs.routersID = &indexedRouterList; 206 #endif 197 207 myPtrs.currentV4Tab = shmForAgg->prefixV4Tab[shmForAgg->currentTable]; 198 208 myPtrs.secondV4Tab = shmForAgg->prefixV4Tab[shmForAgg->secondTable]; 209 #ifdef MATRIX 199 210 myPtrs.matrixPOP = &(shmForAgg->matrixPOP[shmForAgg->currentTable][0][0]); 211 #endif 200 212 201 213 /* INIT MATRIX TABLES */ 214 #ifdef MATRIX 202 215 for (i=0; i<ROUTER_INDEX_MAX; i++){ 203 216 for (j=0; j<ROUTER_INDEX_MAX; j++) { … … 210 223 } 211 224 } 225 #endif 212 226 213 227 /* Checkup */ … … 419 433 } 420 434 shmForAgg->readed = 1; 435 #ifdef MATRIX 421 436 myPtrs.matrixPOP = &(shmForAgg->matrixPOP[shmForAgg->currentTable][0][0]); 437 #endif 422 438 } 423 439 if (sigusr1Up == 1){ -
trunk/src/renetcol.h
r36 r59 70 70 unsigned short v4PrefixNb; 71 71 struct PrefixV4 prefixV4Tab[2][MAX_IPV4_PREFIX]; 72 struct PrefixV4 prefixV4SubnetTab[2][MAX_IPV4_SUBNET]; 73 #ifdef MATRIX 72 74 struct POP matrixPOP[2][ROUTER_INDEX_MAX][ROUTER_INDEX_MAX]; 75 #endif 73 76 /* struct PrefixV6 ; */ 74 77 }; /* if you change it, you must change renetcolAgg.h structure */ -
trunk/src/renetcolAgg.c
r58 r59 87 87 now = time((time_t *)NULL); 88 88 if (isFirstUpdate == 0) { 89 /* SUBNET ACCOUNTING*/89 /* RRD ACCOUNTING for prefixV4Tab */ 90 90 for (i=0; i<shmForAgg->v4PrefixNb; i++){ 91 91 /* HERE create or update RRD FILE */ … … 214 214 } 215 215 } 216 /* Reinit the shared table */216 /* Reinit the shared tables */ 217 217 shmForAgg->prefixV4Tab[index][i].flowNbIN = 0; 218 218 shmForAgg->prefixV4Tab[index][i].bytesNbIN = 0; … … 228 228 shmForAgg->prefixV4Tab[index][i].secondCoSOUT = 0; 229 229 shmForAgg->prefixV4Tab[index][i].thirdCoSOUT = 0; 230 shmForAgg->prefixV4Tab[index][i].fourthCoSOUT = 0; 230 shmForAgg->prefixV4Tab[index][i].fourthCoSOUT = 0; 231 231 } 232 232 } 233 /* ACCOUNTING for prefixV4SubnetTab */ 234 for (i=0; i<shmForAgg->v4PrefixNb; i++){ 235 /* HERE create or update RRD FILE */ 236 if (shmForAgg->prefixV4SubnetTab[index][i].sampling != 0) { 237 for (j=0; j<strlen(name); j++) {name[j] = '\0';} 238 for (j=0; j<strlen(createstr); j++) {createstr[j] = '\0';} 239 for (j=0; j<strlen(ipStr); j++) {ipStr[j] = '\0';} 240 for (j=0; j<strlen(buf); j++) {buf[j] = '\0';} 241 strcat(name, PREFIX_RRD_LOCATION); 242 sprintf(ipStr, "%lu_%lu_%lu_%lu_%hu_%lu", 243 shmForAgg->prefixV4SubnetTab[index][i].beginning>>24, 244 shmForAgg->prefixV4SubnetTab[index][i].beginning<<8>>24, 245 shmForAgg->prefixV4SubnetTab[index][i].beginning<<16>>24, 246 shmForAgg->prefixV4SubnetTab[index][i].beginning<<24>>24, 247 shmForAgg->prefixV4SubnetTab[index][i].mask, 248 shmForAgg->prefixV4SubnetTab[index][i].sampling 249 ); 250 strcat(name, ipStr); 251 strcat(name, RRD_EXTENSION); 252 if ( (fp=fopen(name,"r")) == NULL ){ 253 opt[0]= (char *) malloc((strlen(RRD_PARAM_PREFIX_0) + 1) * sizeof(char)); 254 strcpy(opt[0], RRD_PARAM_PREFIX_0); 255 opt[1]= (char *) malloc((strlen(name) + 1) * sizeof(char)); 256 strcpy(opt[1], name); 257 opt[2]= (char *) malloc((strlen(RRD_PARAM_PREFIX_1) + 1) * sizeof(char)); 258 strcpy(opt[2], RRD_PARAM_PREFIX_1); 259 opt[3]= (char *) malloc((strlen(RRD_PARAM_PREFIX_2) + 1) * sizeof(char)); 260 strcpy(opt[3], RRD_PARAM_PREFIX_2); 261 opt[4]= (char *) malloc((strlen(RRD_PARAM_PREFIX_3) + 1) * sizeof(char)); 262 strcpy(opt[4], RRD_PARAM_PREFIX_3); 263 opt[5]= (char *) malloc((strlen(RRD_PARAM_PREFIX_4) + 1) * sizeof(char)); 264 strcpy(opt[5], RRD_PARAM_PREFIX_4); 265 opt[6]= (char *) malloc((strlen(RRD_PARAM_PREFIX_5) + 1) * sizeof(char)); 266 strcpy(opt[6], RRD_PARAM_PREFIX_5); 267 opt[7]= (char *) malloc((strlen(RRD_PARAM_PREFIX_6) + 1) * sizeof(char)); 268 strcpy(opt[7], RRD_PARAM_PREFIX_6); 269 opt[8]= (char *) malloc((strlen(RRD_PARAM_PREFIX_7) + 1) * sizeof(char)); 270 strcpy(opt[8], RRD_PARAM_PREFIX_7); 271 opt[9]= (char *) malloc((strlen(RRD_PARAM_PREFIX_8) + 1) * sizeof(char)); 272 strcpy(opt[9], RRD_PARAM_PREFIX_8); 273 opt[10]= (char *) malloc((strlen(RRD_PARAM_PREFIX_9) + 1) * sizeof(char)); 274 strcpy(opt[10], RRD_PARAM_PREFIX_9); 275 opt[11]= (char *) malloc((strlen(RRD_PARAM_PREFIX_10) + 1) * sizeof(char)); 276 strcpy(opt[11], RRD_PARAM_PREFIX_10); 277 opt[12]= (char *) malloc((strlen(RRD_PARAM_PREFIX_11) + 1) * sizeof(char)); 278 strcpy(opt[12], RRD_PARAM_PREFIX_11); 279 opt[13]= (char *) malloc((strlen(RRD_PARAM_PREFIX_12) + 1) * sizeof(char)); 280 strcpy(opt[13], RRD_PARAM_PREFIX_12); 281 opt[14]= (char *) malloc((strlen(RRD_PARAM_PREFIX_13) + 1) * sizeof(char)); 282 strcpy(opt[14], RRD_PARAM_PREFIX_13); 283 opt[15]= (char *) malloc((strlen(RRD_PARAM_PREFIX_14) + 1) * sizeof(char)); 284 strcpy(opt[15], RRD_PARAM_PREFIX_14); 285 opt[16]= (char *) malloc((strlen(RRD_PARAM_PREFIX_15) + 1) * sizeof(char)); 286 strcpy(opt[16], RRD_PARAM_PREFIX_15); 287 opt[17]= (char *) malloc((strlen(RRD_PARAM_PREFIX_16) + 1) * sizeof(char)); 288 strcpy(opt[17], RRD_PARAM_PREFIX_16); 289 opt[18]= (char *) malloc((strlen(RRD_PARAM_PREFIX_17) + 1) * sizeof(char)); 290 strcpy(opt[18], RRD_PARAM_PREFIX_17); 291 opt[19]= (char *) malloc((strlen(RRD_PARAM_PREFIX_18) + 1) * sizeof(char)); 292 strcpy(opt[19], RRD_PARAM_PREFIX_18); 293 opt[20]= (char *) malloc((strlen(RRD_PARAM_PREFIX_19) + 1) * sizeof(char)); 294 strcpy(opt[20], RRD_PARAM_PREFIX_19); 295 opt[21]= (char *) malloc((strlen(RRD_PARAM_PREFIX_20) + 1) * sizeof(char)); 296 strcpy(opt[21], RRD_PARAM_PREFIX_20); 297 opt[22]= (char *) malloc((strlen(RRD_PARAM_PREFIX_21) + 1) * sizeof(char)); 298 strcpy(opt[22], RRD_PARAM_PREFIX_21); 299 opt[23]= (char *) malloc((strlen(RRD_PARAM_PREFIX_22) + 1) * sizeof(char)); 300 strcpy(opt[23], RRD_PARAM_PREFIX_22); 301 opt[24]= (char *) malloc((strlen(RRD_PARAM_PREFIX_23) + 1) * sizeof(char)); 302 strcpy(opt[24], RRD_PARAM_PREFIX_23); 303 opt[25]= (char *) malloc((strlen(RRD_PARAM_PREFIX_24) + 1) * sizeof(char)); 304 strcpy(opt[25], RRD_PARAM_PREFIX_24); 305 opt[26]= (char *) malloc((strlen(RRD_PARAM_PREFIX_25) + 1) * sizeof(char)); 306 strcpy(opt[26], RRD_PARAM_PREFIX_25); 307 optind = opterr = 0; 308 rrd_clear_error(); 309 if ( rrd_create(27,opt) < 0) { 310 syslog(LOG_ERR, "RRD create file %s, error: %s\n", name, rrd_get_error()); 311 rrd_create_er_ct++; 312 } else { 313 rrd_create_ok_ct++; 314 } 315 for ( j=0; j<27; j++) { 316 free(opt[j]); 317 opt[j] = NULL; 318 } 319 }else{ 320 fclose(fp); 321 rrd_already_created_ct++; 322 snprintf(buf, 323 2048, 324 "%lu:%llu:%llu:%llu:%llu:%llu:%llu:%llu:%llu:%llu:%llu:%llu:%llu:%llu:%llu", 325 now-300, /* or ctime(&now) with %s */ 326 shmForAgg->prefixV4SubnetTab[index][i].flowNbIN, /* 1 */ 327 shmForAgg->prefixV4SubnetTab[index][i].flowNbOUT, 328 shmForAgg->prefixV4SubnetTab[index][i].bytesNbIN, 329 shmForAgg->prefixV4SubnetTab[index][i].bytesNbOUT, 330 shmForAgg->prefixV4SubnetTab[index][i].pktsNbIN, /* 5 */ 331 shmForAgg->prefixV4SubnetTab[index][i].pktsNbOUT, 332 shmForAgg->prefixV4SubnetTab[index][i].firstCoSIN, 333 shmForAgg->prefixV4SubnetTab[index][i].firstCoSOUT, 334 shmForAgg->prefixV4SubnetTab[index][i].secondCoSIN, 335 shmForAgg->prefixV4SubnetTab[index][i].secondCoSOUT, 336 shmForAgg->prefixV4SubnetTab[index][i].thirdCoSIN, 337 shmForAgg->prefixV4SubnetTab[index][i].thirdCoSOUT, 338 shmForAgg->prefixV4SubnetTab[index][i].fourthCoSIN, 339 shmForAgg->prefixV4SubnetTab[index][i].fourthCoSOUT 340 ); 341 optUpdate[0]= (char *) malloc((strlen(RRD_UPDATE_0) + 1) * sizeof(char)); 342 strcpy(optUpdate[0], RRD_UPDATE_0); 343 optUpdate[1]= (char *) malloc((strlen(name) + 1) * sizeof(char)); 344 strcpy(optUpdate[1], name); 345 optUpdate[2]= (char *) malloc((strlen(buf) + 1) * sizeof(char)); 346 strcpy(optUpdate[2], buf); 347 optind = opterr = 0; 348 rrd_clear_error(); 349 if ( rrd_update(3, optUpdate) < 0 ) { 350 syslog(LOG_ERR, "RRD update file %s, error: %s\n", name, rrd_get_error()); 351 rrd_update_er_ct++; 352 } else { 353 rrd_update_ok_ct++; 354 } 355 for ( j=0; j<3; j++) { 356 free(optUpdate[j]); 357 optUpdate[j] = NULL; 358 } 359 } 360 /* Reinit the shared tables */ 361 shmForAgg->prefixV4SubnetTab[index][i].flowNbIN = 0; 362 shmForAgg->prefixV4SubnetTab[index][i].bytesNbIN = 0; 363 shmForAgg->prefixV4SubnetTab[index][i].pktsNbIN = 0; 364 shmForAgg->prefixV4SubnetTab[index][i].flowNbOUT = 0; 365 shmForAgg->prefixV4SubnetTab[index][i].bytesNbOUT = 0; 366 shmForAgg->prefixV4SubnetTab[index][i].pktsNbOUT = 0; 367 shmForAgg->prefixV4SubnetTab[index][i].firstCoSIN = 0; 368 shmForAgg->prefixV4SubnetTab[index][i].secondCoSIN = 0; 369 shmForAgg->prefixV4SubnetTab[index][i].thirdCoSIN = 0; 370 shmForAgg->prefixV4SubnetTab[index][i].fourthCoSIN = 0; 371 shmForAgg->prefixV4SubnetTab[index][i].firstCoSOUT = 0; 372 shmForAgg->prefixV4SubnetTab[index][i].secondCoSOUT = 0; 373 shmForAgg->prefixV4SubnetTab[index][i].thirdCoSOUT = 0; 374 shmForAgg->prefixV4SubnetTab[index][i].fourthCoSOUT = 0; 375 } 376 } 377 #if defined(MATRIX) && defined(IPV4AGGIDR) 233 378 /* MATRIX INTER POP ACCOUNTING */ 234 379 /* rrd */ … … 334 479 } 335 480 /* END MATRIX INTER POP ACC */ 481 #endif /* MATRIX */ 336 482 now2 = time((time_t *)NULL); 337 483 #ifdef DEBUGAGG … … 369 515 shmForAgg->prefixV4Tab[index][i].thirdCoSOUT = 0; 370 516 shmForAgg->prefixV4Tab[index][i].fourthCoSOUT = 0; 517 518 shmForAgg->prefixV4SubnetTab[index][i].flowNbIN = 0; 519 shmForAgg->prefixV4SubnetTab[index][i].bytesNbIN = 0; 520 shmForAgg->prefixV4SubnetTab[index][i].pktsNbIN = 0; 521 shmForAgg->prefixV4SubnetTab[index][i].flowNbOUT = 0; 522 shmForAgg->prefixV4SubnetTab[index][i].bytesNbOUT = 0; 523 shmForAgg->prefixV4SubnetTab[index][i].pktsNbOUT = 0; 524 shmForAgg->prefixV4SubnetTab[index][i].firstCoSIN = 0; 525 shmForAgg->prefixV4SubnetTab[index][i].secondCoSIN = 0; 526 shmForAgg->prefixV4SubnetTab[index][i].thirdCoSIN = 0; 527 shmForAgg->prefixV4SubnetTab[index][i].fourthCoSIN = 0; 528 shmForAgg->prefixV4SubnetTab[index][i].firstCoSOUT = 0; 529 shmForAgg->prefixV4SubnetTab[index][i].secondCoSOUT = 0; 530 shmForAgg->prefixV4SubnetTab[index][i].thirdCoSOUT = 0; 531 shmForAgg->prefixV4SubnetTab[index][i].fourthCoSOUT = 0; 371 532 } 372 533 /* reinit */ 534 #ifdef MATRIX 373 535 for (i=0; i<ROUTER_INDEX_MAX; i++){ 374 536 for (j=0; j<ROUTER_INDEX_MAX; j++) { … … 378 540 } 379 541 } 542 #endif 380 543 } /* end is first update */ 381 544 } /* end read ok */ -
trunk/src/renetcolAgg.h
r50 r59 49 49 unsigned short v4PrefixNb; 50 50 struct PrefixV4 prefixV4Tab[2][MAX_IPV4_PREFIX]; 51 struct PrefixV4 prefixV4SubnetTab[2][MAX_IPV4_SUBNET]; 52 #ifdef MATRIX 51 53 struct POP matrixPOP[2][ROUTER_INDEX_MAX][ROUTER_INDEX_MAX]; 54 #endif 52 55 /* struct PrefixV6 ; */ 53 56 }; /* if you change it, you must change renetcol.h structure */ -
trunk/src/renetcolParam.h
r58 r59 26 26 #define RENETCOLPARAM_H 27 27 28 /************************************** 29 * Parameters which MUST be changed: 30 **************************************/ 31 /* 32 * your collector address - syntax: 10.0.0.90 33 */ 34 #define RECEPTION_ADDRESS "" 35 /* 36 * your collector port to recept netflow export 37 */ 38 #define RECEPTION_PORT 9999 39 /* 40 * routers number + 1 41 */ 42 #define ROUTER_INDEX_MAX 55 43 /* 44 * FILE with your routers IP address 45 */ 46 #define ROUTERS_LIST "/home/andreu/renetcol-0.0.12beta/src/routers.txt" 47 /* 48 * FILE with your prefix/subnet 49 */ 50 #define SUBNETS_LIST "/home/andreu/renetcol-0.0.12beta/src/IPv4_prefix.txt" 51 /* 52 * two constants, here a subnet is include in a prefix 53 */ 54 #define MAX_IPV4_PREFIX 4000 55 #define MAX_IPV4_SUBNET 1000 56 /* 57 * FILE for the rules 58 */ 59 #define RULES_FILE "/home/andreu/renetcol-0.0.12beta/src/rules.txt" 60 /* 61 * FILE with SNMP index of the interfaces 62 * tagged "C"ustomers or "B"ackbone 63 */ 64 #define INTERFACES_TYPE_LIST "" 65 /* 66 * maximum SNMP index 67 */ 68 #define MAX_SNMP_INDEX 900 28 69 /* 29 * renetcol param 30 */ 70 * Path to the rrd file 71 */ 72 #define PREFIX_RRD_LOCATION "/mnt/data/RRD/RENATER/IPv4_SUBNET/" 73 #define MATRIX_RRD_LOCATION "/mnt/data/RRD/RENATER/MATRIX/" 31 74 32 #define RECEPTION_ADDRESS "" /* your collector address - syntax: 10.0.0.90 */33 #define RECEPTION_PORT 9999 /* your collector port to recept netflow export */34 #define ROUTER_INDEX_MAX 55 /* routers number + 1 */35 #define ROUTERS_LIST "/home/andreu/renetcol-0.0.12beta/src/routers.txt" /* FILE with your routers IP address */36 #define SUBNETS_LIST "/home/andreu/renetcol-0.0.12beta/src/IPv4_prefix.txt" /* FILE with your subnets */37 #define RULES_FILE "/home/andreu/renetcol-0.0.12beta/src/rules.txt" /* FILE for the rules */38 #define INTERFACES_TYPE_LIST "" /* FILE with SNMP index of the interfaces */39 /* tagged "C"ustomers or "B"ackbone */40 #define MAX_SNMP_INDEX 900 /* maximum SNMP index for interfaces */41 75 42 #define STEP 5 /* interval - in min */ 76 /**************************************************************** 77 * the following parameters CAN be changed but it's NOT REQUIRED 78 ***************************************************************/ 79 #define STEP 5 43 80 #define FIELD_TYPE_NUMBER 89 44 #define MAX_RULES_PER_FIELD 10 /* maximum rules number for one field */81 #define MAX_RULES_PER_FIELD 10 45 82 #define SHMSIZE 33554432 46 83 #define SOCKET_BUFFER_SIZE 1500 47 84 #define TIME_OUT 300 48 49 /*50 * renetcolAgg param51 */52 53 #define PREFIX_RRD_LOCATION "/mnt/data/RRD/RENATER/IPv4_SUBNET/"54 #define MATRIX_RRD_LOCATION "/mnt/data/RRD/RENATER/MATRIX/"55 85 #define RRD_EXTENSION ".rrd" 56 57 86 #define RRD_PARAM_PREFIX_0 "rrdcreate" 58 87 #define RRD_PARAM_PREFIX_1 "--start" … … 81 110 #define RRD_PARAM_PREFIX_24 "RRA:MAX:0.5:24:1550" 82 111 #define RRD_PARAM_PREFIX_25 "RRA:MAX:0.5:288:1594" 83 84 112 #define RRD_PARAM_MATRIX_0 "rrdcreate" 85 113 #define RRD_PARAM_MATRIX_1 "--start" … … 97 125 #define RRD_PARAM_MATRIX_13 "RRA:MAX:0.5:24:1550" 98 126 #define RRD_PARAM_MATRIX_14 "RRA:MAX:0.5:288:1594" 99 100 127 #define RRD_UPDATE_0 "rrdupdate" 101 102 /*103 * renetcolSender param104 */105 106 128 #define RECEPT_PORT "52571" 107 129 #define VAR_SHARED_SIZE 4 -
trunk/src/routers_mgmt.c
r58 r59 49 49 tmp->tplList = NULL; 50 50 tmp->tplOptList = NULL; 51 tmp->sampled = 1; /* ==1 required in case of no sampling configured */51 tmp->sampled = 0; 52 52 tmp->next = routersList; 53 53 if (routersList!=NULL) { routersList->prev = tmp;} … … 70 70 return routersList; 71 71 } else { 72 fprintf(stderr, "\nSAMPLED VALUE: %lu\n", spled);73 72 tmp->sampled = spled; 74 73 return tmp; -
trunk/src/routers_mgmt.h
r58 r59 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 #ifdef IPV4AGGIDSNMP 50 51 unsigned short snmpIndexList[MAX_SNMP_INDEX]; /* 0:Backbone, 1:Customer */ 52 #endif 51 53 RouterPtr next; 52 54 RouterPtr prev; … … 63 65 RuleDefPtr *rulesAddressPtr; 64 66 RulesPtr rulesListPtr; /* Rules list */ 67 #ifdef IPV4AGGIDR 65 68 unsigned long *routersID; 69 #endif 66 70 struct PrefixV4 *currentV4Tab; 67 71 struct PrefixV4 *secondV4Tab; 72 struct PrefixV4 *currentV4SubnetTab; 73 struct PrefixV4 *secondV4SubnetTab; 74 #ifdef MATRIX 68 75 struct POP *matrixPOP; 76 #endif 69 77 }; 70 78