Changeset 36 for trunk/src/renetcolAgg.c

Show
Ignore:
Timestamp:
05/19/07 11:57:44 (16 years ago)
Author:
andreu
Message:

ticket #1 #2 #7 closed - release 0.0.9beta

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/renetcolAgg.c

    r31 r36  
    4141{ 
    4242  int shmid; 
    43   int i, j, index; 
     43  int i, j, k = 0; 
     44  int index = 1; 
    4445  int rrd_update_er_ct = 0; 
    4546  int rrd_update_ok_ct = 0; 
     
    5354  static char name[2048]; 
    5455  static char ipStr[24]; 
     56  static char indexStr[24]; 
    5557  static char createstr[2048]; 
    5658  char *opt[27]; 
     
    8890      now = time((time_t *)NULL); 
    8991      if (isFirstUpdate == 0) { 
     92        /* SUBNET ACCOUNTING */ 
    9093        for (i=0; i<shmForAgg->v4PrefixNb; i++){ 
    9194          /* HERE create or update RRD FILE */ 
     
    9598            for (j=0; j<strlen(ipStr); j++) {ipStr[j] = '\0';} 
    9699            for (j=0; j<strlen(buf); j++) {buf[j] = '\0';} 
    97             strcat(name, RRD_LOCATION); 
     100            strcat(name, PREFIX_RRD_LOCATION); 
    98101            sprintf(ipStr, "%lu_%lu_%lu_%lu_%hu_%lu",  
    99102                    shmForAgg->prefixV4Tab[index][i].beginning>>24, 
     
    107110            strcat(name, RRD_EXTENSION); 
    108111            if ( (fp=fopen(name,"r")) == NULL ){ 
    109               opt[0]= (char *) malloc((strlen(RRD_PARAM_0) + 1) * sizeof(char)); 
    110               strcpy(opt[0], RRD_PARAM_0); 
     112              opt[0]= (char *) malloc((strlen(RRD_PARAM_PREFIX_0) + 1) * sizeof(char)); 
     113              strcpy(opt[0], RRD_PARAM_PREFIX_0); 
    111114              opt[1]= (char *) malloc((strlen(name) + 1) * sizeof(char)); 
    112115              strcpy(opt[1], name); 
    113               opt[2]= (char *) malloc((strlen(RRD_PARAM_1) + 1) * sizeof(char)); 
    114               strcpy(opt[2], RRD_PARAM_1); 
    115               opt[3]= (char *) malloc((strlen(RRD_PARAM_2) + 1) * sizeof(char)); 
    116               strcpy(opt[3], RRD_PARAM_2); 
    117               opt[4]= (char *) malloc((strlen(RRD_PARAM_3) + 1) * sizeof(char)); 
    118               strcpy(opt[4], RRD_PARAM_3); 
    119               opt[5]= (char *) malloc((strlen(RRD_PARAM_4) + 1) * sizeof(char)); 
    120               strcpy(opt[5], RRD_PARAM_4); 
    121               opt[6]= (char *) malloc((strlen(RRD_PARAM_5) + 1) * sizeof(char)); 
    122               strcpy(opt[6], RRD_PARAM_5); 
    123               opt[7]= (char *) malloc((strlen(RRD_PARAM_6) + 1) * sizeof(char)); 
    124               strcpy(opt[7], RRD_PARAM_6); 
    125               opt[8]= (char *) malloc((strlen(RRD_PARAM_7) + 1) * sizeof(char)); 
    126               strcpy(opt[8], RRD_PARAM_7); 
    127               opt[9]= (char *) malloc((strlen(RRD_PARAM_8) + 1) * sizeof(char)); 
    128               strcpy(opt[9], RRD_PARAM_8); 
    129               opt[10]= (char *) malloc((strlen(RRD_PARAM_9) + 1) * sizeof(char)); 
    130               strcpy(opt[10], RRD_PARAM_9); 
    131               opt[11]= (char *) malloc((strlen(RRD_PARAM_10) + 1) * sizeof(char)); 
    132               strcpy(opt[11], RRD_PARAM_10); 
    133               opt[12]= (char *) malloc((strlen(RRD_PARAM_11) + 1) * sizeof(char)); 
    134               strcpy(opt[12], RRD_PARAM_11); 
    135               opt[13]= (char *) malloc((strlen(RRD_PARAM_12) + 1) * sizeof(char)); 
    136               strcpy(opt[13], RRD_PARAM_12); 
    137               opt[14]= (char *) malloc((strlen(RRD_PARAM_13) + 1) * sizeof(char)); 
    138               strcpy(opt[14], RRD_PARAM_13); 
    139               opt[15]= (char *) malloc((strlen(RRD_PARAM_14) + 1) * sizeof(char)); 
    140               strcpy(opt[15], RRD_PARAM_14); 
    141               opt[16]= (char *) malloc((strlen(RRD_PARAM_15) + 1) * sizeof(char)); 
    142               strcpy(opt[16], RRD_PARAM_15); 
    143               opt[17]= (char *) malloc((strlen(RRD_PARAM_16) + 1) * sizeof(char)); 
    144               strcpy(opt[17], RRD_PARAM_16); 
    145               opt[18]= (char *) malloc((strlen(RRD_PARAM_17) + 1) * sizeof(char)); 
    146               strcpy(opt[18], RRD_PARAM_17); 
    147               opt[19]= (char *) malloc((strlen(RRD_PARAM_18) + 1) * sizeof(char)); 
    148               strcpy(opt[19], RRD_PARAM_18); 
    149               opt[20]= (char *) malloc((strlen(RRD_PARAM_19) + 1) * sizeof(char)); 
    150               strcpy(opt[20], RRD_PARAM_19); 
    151               opt[21]= (char *) malloc((strlen(RRD_PARAM_20) + 1) * sizeof(char)); 
    152               strcpy(opt[21], RRD_PARAM_20); 
    153               opt[22]= (char *) malloc((strlen(RRD_PARAM_21) + 1) * sizeof(char)); 
    154               strcpy(opt[22], RRD_PARAM_21); 
    155               opt[23]= (char *) malloc((strlen(RRD_PARAM_22) + 1) * sizeof(char)); 
    156               strcpy(opt[23], RRD_PARAM_22); 
    157               opt[24]= (char *) malloc((strlen(RRD_PARAM_23) + 1) * sizeof(char)); 
    158               strcpy(opt[24], RRD_PARAM_23); 
    159               opt[25]= (char *) malloc((strlen(RRD_PARAM_24) + 1) * sizeof(char)); 
    160               strcpy(opt[25], RRD_PARAM_24); 
    161               opt[26]= (char *) malloc((strlen(RRD_PARAM_25) + 1) * sizeof(char)); 
    162               strcpy(opt[26], RRD_PARAM_25); 
     116              opt[2]= (char *) malloc((strlen(RRD_PARAM_PREFIX_1) + 1) * sizeof(char)); 
     117              strcpy(opt[2], RRD_PARAM_PREFIX_1); 
     118              opt[3]= (char *) malloc((strlen(RRD_PARAM_PREFIX_2) + 1) * sizeof(char)); 
     119              strcpy(opt[3], RRD_PARAM_PREFIX_2); 
     120              opt[4]= (char *) malloc((strlen(RRD_PARAM_PREFIX_3) + 1) * sizeof(char)); 
     121              strcpy(opt[4], RRD_PARAM_PREFIX_3); 
     122              opt[5]= (char *) malloc((strlen(RRD_PARAM_PREFIX_4) + 1) * sizeof(char)); 
     123              strcpy(opt[5], RRD_PARAM_PREFIX_4); 
     124              opt[6]= (char *) malloc((strlen(RRD_PARAM_PREFIX_5) + 1) * sizeof(char)); 
     125              strcpy(opt[6], RRD_PARAM_PREFIX_5); 
     126              opt[7]= (char *) malloc((strlen(RRD_PARAM_PREFIX_6) + 1) * sizeof(char)); 
     127              strcpy(opt[7], RRD_PARAM_PREFIX_6); 
     128              opt[8]= (char *) malloc((strlen(RRD_PARAM_PREFIX_7) + 1) * sizeof(char)); 
     129              strcpy(opt[8], RRD_PARAM_PREFIX_7); 
     130              opt[9]= (char *) malloc((strlen(RRD_PARAM_PREFIX_8) + 1) * sizeof(char)); 
     131              strcpy(opt[9], RRD_PARAM_PREFIX_8); 
     132              opt[10]= (char *) malloc((strlen(RRD_PARAM_PREFIX_9) + 1) * sizeof(char)); 
     133              strcpy(opt[10], RRD_PARAM_PREFIX_9); 
     134              opt[11]= (char *) malloc((strlen(RRD_PARAM_PREFIX_10) + 1) * sizeof(char)); 
     135              strcpy(opt[11], RRD_PARAM_PREFIX_10); 
     136              opt[12]= (char *) malloc((strlen(RRD_PARAM_PREFIX_11) + 1) * sizeof(char)); 
     137              strcpy(opt[12], RRD_PARAM_PREFIX_11); 
     138              opt[13]= (char *) malloc((strlen(RRD_PARAM_PREFIX_12) + 1) * sizeof(char)); 
     139              strcpy(opt[13], RRD_PARAM_PREFIX_12); 
     140              opt[14]= (char *) malloc((strlen(RRD_PARAM_PREFIX_13) + 1) * sizeof(char)); 
     141              strcpy(opt[14], RRD_PARAM_PREFIX_13); 
     142              opt[15]= (char *) malloc((strlen(RRD_PARAM_PREFIX_14) + 1) * sizeof(char)); 
     143              strcpy(opt[15], RRD_PARAM_PREFIX_14); 
     144              opt[16]= (char *) malloc((strlen(RRD_PARAM_PREFIX_15) + 1) * sizeof(char)); 
     145              strcpy(opt[16], RRD_PARAM_PREFIX_15); 
     146              opt[17]= (char *) malloc((strlen(RRD_PARAM_PREFIX_16) + 1) * sizeof(char)); 
     147              strcpy(opt[17], RRD_PARAM_PREFIX_16); 
     148              opt[18]= (char *) malloc((strlen(RRD_PARAM_PREFIX_17) + 1) * sizeof(char)); 
     149              strcpy(opt[18], RRD_PARAM_PREFIX_17); 
     150              opt[19]= (char *) malloc((strlen(RRD_PARAM_PREFIX_18) + 1) * sizeof(char)); 
     151              strcpy(opt[19], RRD_PARAM_PREFIX_18); 
     152              opt[20]= (char *) malloc((strlen(RRD_PARAM_PREFIX_19) + 1) * sizeof(char)); 
     153              strcpy(opt[20], RRD_PARAM_PREFIX_19); 
     154              opt[21]= (char *) malloc((strlen(RRD_PARAM_PREFIX_20) + 1) * sizeof(char)); 
     155              strcpy(opt[21], RRD_PARAM_PREFIX_20); 
     156              opt[22]= (char *) malloc((strlen(RRD_PARAM_PREFIX_21) + 1) * sizeof(char)); 
     157              strcpy(opt[22], RRD_PARAM_PREFIX_21); 
     158              opt[23]= (char *) malloc((strlen(RRD_PARAM_PREFIX_22) + 1) * sizeof(char)); 
     159              strcpy(opt[23], RRD_PARAM_PREFIX_22); 
     160              opt[24]= (char *) malloc((strlen(RRD_PARAM_PREFIX_23) + 1) * sizeof(char)); 
     161              strcpy(opt[24], RRD_PARAM_PREFIX_23); 
     162              opt[25]= (char *) malloc((strlen(RRD_PARAM_PREFIX_24) + 1) * sizeof(char)); 
     163              strcpy(opt[25], RRD_PARAM_PREFIX_24); 
     164              opt[26]= (char *) malloc((strlen(RRD_PARAM_PREFIX_25) + 1) * sizeof(char)); 
     165              strcpy(opt[26], RRD_PARAM_PREFIX_25); 
    163166              optind = opterr = 0; 
    164167              rrd_clear_error(); 
     
    230233            shmForAgg->prefixV4Tab[index][i].fourthCoSOUT = 0;  
    231234          } 
    232         }       
     235        } 
     236        /* MATRIX INTER POP ACCOUNTING */ 
     237        /* rrd */ 
     238        for (i=0; i<ROUTER_INDEX_MAX; i++){ 
     239          for (j=0; j<ROUTER_INDEX_MAX; j++){ 
     240            /* HERE create or update RRD FILE */ 
     241            for (k=0; k<strlen(name); k++) {name[k] = '\0';} 
     242            for (k=0; k<strlen(createstr); k++) {createstr[k] = '\0';} 
     243            for (k=0; k<strlen(indexStr); k++) {indexStr[k] = '\0';} 
     244            for (k=0; k<strlen(buf); k++) {buf[k] = '\0';} 
     245            strcat(name, MATRIX_RRD_LOCATION); 
     246            sprintf(indexStr, "%d_%d",  
     247                    i, 
     248                    j 
     249                    );  
     250            strcat(name, indexStr); 
     251            strcat(name, RRD_EXTENSION); 
     252            if ( (fp=fopen(name,"r")) == NULL ){ 
     253              opt[0]= (char *) malloc((strlen(RRD_PARAM_MATRIX_0) + 1) * sizeof(char)); 
     254              strcpy(opt[0], RRD_PARAM_MATRIX_0); 
     255              opt[1]= (char *) malloc((strlen(name) + 1) * sizeof(char)); 
     256              strcpy(opt[1], name); 
     257              opt[2]= (char *) malloc((strlen(RRD_PARAM_MATRIX_1) + 1) * sizeof(char)); 
     258              strcpy(opt[2], RRD_PARAM_MATRIX_1); 
     259              opt[3]= (char *) malloc((strlen(RRD_PARAM_MATRIX_2) + 1) * sizeof(char)); 
     260              strcpy(opt[3], RRD_PARAM_MATRIX_2); 
     261              opt[4]= (char *) malloc((strlen(RRD_PARAM_MATRIX_3) + 1) * sizeof(char)); 
     262              strcpy(opt[4], RRD_PARAM_MATRIX_3); 
     263              opt[5]= (char *) malloc((strlen(RRD_PARAM_MATRIX_4) + 1) * sizeof(char)); 
     264              strcpy(opt[5], RRD_PARAM_MATRIX_4); 
     265              opt[6]= (char *) malloc((strlen(RRD_PARAM_MATRIX_5) + 1) * sizeof(char)); 
     266              strcpy(opt[6], RRD_PARAM_MATRIX_5); 
     267              opt[7]= (char *) malloc((strlen(RRD_PARAM_MATRIX_6) + 1) * sizeof(char)); 
     268              strcpy(opt[7], RRD_PARAM_MATRIX_6); 
     269              opt[8]= (char *) malloc((strlen(RRD_PARAM_MATRIX_7) + 1) * sizeof(char)); 
     270              strcpy(opt[8], RRD_PARAM_MATRIX_7); 
     271              opt[9]= (char *) malloc((strlen(RRD_PARAM_MATRIX_8) + 1) * sizeof(char)); 
     272              strcpy(opt[9], RRD_PARAM_MATRIX_8); 
     273              opt[10]= (char *) malloc((strlen(RRD_PARAM_MATRIX_9) + 1) * sizeof(char)); 
     274              strcpy(opt[10], RRD_PARAM_MATRIX_9); 
     275              opt[11]= (char *) malloc((strlen(RRD_PARAM_MATRIX_10) + 1) * sizeof(char)); 
     276              strcpy(opt[11], RRD_PARAM_MATRIX_10); 
     277              opt[12]= (char *) malloc((strlen(RRD_PARAM_MATRIX_11) + 1) * sizeof(char)); 
     278              strcpy(opt[12], RRD_PARAM_MATRIX_11); 
     279              opt[13]= (char *) malloc((strlen(RRD_PARAM_MATRIX_12) + 1) * sizeof(char)); 
     280              strcpy(opt[13], RRD_PARAM_MATRIX_12); 
     281              opt[14]= (char *) malloc((strlen(RRD_PARAM_MATRIX_13) + 1) * sizeof(char)); 
     282              strcpy(opt[14], RRD_PARAM_MATRIX_13); 
     283              opt[15]= (char *) malloc((strlen(RRD_PARAM_MATRIX_14) + 1) * sizeof(char)); 
     284              strcpy(opt[15], RRD_PARAM_MATRIX_14); 
     285              optind = opterr = 0; 
     286              rrd_clear_error(); 
     287              if ( rrd_create(16,opt) < 0) { 
     288                syslog(LOG_ERR, "RRD create file %s, error: %s\n", name, rrd_get_error()); 
     289                rrd_create_er_ct++; 
     290              } else { 
     291                rrd_create_ok_ct++; 
     292              } 
     293              for ( k=0; k<16; k++) { 
     294                free(opt[k]); 
     295                opt[k] = NULL; 
     296              } 
     297            }else{  
     298              fclose(fp); 
     299              rrd_already_created_ct++; 
     300              snprintf(buf,  
     301                       2048,  
     302                       "%lu:%llu:%llu:%llu",   
     303                       now-300,  /* or ctime(&now) with %s */ 
     304                       shmForAgg->matrixPOP[index][i][j].flowNb, 
     305                       shmForAgg->matrixPOP[index][i][j].bytesNb, 
     306                       shmForAgg->matrixPOP[index][i][j].pktsNb 
     307                       ); 
     308              optUpdate[0]= (char *) malloc((strlen(RRD_UPDATE_0) + 1) * sizeof(char)); 
     309              strcpy(optUpdate[0], RRD_UPDATE_0); 
     310              optUpdate[1]= (char *) malloc((strlen(name) + 1) * sizeof(char)); 
     311              strcpy(optUpdate[1], name); 
     312              optUpdate[2]= (char *) malloc((strlen(buf) + 1) * sizeof(char)); 
     313              strcpy(optUpdate[2], buf); 
     314              optind = opterr = 0;  
     315              rrd_clear_error(); 
     316              if ( rrd_update(3, optUpdate) < 0 ) {  
     317                syslog(LOG_ERR, "RRD update file %s, error: %s\n", name, rrd_get_error()); 
     318                rrd_update_er_ct++; 
     319              } else { 
     320                rrd_update_ok_ct++; 
     321              } 
     322              for ( k=0; k<3; k++) { 
     323                free(optUpdate[k]); 
     324                optUpdate[k] = NULL; 
     325              } 
     326            } 
     327 
     328          } 
     329        } 
     330        /* reinit */ 
     331        for (i=0; i<ROUTER_INDEX_MAX; i++){ 
     332          for (j=0; j<ROUTER_INDEX_MAX; j++) { 
     333            shmForAgg->matrixPOP[index][i][j].bytesNb = 0; 
     334            shmForAgg->matrixPOP[index][i][j].pktsNb = 0; 
     335            shmForAgg->matrixPOP[index][i][j].flowNb = 0; 
     336          } 
     337        } 
     338        /* END MATRIX INTER POP ACC */ 
    233339        now2 = time((time_t *)NULL); 
    234340        /* #ifdef DEBUGAGG */ 
     
    250356      } else { 
    251357        isFirstUpdate = 0; 
     358        /* Reinit the shared table */ 
     359        for (i=0; i<shmForAgg->v4PrefixNb; i++){ 
     360          shmForAgg->prefixV4Tab[index][i].flowNbIN = 0; 
     361          shmForAgg->prefixV4Tab[index][i].bytesNbIN = 0; 
     362          shmForAgg->prefixV4Tab[index][i].pktsNbIN = 0; 
     363          shmForAgg->prefixV4Tab[index][i].flowNbOUT = 0; 
     364          shmForAgg->prefixV4Tab[index][i].bytesNbOUT = 0; 
     365          shmForAgg->prefixV4Tab[index][i].pktsNbOUT = 0; 
     366          shmForAgg->prefixV4Tab[index][i].firstCoSIN = 0; 
     367          shmForAgg->prefixV4Tab[index][i].secondCoSIN = 0; 
     368          shmForAgg->prefixV4Tab[index][i].thirdCoSIN = 0; 
     369          shmForAgg->prefixV4Tab[index][i].fourthCoSIN = 0; 
     370          shmForAgg->prefixV4Tab[index][i].firstCoSOUT = 0; 
     371          shmForAgg->prefixV4Tab[index][i].secondCoSOUT = 0; 
     372          shmForAgg->prefixV4Tab[index][i].thirdCoSOUT = 0; 
     373          shmForAgg->prefixV4Tab[index][i].fourthCoSOUT = 0;  
     374        } 
     375        /* reinit */ 
     376        for (i=0; i<ROUTER_INDEX_MAX; i++){ 
     377          for (j=0; j<ROUTER_INDEX_MAX; j++) { 
     378            shmForAgg->matrixPOP[index][i][j].bytesNb = 0; 
     379            shmForAgg->matrixPOP[index][i][j].pktsNb = 0; 
     380            shmForAgg->matrixPOP[index][i][j].flowNb = 0; 
     381          } 
     382        } 
    252383      }   
    253384    }