Changeset 36 for trunk/src

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

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

Location:
trunk/src
Files:
2 added
9 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/Makefile.am

    r24 r36  
    55        routers_mgmt.h tplflset_mgmt.h headers_mgmt.h dataFlowSet.c \ 
    66        dataFlowSet.h get_conf.c get_conf.h rules_mgmt.c rules_mgmt.h \ 
    7         remote_output.h remote_output.c prefix_mgmt.h prefix_mgmt.c 
     7        remote_output.h remote_output.c prefix_mgmt.h prefix_mgmt.c \ 
     8        pop.h renetcolParam.h 
    89renetcolSender_SOURCES = renetcolSender.c renetcolSender.h msg_mgmt.h \ 
    910        msg_mgmt.c rules_mgmt.c rules_mgmt.h remote_output.h \ 
    10         remote_output.c fields_mgmt.h fields_mgmt.c 
     11        remote_output.c fields_mgmt.h fields_mgmt.c pop.h renetcolParam.h 
    1112renetcolMsgCtl_SOURCES = renetcolMsgCtl.c 
    12 renetcolAgg_SOURCES = renetcolAgg.c renetcolAgg.h rrdwrap.h rrdwrap.c 
     13renetcolAgg_SOURCES = renetcolAgg.c renetcolAgg.h rrdwrap.h rrdwrap.c pop.h renetcolParam.h 
    1314BUILT_SOURCES = renetcol.o renetcolSender.o renetcolAgg.o 
    1415renetcol_LDADD = -ldl -lc_p 
  • trunk/src/dataFlowSet.c

    r34 r36  
    6060  unsigned char buffer4[4]; 
    6161  RulesPtr tmpRuleList = myPtrs->rulesListPtr; 
     62  RulesPtr tmpRL = myPtrs->rulesListPtr; 
    6263  msgType myMsg; 
    6364  char *msgTextIndex; 
     65  char *msgToSend; 
    6466  unsigned short tplMsgType = 11; 
    65   struct PrefixV4 prefixKey, *res; /* for bsearch */ 
     67  struct PrefixV4 prefixKey, *res, *res2; /* for bsearch */ 
    6668  struct AggCache agCache; 
    6769  int bool = 0; /* in IPV4 Agg mode enabled, we need to now if it's an IPv4 */ 
     
    674676        /* Aggregation mode must be enable in ./configure options   */ 
    675677        /* first we must know if the address belong to our prefix   */ 
     678        myPtrs->nbFluxTT++; 
    676679#ifdef IPV4AGG 
    677680        if ( (bool == 1) && (isMplsFlow == 0) ){ 
     
    681684          if (res!=NULL){ 
    682685            if ( myPtrs->routersID[res->routerNb] == agCache.routerAd  ) { 
     686              myPtrs->nbFluxSR4++; 
    683687              /* OUT ("traffic from the prefix/subnet")  */ 
    684688              res->bytesNbOUT += agCache.bytes; 
    685689              res->pktsNbOUT += agCache.pkts; 
    686690              (res->flowNbOUT)++; 
     691              /* inter-pop matrix Accounting */ 
     692              prefixKey.beginning = agCache.v4AdD>>(32-agCache.maskD)<<(32-agCache.maskD); 
     693              res2 = bsearch(&prefixKey, V4PTab, nbPV4,  
     694                            sizeof(struct PrefixV4), prefGlobalCmp); 
     695              if (res2!=NULL){ 
     696                myPtrs->nbFluxIR4++; 
     697                ((struct POP *)((myPtrs->matrixPOP) 
     698                                +((res->routerNb)*ROUTER_INDEX_MAX) 
     699                                +((res2->routerNb))))->pktsNb += agCache.pkts; 
     700                ((struct POP *)((myPtrs->matrixPOP) 
     701                                +((res->routerNb)*ROUTER_INDEX_MAX) 
     702                                +((res2->routerNb))))->bytesNb += agCache.bytes;  
     703                ((struct POP *)((myPtrs->matrixPOP) 
     704                                +((res->routerNb)*ROUTER_INDEX_MAX) 
     705                                +((res2->routerNb))))->flowNb++;  
     706              } else { 
     707                myPtrs->nbFluxSE++; 
     708                ( 
     709                 ((struct POP *)(myPtrs->matrixPOP) 
     710                 +((res->routerNb)*ROUTER_INDEX_MAX) 
     711                 +((ROUTER_INDEX_MAX-1))))->pktsNb += agCache.pkts;  
     712                ( 
     713                 ((struct POP *)(myPtrs->matrixPOP) 
     714                 +((res->routerNb)*ROUTER_INDEX_MAX) 
     715                 +((ROUTER_INDEX_MAX-1))))->bytesNb += agCache.bytes;  
     716                ( 
     717                 ((struct POP *)(myPtrs->matrixPOP) 
     718                 +((res->routerNb)*ROUTER_INDEX_MAX) 
     719                 +((ROUTER_INDEX_MAX-1))))->flowNb++;  
     720              } 
     721              /* end interpop matrix accounting */ 
    687722            } else { 
    688723              /* doublon or bad reference in prefix list */ 
     
    725760              /*     -  prefix not referenced but not allowed to be routed */ 
    726761              /*     -  spoofing                                           */ 
     762              myPtrs->nbFluxUK++; 
    727763#ifdef PRINTUNKNOWNSUBNET  
    728764              fprintf(stderr, "%lu.%lu.%lu.%lu/%hu -> %lu.%lu.%lu.%lu/%hu (R:%lu.%lu.%lu.%lu) \n", 
     
    759795         */ 
    760796        tmpRuleList = myPtrs->rulesListPtr; 
     797        tmpRL = myPtrs->rulesListPtr; 
    761798        while (tmpRuleList){ 
    762 /*        RulesPtr tmpRuleList_for_to = myPtrs->rulesListPtr; */ 
    763799          RuleDefPtr tmpRuleDefList = tmpRuleList->def; 
    764800          unsigned short check = 1; 
    765 /*        int s=0; */ 
     801          int s=0; 
    766802          secondOffset = secondOldOffset; 
    767803          while (tmpRuleDefList){ 
     
    773809            /* msg building */ 
    774810            secondPftmp = tmp->lastField; 
    775             msgTextIndex = mempcpy(mempcpy(mempcpy(myMsg.text,  
     811            msgTextIndex = mempcpy(mempcpy(mempcpy(myMsg.text,   
    776812                                                   &tplMsgType,  
    777813                                                   sizeof(unsigned short)  
     
    795831            myMsg.type = 1; 
    796832            /* OLD transfert type */ 
    797             msgSend( myQueue, myMsg); 
     833/*          msgSend( myQueue, myMsg); */ 
    798834            /* NEW transfert type */ 
    799 /*          for ( ; tmpRuleList_for_to; tmpRuleList_for_to=tmpRuleList_for_to->next){ */ 
    800 /*            fprintf(stderr, "?\n"); */ 
    801 /*            if (tmpRuleList_for_to->id == tmpRuleList->id){ */ 
    802 /*              fprintf(stderr, "y\n"); */ 
    803 /*              s = sendMessage(tmpRuleList_for_to->host->sockId, &(myMsg.text), sizeof(myMsg.text), */ 
    804 /*                              tmpRuleList_for_to->host->hostAddressPtr); */ 
    805 /*              fprintf(stderr, "o\n"); */ 
    806 /*            } */ 
    807 /*          } */ 
     835            for ( ; tmpRL; tmpRL=tmpRL->next){ 
     836              if (tmpRL->id == tmpRuleList->id){ 
     837                s = sendMessage(tmpRL->host->sockId, myMsg.text, sizeof(myMsg.text), 
     838                                tmpRL->host->hostAddressPtr); 
     839              } 
     840            } 
    808841            /* FIXME : perhaps check "s" */ 
    809842            noEnd = 1; 
  • trunk/src/dataFlowSet.h

    r34 r36  
    3232#include "msg_mgmt.h" 
    3333#include "get_conf.h" 
     34#include "pop.h" 
    3435#include "prefix_mgmt.h" 
     36#include "renetcolParam.h" 
    3537 
    3638#define TRESHOLD_TEMPLATE_ID 300 
  • trunk/src/renetcol.c

    r31 r36  
    2626#include "renetcol.h" 
    2727 
    28 struct MyPtrs myPtrs; /* defined in dataflowset.h */ 
     28struct MyPtrs myPtrs; /* defined in routers_mgmt.h */ 
    2929 
    3030struct SHMForAgg *shmForAgg; 
     
    6969unsigned long indexedRouterList[ROUTER_INDEX_MAX]; 
    7070int routerNb = 0;                                  /* routers number */ 
    71 /* unsigned short v4PrefixNb = 0;                    IPv4 prefix number */  
    72 /* struct PrefixV4 prefixV4Tab[2][MAX_IPV4_PREFIX];  IPv4 prefix structure */ 
    73  
    74  
    75 key_t myKey = 0; /* FIXME to delete in futur */ 
    76 int myQueue = 0; /* FIXME to delete in futur */ 
     71 
     72key_t myKey = 0;  
     73int myQueue = 0; 
    7774 
    7875/* Next structure used as cache in rules reading */ 
     
    109106  int shmid; 
    110107  key_t key; 
     108  int i,j; 
    111109   
    112110  if ( argc != 4) { 
     
    159157 
    160158  myPtrs.rulesListPtr = NULL; 
    161   myPtrs.rulesListPtr = getLightRules(myPtrs.rulesListPtr, rulesFileName); 
     159/*   myPtrs.rulesListPtr = getLightRules(myPtrs.rulesListPtr, rulesFileName); */ 
     160  myPtrs.rulesListPtr = getRules(myPtrs.rulesListPtr, rulesFileName); 
    162161  tmp = myPtrs.rulesListPtr; 
    163162  for ( ; tmp->next; tmp=tmp->next) { 
     
    166165    } 
    167166  } 
     167  tmp = NULL; 
    168168/*   printRule(rulesListPtr); */ 
    169169/*   exit(1); */ 
     
    204204  myPtrs.routersID = &indexedRouterList; 
    205205  myPtrs.currentV4Tab = shmForAgg->prefixV4Tab[shmForAgg->currentTable]; 
    206   myPtrs.secondV4Tab = shmForAgg->prefixV4Tab[shmForAgg->secondTable];   
    207   
     206  myPtrs.secondV4Tab = shmForAgg->prefixV4Tab[shmForAgg->secondTable]; 
     207  myPtrs.matrixPOP = &(shmForAgg->matrixPOP[shmForAgg->currentTable][0][0]); 
     208 
     209  myPtrs.nbFluxSR4 =0; 
     210  myPtrs.nbFluxSE =0; 
     211  myPtrs.nbFluxIR4 =0; 
     212  myPtrs.nbFluxUK = 0; 
     213  myPtrs.nbFluxTT = 0; 
     214 
     215  for (i=0; i<ROUTER_INDEX_MAX; i++){ 
     216    for (j=0; j<ROUTER_INDEX_MAX; j++) { 
     217      shmForAgg->matrixPOP[0][i][j].bytesNb = 0; 
     218      shmForAgg->matrixPOP[0][i][j].pktsNb = 0; 
     219      shmForAgg->matrixPOP[0][i][j].flowNb = 0; 
     220      shmForAgg->matrixPOP[1][i][j].bytesNb = 0; 
     221      shmForAgg->matrixPOP[1][i][j].pktsNb = 0; 
     222      shmForAgg->matrixPOP[1][i][j].flowNb = 0; 
     223    } 
     224  } 
     225 
    208226  if (myPtrs.pcktPtr==NULL) { 
    209227    fprintf(stderr, "ERROR in struct Datagram allocation\n"); 
     
    300318  } 
    301319  myPtrs.rulesListPtr = NULL; 
    302   myPtrs.rulesListPtr = getLightRules(myPtrs.rulesListPtr, rulesFileName); 
     320  myPtrs.rulesListPtr = getRules(myPtrs.rulesListPtr, rulesFileName); 
    303321  tmp = myPtrs.rulesListPtr; 
    304322  for ( ; tmp; tmp=tmp->next) { 
     
    379397  int regRouter = 0; 
    380398  time_t now = time((time_t *)NULL); 
    381   int iIP, iMPLS, i; 
     399  int iIP, iMPLS, i, z, x; 
    382400  int loopNb = 0; 
    383401  int gardeFou = 0; 
     
    404422      } 
    405423      shmForAgg->readed = 1; 
     424      myPtrs.matrixPOP = &(shmForAgg->matrixPOP[shmForAgg->currentTable][0][0]); 
     425      fprintf(stderr,"\n\nComptage FLUX:\n SR4: %llu\n SE: %llu\n IR4: %llu\n UK: %llu\n TT: %llu\n", 
     426              myPtrs.nbFluxSR4, 
     427              myPtrs.nbFluxSE, 
     428              myPtrs.nbFluxIR4, 
     429              myPtrs.nbFluxUK, 
     430              myPtrs.nbFluxTT 
     431              ); 
     432      myPtrs.nbFluxSR4 =0; 
     433      myPtrs.nbFluxSE =0; 
     434      myPtrs.nbFluxIR4 =0; 
     435      myPtrs.nbFluxUK = 0; 
     436      myPtrs.nbFluxTT = 0; 
    406437    } 
    407438    if (sigusr1Up == 1){ 
  • trunk/src/renetcol.h

    r29 r36  
    5959#include "rules_mgmt.h" 
    6060#include "msg_mgmt.h" 
     61#include "pop.h" 
     62#include "renetcolParam.h" 
    6163 
    6264/* #include "mysql_mgmt.h" */ 
    63  
    64 #define SOCKET_BUFFER_SIZE 1500 
    65  
    66 #define RECEPTION_ADDRESS "" /* your collector address like 10.0.0.90 */ 
    67 #define RECEPTION_PORT 9999 /* your collector port to recept netflow export */ 
    68  
    69 #define TIME_OUT 300 /* MAJSCH */ 
    70  
    71 #define ROUTER_INDEX_MAX 70 
    72 #define FIELD_TYPE_NUMBER 89 
    73 #define MAX_RULES_PER_FIELD 10 
    74  
    75 #ifdef CRIHAN 
    76 #define OUTPUT_IP "/tmp/ipflow" 
    77 #define EXTENSION ".txt"  
    78 #define OUTPUT_MPLS "/tmp/mplsflow" 
    79 #define MAX_IP_OUTPUT_FILES 3 
    80 #define MAX_MPLS_OUTPUT_FILES 3 
    81 #define IP_TIME_THRESHOLD 60 /* in sec */ 
    82 #define MPLS_TIME_THRESHOLD 60 /* in sec */ 
    83 #endif /* CRIHAN */ 
    84  
    85 #define MAX_IP_FLOW 10000 
    86 #define MAX_MPLS_FLOW 200 
    87  
    88 #define SHMSIZE 33554432 
    89  
    90 #define STEP 5  /* in min */ 
    9165 
    9266struct SHMForAgg { 
     
    9670  unsigned short v4PrefixNb; 
    9771  struct PrefixV4 prefixV4Tab[2][MAX_IPV4_PREFIX]; 
     72  struct POP matrixPOP[2][ROUTER_INDEX_MAX][ROUTER_INDEX_MAX]; 
    9873  /*  struct PrefixV6 ; */ 
    99 }; 
     74}; /* if you change it, you must change renetcolAgg.h structure */ 
    10075 
    10176 
  • 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    }  
  • trunk/src/renetcolAgg.h

    r29 r36  
    4141#include "rrdwrap.h" 
    4242#include "dataFlowSet.h" 
    43  
    44 #define RRD_LOCATION "/home/maintenance/RRD/" 
    45 #define RRD_EXTENSION ".rrd" 
    46  
    47 #define RRD_PARAM_0 "rrdcreate" 
    48 #define RRD_PARAM_1 "--start" 
    49 #define RRD_PARAM_2 "1106560200" 
    50 #define RRD_PARAM_3 "--step" 
    51 #define RRD_PARAM_4 "300" 
    52 #define RRD_PARAM_5 "DS:inFlows:GAUGE:600:U:U" 
    53 #define RRD_PARAM_6 "DS:outFlows:GAUGE:600:U:U" 
    54 #define RRD_PARAM_7 "DS:inBytes:GAUGE:600:U:U" 
    55 #define RRD_PARAM_8 "DS:outBytes:GAUGE:600:U:U" 
    56 #define RRD_PARAM_9 "DS:inPkts:GAUGE:600:U:U" 
    57 #define RRD_PARAM_10 "DS:outPkts:GAUGE:600:U:U" 
    58 #define RRD_PARAM_11 "DS:inFirstCoS:GAUGE:600:U:U" 
    59 #define RRD_PARAM_12 "DS:outFirstCoS:GAUGE:600:U:U" 
    60 #define RRD_PARAM_13 "DS:inSecondCoS:GAUGE:600:U:U" 
    61 #define RRD_PARAM_14 "DS:outSecondCoS:GAUGE:600:U:U" 
    62 #define RRD_PARAM_15 "DS:inThirdCoS:GAUGE:600:U:U" 
    63 #define RRD_PARAM_16 "DS:outThirdCoS:GAUGE:600:U:U" 
    64 #define RRD_PARAM_17 "DS:inFourthCoS:GAUGE:600:U:U" 
    65 #define RRD_PARAM_18 "DS:outFourthCoS:GAUGE:600:U:U" 
    66 #define RRD_PARAM_19 "RRA:AVERAGE:0.5:1:2100" 
    67 #define RRD_PARAM_20 "RRA:AVERAGE:0.5:24:1550" 
    68 #define RRD_PARAM_21 "RRA:AVERAGE:0.5:288:1594" 
    69 #define RRD_PARAM_22 "RRA:AVERAGE:0.5:2016:1040" 
    70 #define RRD_PARAM_23 "RRA:MAX:0.5:1:2100" 
    71 #define RRD_PARAM_24 "RRA:MAX:0.5:24:1550" 
    72 #define RRD_PARAM_25 "RRA:MAX:0.5:288:1594" 
    73  
    74 #define RRD_UPDATE_0 "rrdupdate" 
    75  
    76 #define SHMSIZE 33554432 /* FIXME get from another file ? */ 
     43#include "pop.h" 
     44#include "renetcolParam.h" 
    7745 
    7846struct SHMForAgg { 
     
    8250  unsigned short v4PrefixNb; 
    8351  struct PrefixV4 prefixV4Tab[2][MAX_IPV4_PREFIX]; 
     52  struct POP matrixPOP[2][ROUTER_INDEX_MAX][ROUTER_INDEX_MAX]; 
    8453  /*  struct PrefixV6 ; */ 
    85 }; 
     54}; /* if you change it, you must change renetcol.h structure */ 
  • trunk/src/renetcolSender.h

    r35 r36  
    4141#include "rules_mgmt.h" 
    4242#include "remote_output.h" 
     43#include "renetcolParam.h" 
    4344 
    44 #define RECEPT_PORT "52571" 
    45 #define VAR_SHARED_SIZE 4 
    46 #define FILE_TEMPO "/tmp/rules.tmp" 
    47           
    4845typedef union semun 
    4946{ 
  • trunk/src/routers_mgmt.h

    r31 r36  
    6767  struct PrefixV4 *currentV4Tab; 
    6868  struct PrefixV4 *secondV4Tab; 
     69  struct POP *matrixPOP; 
     70  unsigned long long nbFluxSR4; 
     71  unsigned long long nbFluxSE; 
     72  unsigned long long nbFluxIR4; 
     73  unsigned long long nbFluxUK; 
     74  unsigned long long nbFluxTT; 
    6975}; 
    7076