Changeset 60 for trunk/src/renetcolAgg.c

Show
Ignore:
Timestamp:
10/25/07 07:23:46 (15 years ago)
Author:
andreu
Message:

new aggregation mode based on SNMP index and AS aggregation

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/renetcolAgg.c

    r59 r60  
    5454  static char ipStr[24]; 
    5555  static char indexStr[24]; 
     56  static char asStr[7]; 
    5657  static char createstr[2048]; 
    5758  char *opt[27]; 
     
    480481        /* END MATRIX INTER POP ACC */ 
    481482#endif /* MATRIX */ 
     483#ifdef ASACC 
     484        /*  
     485         * 
     486         * AS ACCOUNTING  
     487         * 
     488         */ 
     489        for (i=0; i<shmForAgg->ASNb; i++){ 
     490          /* HERE create or update RRD FILE */ 
     491          if (shmForAgg->ASTab[index][i].sampling != 0) { 
     492            for (j=0; j<strlen(name); j++) {name[j] = '\0';} 
     493            for (j=0; j<strlen(createstr); j++) {createstr[j] = '\0';} 
     494            for (j=0; j<strlen(asStr); j++) {asStr[j] = '\0';} 
     495            for (j=0; j<strlen(buf); j++) {buf[j] = '\0';} 
     496            strcat(name, AS_RRD_LOCATION); 
     497            sprintf(asStr, "%hu_%lu",  
     498                    shmForAgg->ASTab[index][i].as, 
     499                    shmForAgg->ASTab[index][i].sampling 
     500                    );  
     501            strcat(name, asStr); 
     502            strcat(name, RRD_EXTENSION); 
     503            if ( (fp=fopen(name,"r")) == NULL ){ 
     504              opt[0]= (char *) malloc((strlen(RRD_PARAM_AS_0) + 1) * sizeof(char)); 
     505              strcpy(opt[0], RRD_PARAM_AS_0); 
     506              opt[1]= (char *) malloc((strlen(name) + 1) * sizeof(char)); 
     507              strcpy(opt[1], name); 
     508              opt[2]= (char *) malloc((strlen(RRD_PARAM_AS_1) + 1) * sizeof(char)); 
     509              strcpy(opt[2], RRD_PARAM_AS_1); 
     510              opt[3]= (char *) malloc((strlen(RRD_PARAM_AS_2) + 1) * sizeof(char)); 
     511              strcpy(opt[3], RRD_PARAM_AS_2); 
     512              opt[4]= (char *) malloc((strlen(RRD_PARAM_AS_3) + 1) * sizeof(char)); 
     513              strcpy(opt[4], RRD_PARAM_AS_3); 
     514              opt[5]= (char *) malloc((strlen(RRD_PARAM_AS_4) + 1) * sizeof(char)); 
     515              strcpy(opt[5], RRD_PARAM_AS_4); 
     516              opt[6]= (char *) malloc((strlen(RRD_PARAM_AS_5) + 1) * sizeof(char)); 
     517              strcpy(opt[6], RRD_PARAM_AS_5); 
     518              opt[7]= (char *) malloc((strlen(RRD_PARAM_AS_6) + 1) * sizeof(char)); 
     519              strcpy(opt[7], RRD_PARAM_AS_6); 
     520              opt[8]= (char *) malloc((strlen(RRD_PARAM_AS_7) + 1) * sizeof(char)); 
     521              strcpy(opt[8], RRD_PARAM_AS_7); 
     522              opt[9]= (char *) malloc((strlen(RRD_PARAM_AS_8) + 1) * sizeof(char)); 
     523              strcpy(opt[9], RRD_PARAM_AS_8); 
     524              opt[10]= (char *) malloc((strlen(RRD_PARAM_AS_9) + 1) * sizeof(char)); 
     525              strcpy(opt[10], RRD_PARAM_AS_9); 
     526              opt[11]= (char *) malloc((strlen(RRD_PARAM_AS_10) + 1) * sizeof(char)); 
     527              strcpy(opt[11], RRD_PARAM_AS_10); 
     528              opt[12]= (char *) malloc((strlen(RRD_PARAM_AS_11) + 1) * sizeof(char)); 
     529              strcpy(opt[12], RRD_PARAM_AS_11); 
     530              opt[13]= (char *) malloc((strlen(RRD_PARAM_AS_12) + 1) * sizeof(char)); 
     531              strcpy(opt[13], RRD_PARAM_AS_12); 
     532              opt[14]= (char *) malloc((strlen(RRD_PARAM_AS_13) + 1) * sizeof(char)); 
     533              strcpy(opt[14], RRD_PARAM_AS_13); 
     534              opt[15]= (char *) malloc((strlen(RRD_PARAM_AS_14) + 1) * sizeof(char)); 
     535              strcpy(opt[15], RRD_PARAM_AS_14); 
     536              opt[16]= (char *) malloc((strlen(RRD_PARAM_AS_15) + 1) * sizeof(char)); 
     537              strcpy(opt[16], RRD_PARAM_AS_15); 
     538              opt[17]= (char *) malloc((strlen(RRD_PARAM_AS_16) + 1) * sizeof(char)); 
     539              strcpy(opt[17], RRD_PARAM_AS_16); 
     540              opt[18]= (char *) malloc((strlen(RRD_PARAM_AS_17) + 1) * sizeof(char)); 
     541              strcpy(opt[18], RRD_PARAM_AS_17); 
     542              optind = opterr = 0; 
     543              rrd_clear_error(); 
     544              if ( rrd_create(19,opt) < 0) { 
     545                syslog(LOG_ERR, "RRD create file %s, error: %s\n", name, rrd_get_error()); 
     546                rrd_create_er_ct++; 
     547              } else { 
     548                rrd_create_ok_ct++; 
     549              } 
     550              for ( j=0; j<19; j++) { 
     551                free(opt[j]); 
     552                opt[j] = NULL; 
     553              } 
     554            }else{  
     555              fclose(fp); 
     556              rrd_already_created_ct++; 
     557              snprintf(buf,  
     558                       2048,  
     559                       "%lu:%llu:%llu:%llu:%llu:%llu:%llu",   
     560                       now-300,  /* or ctime(&now) with %s */ 
     561                       shmForAgg->ASTab[index][i].flowNbIN,  /* 1 */ 
     562                       shmForAgg->ASTab[index][i].flowNbOUT, 
     563                       shmForAgg->ASTab[index][i].bytesNbIN, 
     564                       shmForAgg->ASTab[index][i].bytesNbOUT, 
     565                       shmForAgg->ASTab[index][i].pktsNbIN,  /* 5 */ 
     566                       shmForAgg->ASTab[index][i].pktsNbOUT 
     567                       ); 
     568              optUpdate[0]= (char *) malloc((strlen(RRD_UPDATE_0) + 1) * sizeof(char)); 
     569              strcpy(optUpdate[0], RRD_UPDATE_0); 
     570              optUpdate[1]= (char *) malloc((strlen(name) + 1) * sizeof(char)); 
     571              strcpy(optUpdate[1], name); 
     572              optUpdate[2]= (char *) malloc((strlen(buf) + 1) * sizeof(char)); 
     573              strcpy(optUpdate[2], buf); 
     574              optind = opterr = 0;  
     575              rrd_clear_error(); 
     576              if ( rrd_update(3, optUpdate) < 0 ) {  
     577                syslog(LOG_ERR, "RRD update file %s, error: %s\n", name, rrd_get_error()); 
     578                rrd_update_er_ct++; 
     579              } else { 
     580                rrd_update_ok_ct++; 
     581              } 
     582              for ( j=0; j<3; j++) { 
     583                free(optUpdate[j]); 
     584                optUpdate[j] = NULL; 
     585              } 
     586            } 
     587            /* Reinit the shared tables */ 
     588            shmForAgg->ASTab[index][i].flowNbIN = 0; 
     589            shmForAgg->ASTab[index][i].bytesNbIN = 0; 
     590            shmForAgg->ASTab[index][i].pktsNbIN = 0; 
     591            shmForAgg->ASTab[index][i].flowNbOUT = 0; 
     592            shmForAgg->ASTab[index][i].bytesNbOUT = 0; 
     593            shmForAgg->ASTab[index][i].pktsNbOUT = 0; 
     594          } 
     595        } 
     596#endif /* AS */ 
    482597        now2 = time((time_t *)NULL); 
    483598#ifdef DEBUGAGG 
     
    541656        } 
    542657#endif 
     658#ifdef ASACC 
     659        for (i=0; i<shmForAgg->ASNb; i++){ 
     660          shmForAgg->ASTab[index][i].flowNbIN = 0; 
     661          shmForAgg->ASTab[index][i].bytesNbIN = 0; 
     662          shmForAgg->ASTab[index][i].pktsNbIN = 0; 
     663          shmForAgg->ASTab[index][i].flowNbOUT = 0; 
     664          shmForAgg->ASTab[index][i].bytesNbOUT = 0; 
     665          shmForAgg->ASTab[index][i].pktsNbOUT = 0; 
     666        } 
     667#endif 
    543668      } /* end is first update */  
    544669    } /* end read ok */