Changeset 60 for trunk

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

Location:
trunk
Files:
3 added
12 modified

Legend:

Unmodified
Added
Removed
  • trunk/configure.in

    r59 r60  
    1111 
    1212CFLAGS_OPTIMIZE="-O2" 
     13CFLAGS_ASACC="-DASACC" 
    1314CFLAGS_IPV4AGGIDSNMP="-DIPV4AGGIDSNMP" 
    1415CFLAGS_IPV4AGGIDR="-DIPV4AGGIDR" 
     
    3738fi 
    3839 
    39 AC_ARG_ENABLE(optimize,[  --enable-matrix inter pop matrix default=no], 
     40AC_ARG_ENABLE(asacc,[  --enable-asacc AS accounting default=no], 
     41asacc=$enableval,asacc=no) 
     42if test $asacc = yes ; then 
     43CFLAGS="$CFLAGS $CFLAGS_ASACC" 
     44fi 
     45 
     46AC_ARG_ENABLE(matrix,[  --enable-matrix inter pop matrix default=no], 
    4047matrix=$enableval,matrix=no) 
    4148if test $matrix = yes ; then 
  • trunk/src/Makefile.am

    r47 r60  
    66        dataFlowSet.h get_conf.c get_conf.h rules_mgmt.c rules_mgmt.h \ 
    77        remote_output.h remote_output.c prefix_mgmt.h prefix_mgmt.c \ 
    8         pop.h renetcolParam.h 
     8        pop.h renetcolParam.h as.h as.c 
    99renetcolSender_SOURCES = renetcolSender.c renetcolSender.h msg_mgmt.h \ 
    1010        msg_mgmt.c rules_mgmt.c rules_mgmt.h remote_output.h \ 
    11         remote_output.c fields_mgmt.h fields_mgmt.c pop.h renetcolParam.h 
     11        remote_output.c fields_mgmt.h fields_mgmt.c pop.h renetcolParam.h\ 
     12        as.h as.c 
    1213renetcolMsgCtl_SOURCES = renetcolMsgCtl.c 
    13 renetcolAgg_SOURCES = renetcolAgg.c renetcolAgg.h pop.h renetcolParam.h 
     14renetcolAgg_SOURCES = renetcolAgg.c renetcolAgg.h pop.h renetcolParam.h as.h 
    1415BUILT_SOURCES = renetcol.o renetcolSender.o renetcolAgg.o 
    1516renetcol_LDADD = -ldl -lc_p 
  • trunk/src/dataFlowSet.c

    r59 r60  
    6666  unsigned short tplMsgType = 11; 
    6767  struct PrefixV4 prefixKey, *res, *res2; /* for bsearch */ 
     68#if defined(IPV4AGGIDSNMP) 
     69  struct PrefixV4 *res3; 
     70#endif 
     71#ifdef ASACC 
     72  struct AS asKey, *asres; /* for bsearch */ 
     73#endif 
    6874  struct AggCache agCache; 
    6975  int bool = 0; /* in IPV4 Agg mode enabled, we need to now if it's an IPv4 */ 
     
    229235              } 
    230236#endif 
     237#ifdef ASACC 
     238              if (pftmp->fieldType==16){ 
     239                agCache.asS = *((unsigned short*)&buffer2); 
     240              }    
     241              if (pftmp->fieldType==17){ 
     242                agCache.asD = *((unsigned short*)&buffer2); 
     243              } 
     244#endif 
    231245              break; 
    232246            case 3: 
     
    482496          }        
    483497#endif 
     498#ifdef ASACC 
     499          if (pftmp->fieldType==16){ 
     500            agCache.asS = *((unsigned short*)&buffer2); 
     501          }        
     502          if (pftmp->fieldType==17){ 
     503            agCache.asD = *((unsigned short*)&buffer2); 
     504          } 
     505#endif 
    484506          break; 
    485507        case 3: 
     
    548570        /* Aggregation mode must be enable in ./configure options   */ 
    549571        /* first we must know if the address belong to our prefix   */ 
     572        /* 
     573         * AS ACCOUNTING 
     574         */ 
     575#if defined(ASACC) && defined(IPV4AGGIDSNMP) 
     576        if ( (bool == 1) && (isMplsFlow == 0) ){ 
     577          asKey.as = agCache.asS; 
     578          asres = bsearch(&asKey, myPtrs->currentASTab, myPtrs->asNb, sizeof(struct AS), asGlobalCmp); 
     579          if (asres != NULL) { 
     580            if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1  ) {          
     581              if (myPtrs->currentRouterPtr->sampled != 0 ){ 
     582                /* OUT ("traffic from the AS")  */ 
     583                asres->bytesNbOUT += agCache.bytes; 
     584                asres->pktsNbOUT += agCache.pkts; 
     585                (asres->flowNbOUT)++; 
     586              } 
     587              if (asres->sampling == 0  
     588                  && myPtrs->currentRouterPtr->sampled != 0){ 
     589                asres->sampling = myPtrs->currentRouterPtr->sampled; 
     590              } 
     591              asres = NULL; 
     592              asKey.as = agCache.asD; 
     593              asres = bsearch(&asKey, myPtrs->currentASTab, myPtrs->asNb, sizeof(struct AS), asGlobalCmp); 
     594              if (asres!=NULL){ 
     595                if (myPtrs->currentRouterPtr->sampled != 0 ){ 
     596                  /* IN ("traffic to the AS")  */ 
     597                  asres->bytesNbIN += agCache.bytes; 
     598                  asres->pktsNbIN += agCache.pkts; 
     599                  (asres->flowNbIN)++; 
     600                } 
     601                if (asres->sampling == 0  
     602                    && myPtrs->currentRouterPtr->sampled != 0){ 
     603                  asres->sampling = myPtrs->currentRouterPtr->sampled; 
     604                } 
     605                asres = NULL; 
     606              } 
     607            } 
     608          } else { 
     609            asres = NULL; 
     610            asKey.as = agCache.asD; 
     611            asres = bsearch(&asKey, myPtrs->currentASTab, myPtrs->asNb, sizeof(struct AS), asGlobalCmp); 
     612            if (asres!=NULL){ 
     613              if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1  ) { 
     614                if (myPtrs->currentRouterPtr->sampled != 0 ){ 
     615                  /* IN ("traffic to the AS")  */ 
     616                  asres->bytesNbIN += agCache.bytes; 
     617                  asres->pktsNbIN += agCache.pkts; 
     618                  (asres->flowNbIN)++; 
     619                } 
     620                if (asres->sampling == 0  
     621                    && myPtrs->currentRouterPtr->sampled != 0){ 
     622                  asres->sampling = myPtrs->currentRouterPtr->sampled; 
     623                } 
     624              } 
     625            } 
     626          } 
     627        } 
     628#endif 
     629        /* 
     630         * PREFIX &/or MATRIX ACCOUNTING 
     631         */ 
    550632#if defined(IPV4AGGIDR) || defined(IPV4AGGIDSNMP) 
    551633        if ( (bool == 1) && (isMplsFlow == 0) ){ 
     
    569651                res->sampling = myPtrs->currentRouterPtr->sampled; 
    570652              } 
     653#if defined(IPV4AGGIDSNMP) 
     654              prefixKey.beginning = agCache.v4AdD>>(32-agCache.maskD)<<(32-agCache.maskD); 
     655              res3 = bsearch(&prefixKey, V4PTab, nbPV4,  
     656                             sizeof(struct PrefixV4), prefGlobalCmp); 
     657              if (res3!=NULL){ 
     658                if (myPtrs->currentRouterPtr->sampled != 0 ){ 
     659                  /* IN ("traffic to the prefix/subnet")  */ 
     660                  res3->bytesNbIN += agCache.bytes; 
     661                  res3->pktsNbIN += agCache.pkts; 
     662                  (res3->flowNbIN)++; 
     663                } 
     664                if (res3->sampling == 0  
     665                    && myPtrs->currentRouterPtr->sampled != 0){ 
     666                  res3->sampling = myPtrs->currentRouterPtr->sampled; 
     667                } 
     668              } 
     669#endif 
    571670#if defined(MATRIX) && defined(IPV4AGGIDR) 
    572671              /* inter-pop matrix Accounting */ 
     
    603702              /* doublon or bad reference in prefix list */ 
    604703            } 
    605           } else { 
     704          } else { /* the prefix in source don't exist in your prefix list */ 
    606705            prefixKey.beginning = agCache.v4AdD>>(32-agCache.maskD)<<(32-agCache.maskD); 
    607706            res = bsearch(&prefixKey, V4PTab, nbPV4,  
    608707                          sizeof(struct PrefixV4), prefGlobalCmp); 
    609708            if (res!=NULL){ 
    610               if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1  ) {        
     709              if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1  ) { 
    611710                if (myPtrs->currentRouterPtr->sampled != 0 ){ 
    612711                  /* IN ("traffic to the prefix/subnet")  */ 
     
    628727                  res->sampling = myPtrs->currentRouterPtr->sampled; 
    629728                } 
    630 /*            } else { */ 
     729              } else { 
    631730                /* doublon or bad reference in prefix list */ 
    632731              } 
    633732            } else { 
     733              /* UNKNOW SUBNET CASE                                        */ 
     734              /*                                                           */ 
    634735              /* HERE : we are in the cases of the address/mask don't      */ 
    635736              /*        belong to a prefix listed in the IPv4 prefix file  */ 
     
    663764#endif /* (IPV4AGGIDR) || (IPV4AGGIDSNMP) */ 
    664765        /*  
    665          * Redirection if needed  
     766         * 
     767         * SOCKET OUTPUT TO A REMOTE CLIENT 
     768         * 
    666769         * switch the rules definition (check & fieldToRecord),  
    667770         * we send the flow or a part of the flow to a remote host or a file. 
     
    772875     * 
    773876     * 
    774      *       Optional template 
     877     *  OPTIONAL TEMPLATE 
    775878     * 
    776879     * 
  • trunk/src/dataFlowSet.h

    r58 r60  
    3232#include "msg_mgmt.h" 
    3333#include "get_conf.h" 
     34#include "as.h" 
    3435#include "pop.h" 
    3536#include "prefix_mgmt.h" 
     
    8485  uint32_t tabAdd6S[4]; 
    8586  uint32_t tabAdd6D[4]; 
     87#ifdef ASACC 
     88  unsigned short asS; 
     89  unsigned short asD; 
     90#endif 
    8691  /*  unsigned short mplsLabel1; 
    8792      unsigned long ifAdd; */ 
  • trunk/src/get_conf.c

    r59 r60  
    6666 
    6767  if (!(routerFile = fopen(filename, "r"))) { 
    68     fprintf (stderr, "error during %s opening\n", filename); 
     68    fprintf (stderr, "error during file \"%s\" opening\n", filename); 
    6969    exit(1); 
    7070  } 
     
    147147 
    148148  if (!(prefixFile = fopen(filename, "r"))) { 
    149     fprintf (stderr, "error during %s opening\n", filename); 
     149    fprintf (stderr, "error during file \"%s\" opening\n", filename); 
    150150    exit(1); 
    151151  } 
     
    229229  } 
    230230} 
     231 
     232/*  
     233 *  
     234 */ 
     235int compASStr(a,b) 
     236{ 
     237  static unsigned short a0; 
     238  static unsigned short b0; 
     239  sscanf((char *)a,"%hu\n",&a0); 
     240  sscanf((char *)b,"%hu\n",&b0); 
     241  if (a0 > b0) return(1); 
     242  if (a0 < b0) return(-1); 
     243  return(0); 
     244} 
     245 
     246/*  
     247 * getAS() 
     248 * 
     249 * read AS file and sort the list 
     250 */ 
     251unsigned short getAS(char *filename, struct AS *ASTabPtr) 
     252{ 
     253  FILE *asFile; 
     254  char line[200]; 
     255  unsigned short counter = 0; 
     256  unsigned short n0; 
     257  unsigned short buffer; 
     258  int i = 0; 
     259  char ASStrTab[MAX_AS][7]; 
     260 
     261  if (!(asFile = fopen(filename, "r"))) { 
     262    fprintf (stderr, "error during file \"%s\" opening\n", filename); 
     263    exit(1); 
     264  } 
     265  for(i=0;i<MAX_AS;i++){ 
     266    ASTabPtr[i].as = 0; 
     267    ASTabPtr[i].sampling = 0; 
     268  } 
     269  while (fgets(line, 7, asFile) != 0) 
     270    { 
     271      strcpy(ASStrTab[counter], line); 
     272      counter++; 
     273      if (counter > MAX_AS) { 
     274        fprintf(stderr, "bufferoverflow in getAS function (get_conf.c)\ 
     275change the value of MAX_AS declaration and recompile, counter: %hu \n", 
     276                        counter); 
     277        exit(1); 
     278      } 
     279    } 
     280  qsort(ASStrTab, counter, 7, compASStr); 
     281  for(i=0;i<counter;i++) 
     282    { 
     283      sscanf(ASStrTab[i],"%hu\n", 
     284             &n0); 
     285      buffer = (unsigned short)n0; 
     286      ASTabPtr[i].as = *((unsigned short*)&buffer); 
     287      ASTabPtr[i].sampling = 0; 
     288    } 
     289  if( fclose(asFile) == 0) { 
     290    return (counter); 
     291  } else { 
     292    fprintf(stderr,"%s not closed, \n", filename); 
     293    exit(1); 
     294    return(counter); 
     295  } 
     296} 
     297 
  • trunk/src/get_conf.h

    r59 r60  
    2727 
    2828#include "renetcolParam.h" 
     29#include "as.h" 
    2930 
    3031struct PrefixV4{ 
     
    5758int getRegisteredRouters(char *, unsigned long *, unsigned long *); 
    5859unsigned short getPrefixV4(char *, struct PrefixV4 *); 
     60unsigned short getAS(char *, struct AS *); 
    5961 
    6062#endif /* GET_CONF_H */ 
  • trunk/src/renetcol.c

    r59 r60  
    167167#endif 
    168168 
     169#ifdef ASACC 
     170  /* get the AS list */ 
     171  if ( (shmForAgg->ASNb = getAS(AS_LIST, &(shmForAgg->ASTab[0][0]))) < 1){ 
     172    fprintf(stderr, "renetcol: Error in %s\n", AS_LIST); 
     173    exit(1); 
     174  } else { 
     175    fprintf(stderr, "%hu AS are readed from %s\n",  
     176            shmForAgg->ASNb, 
     177            AS_LIST); 
     178  } 
     179  if ( (shmForAgg->ASNb = getAS(AS_LIST, &(shmForAgg->ASTab[1][0]))) < 1){ 
     180    fprintf(stderr, "renetcol: Error in %s\n", AS_LIST); 
     181    exit(1); 
     182  } 
     183#endif 
     184 
    169185  /* the fork */ 
    170186  fprintf(stderr, "renetcol: I become a deamon, next messages via syslogd. By.\n"); 
     
    207223  myPtrs.currentV4Tab = shmForAgg->prefixV4Tab[shmForAgg->currentTable]; 
    208224  myPtrs.secondV4Tab = shmForAgg->prefixV4Tab[shmForAgg->secondTable]; 
     225#ifdef ASACC 
     226  myPtrs.asNb = shmForAgg->ASNb; 
     227  myPtrs.currentASTab = shmForAgg->ASTab[shmForAgg->currentTable]; 
     228  myPtrs.secondASTab = shmForAgg->ASTab[shmForAgg->secondTable]; 
     229#endif 
    209230#ifdef MATRIX 
    210231  myPtrs.matrixPOP = &(shmForAgg->matrixPOP[shmForAgg->currentTable][0][0]); 
     
    433454      } 
    434455      shmForAgg->readed = 1; 
     456#ifdef ASACC 
     457      myPtrs.currentASTab = shmForAgg->ASTab[shmForAgg->currentTable]; 
     458#endif 
    435459#ifdef MATRIX 
    436460      myPtrs.matrixPOP = &(shmForAgg->matrixPOP[shmForAgg->currentTable][0][0]); 
  • trunk/src/renetcol.h

    r59 r60  
    6161#include "pop.h" 
    6262#include "renetcolParam.h" 
     63#include "as.h" 
    6364 
    64 /* #include "mysql_mgmt.h" */ 
    65  
    66 struct SHMForAgg { 
     65struct SHMForAgg {/* if you change it, you must change renetcolAgg.h struct */ 
    6766  unsigned short currentTable; 
    6867  unsigned short secondTable; 
    6968  unsigned short readed; 
    7069  unsigned short v4PrefixNb; 
     70#ifdef ASACC 
     71  unsigned short ASNb; 
     72  struct AS ASTab[2][MAX_AS]; 
     73#endif 
    7174  struct PrefixV4 prefixV4Tab[2][MAX_IPV4_PREFIX]; 
    7275  struct PrefixV4 prefixV4SubnetTab[2][MAX_IPV4_SUBNET]; 
     
    7578#endif 
    7679  /*  struct PrefixV6 ; */ 
    77 }; /* if you change it, you must change renetcolAgg.h structure */ 
     80}; 
    7881 
    7982 
  • 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 */ 
  • trunk/src/renetcolAgg.h

    r59 r60  
    4242#include "pop.h" 
    4343#include "renetcolParam.h" 
     44#include "as.h" 
    4445 
    45 struct SHMForAgg { 
     46struct SHMForAgg { /* if you change it, you must change renetcol.h structure */ 
    4647  unsigned short currentTable; 
    4748  unsigned short secondTable; 
    4849  unsigned short readed; 
    4950  unsigned short v4PrefixNb; 
     51#ifdef ASACC 
     52  unsigned short ASNb; 
     53  struct AS ASTab[2][MAX_AS]; 
     54#endif 
    5055  struct PrefixV4 prefixV4Tab[2][MAX_IPV4_PREFIX]; 
    5156  struct PrefixV4 prefixV4SubnetTab[2][MAX_IPV4_SUBNET]; 
     
    5459#endif 
    5560  /*  struct PrefixV6 ; */ 
    56 }; /* if you change it, you must change renetcol.h structure */ 
     61};  
  • trunk/src/renetcolParam.h

    r59 r60  
    4444 * FILE with your routers IP address  
    4545*/  
    46 #define ROUTERS_LIST "/home/andreu/renetcol-0.0.12beta/src/routers.txt" 
     46#define ROUTERS_LIST "/home/andreu/renetcol-0.0.12beta/conf/routers.txt" 
    4747/*  
    4848 * FILE with your prefix/subnet  
    4949 */ 
    50 #define SUBNETS_LIST "/home/andreu/renetcol-0.0.12beta/src/IPv4_prefix.txt" 
     50#define SUBNETS_LIST "/home/andreu/renetcol-0.0.12beta/conf/IPv4_prefix.txt" 
    5151/*  
    52  * two constants, here a subnet is include in a prefix  
     52 * FILE with the list of AS with accounting 
     53 */ 
     54#define AS_LIST "/home/andreu/renetcol-0.0.12beta/conf/AS.txt" 
     55/*  
     56 * constants, here a subnet is include in a prefix  
    5357 */ 
    5458#define MAX_IPV4_PREFIX 4000 
    5559#define MAX_IPV4_SUBNET 1000 
     60#define MAX_AS 3 
    5661/*  
    5762 * FILE for the rules  
    5863 */ 
    59 #define RULES_FILE "/home/andreu/renetcol-0.0.12beta/src/rules.txt" 
     64#define RULES_FILE "/home/andreu/renetcol-0.0.12beta/conf/rules.txt" 
    6065/*  
    6166 * FILE with SNMP index of the interfaces  
     
    7277#define PREFIX_RRD_LOCATION "/mnt/data/RRD/RENATER/IPv4_SUBNET/" 
    7378#define MATRIX_RRD_LOCATION "/mnt/data/RRD/RENATER/MATRIX/" 
    74  
     79#define AS_RRD_LOCATION "/mnt/data/RRD/RENATER/AS/" 
    7580 
    7681/**************************************************************** 
     
    125130#define RRD_PARAM_MATRIX_13 "RRA:MAX:0.5:24:1550" 
    126131#define RRD_PARAM_MATRIX_14 "RRA:MAX:0.5:288:1594" 
     132#define RRD_PARAM_AS_0 "rrdcreate" 
     133#define RRD_PARAM_AS_1 "--start" 
     134#define RRD_PARAM_AS_2 "1106560200" 
     135#define RRD_PARAM_AS_3 "--step" 
     136#define RRD_PARAM_AS_4 "300" 
     137#define RRD_PARAM_AS_5 "DS:inFlows:GAUGE:600:U:U" 
     138#define RRD_PARAM_AS_6 "DS:outFlows:GAUGE:600:U:U" 
     139#define RRD_PARAM_AS_7 "DS:inBytes:GAUGE:600:U:U" 
     140#define RRD_PARAM_AS_8 "DS:outBytes:GAUGE:600:U:U" 
     141#define RRD_PARAM_AS_9 "DS:inPkts:GAUGE:600:U:U" 
     142#define RRD_PARAM_AS_10 "DS:outPkts:GAUGE:600:U:U" 
     143#define RRD_PARAM_AS_11 "RRA:AVERAGE:0.5:1:2100" 
     144#define RRD_PARAM_AS_12 "RRA:AVERAGE:0.5:24:1550" 
     145#define RRD_PARAM_AS_13 "RRA:AVERAGE:0.5:288:1594" 
     146#define RRD_PARAM_AS_14 "RRA:AVERAGE:0.5:2016:1040" 
     147#define RRD_PARAM_AS_15 "RRA:MAX:0.5:1:2100" 
     148#define RRD_PARAM_AS_16 "RRA:MAX:0.5:24:1550" 
     149#define RRD_PARAM_AS_17 "RRA:MAX:0.5:288:1594" 
    127150#define RRD_UPDATE_0 "rrdupdate" 
    128151#define RECEPT_PORT "52571" 
  • trunk/src/routers_mgmt.h

    r59 r60  
    7272  struct PrefixV4 *currentV4SubnetTab; 
    7373  struct PrefixV4 *secondV4SubnetTab; 
     74#ifdef ASACC 
     75  unsigned short asNb; 
     76  struct AS *currentASTab; 
     77  struct AS *secondASTab; 
     78#endif 
    7479#ifdef MATRIX 
    7580  struct POP *matrixPOP;