- Timestamp:
- 05/19/07 11:57:44 (16 years ago)
- Location:
- trunk/src
- Files:
-
- 2 added
- 9 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/Makefile.am
r24 r36 5 5 routers_mgmt.h tplflset_mgmt.h headers_mgmt.h dataFlowSet.c \ 6 6 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 8 9 renetcolSender_SOURCES = renetcolSender.c renetcolSender.h msg_mgmt.h \ 9 10 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 11 12 renetcolMsgCtl_SOURCES = renetcolMsgCtl.c 12 renetcolAgg_SOURCES = renetcolAgg.c renetcolAgg.h rrdwrap.h rrdwrap.c 13 renetcolAgg_SOURCES = renetcolAgg.c renetcolAgg.h rrdwrap.h rrdwrap.c pop.h renetcolParam.h 13 14 BUILT_SOURCES = renetcol.o renetcolSender.o renetcolAgg.o 14 15 renetcol_LDADD = -ldl -lc_p -
trunk/src/dataFlowSet.c
r34 r36 60 60 unsigned char buffer4[4]; 61 61 RulesPtr tmpRuleList = myPtrs->rulesListPtr; 62 RulesPtr tmpRL = myPtrs->rulesListPtr; 62 63 msgType myMsg; 63 64 char *msgTextIndex; 65 char *msgToSend; 64 66 unsigned short tplMsgType = 11; 65 struct PrefixV4 prefixKey, *res ; /* for bsearch */67 struct PrefixV4 prefixKey, *res, *res2; /* for bsearch */ 66 68 struct AggCache agCache; 67 69 int bool = 0; /* in IPV4 Agg mode enabled, we need to now if it's an IPv4 */ … … 674 676 /* Aggregation mode must be enable in ./configure options */ 675 677 /* first we must know if the address belong to our prefix */ 678 myPtrs->nbFluxTT++; 676 679 #ifdef IPV4AGG 677 680 if ( (bool == 1) && (isMplsFlow == 0) ){ … … 681 684 if (res!=NULL){ 682 685 if ( myPtrs->routersID[res->routerNb] == agCache.routerAd ) { 686 myPtrs->nbFluxSR4++; 683 687 /* OUT ("traffic from the prefix/subnet") */ 684 688 res->bytesNbOUT += agCache.bytes; 685 689 res->pktsNbOUT += agCache.pkts; 686 690 (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 */ 687 722 } else { 688 723 /* doublon or bad reference in prefix list */ … … 725 760 /* - prefix not referenced but not allowed to be routed */ 726 761 /* - spoofing */ 762 myPtrs->nbFluxUK++; 727 763 #ifdef PRINTUNKNOWNSUBNET 728 764 fprintf(stderr, "%lu.%lu.%lu.%lu/%hu -> %lu.%lu.%lu.%lu/%hu (R:%lu.%lu.%lu.%lu) \n", … … 759 795 */ 760 796 tmpRuleList = myPtrs->rulesListPtr; 797 tmpRL = myPtrs->rulesListPtr; 761 798 while (tmpRuleList){ 762 /* RulesPtr tmpRuleList_for_to = myPtrs->rulesListPtr; */763 799 RuleDefPtr tmpRuleDefList = tmpRuleList->def; 764 800 unsigned short check = 1; 765 /* int s=0; */ 801 int s=0; 766 802 secondOffset = secondOldOffset; 767 803 while (tmpRuleDefList){ … … 773 809 /* msg building */ 774 810 secondPftmp = tmp->lastField; 775 msgTextIndex = mempcpy(mempcpy(mempcpy(myMsg.text,811 msgTextIndex = mempcpy(mempcpy(mempcpy(myMsg.text, 776 812 &tplMsgType, 777 813 sizeof(unsigned short) … … 795 831 myMsg.type = 1; 796 832 /* OLD transfert type */ 797 msgSend( myQueue, myMsg); 833 /* msgSend( myQueue, myMsg); */ 798 834 /* 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 } 808 841 /* FIXME : perhaps check "s" */ 809 842 noEnd = 1; -
trunk/src/dataFlowSet.h
r34 r36 32 32 #include "msg_mgmt.h" 33 33 #include "get_conf.h" 34 #include "pop.h" 34 35 #include "prefix_mgmt.h" 36 #include "renetcolParam.h" 35 37 36 38 #define TRESHOLD_TEMPLATE_ID 300 -
trunk/src/renetcol.c
r31 r36 26 26 #include "renetcol.h" 27 27 28 struct MyPtrs myPtrs; /* defined in dataflowset.h */28 struct MyPtrs myPtrs; /* defined in routers_mgmt.h */ 29 29 30 30 struct SHMForAgg *shmForAgg; … … 69 69 unsigned long indexedRouterList[ROUTER_INDEX_MAX]; 70 70 int 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 72 key_t myKey = 0; 73 int myQueue = 0; 77 74 78 75 /* Next structure used as cache in rules reading */ … … 109 106 int shmid; 110 107 key_t key; 108 int i,j; 111 109 112 110 if ( argc != 4) { … … 159 157 160 158 myPtrs.rulesListPtr = NULL; 161 myPtrs.rulesListPtr = getLightRules(myPtrs.rulesListPtr, rulesFileName); 159 /* myPtrs.rulesListPtr = getLightRules(myPtrs.rulesListPtr, rulesFileName); */ 160 myPtrs.rulesListPtr = getRules(myPtrs.rulesListPtr, rulesFileName); 162 161 tmp = myPtrs.rulesListPtr; 163 162 for ( ; tmp->next; tmp=tmp->next) { … … 166 165 } 167 166 } 167 tmp = NULL; 168 168 /* printRule(rulesListPtr); */ 169 169 /* exit(1); */ … … 204 204 myPtrs.routersID = &indexedRouterList; 205 205 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 208 226 if (myPtrs.pcktPtr==NULL) { 209 227 fprintf(stderr, "ERROR in struct Datagram allocation\n"); … … 300 318 } 301 319 myPtrs.rulesListPtr = NULL; 302 myPtrs.rulesListPtr = get LightRules(myPtrs.rulesListPtr, rulesFileName);320 myPtrs.rulesListPtr = getRules(myPtrs.rulesListPtr, rulesFileName); 303 321 tmp = myPtrs.rulesListPtr; 304 322 for ( ; tmp; tmp=tmp->next) { … … 379 397 int regRouter = 0; 380 398 time_t now = time((time_t *)NULL); 381 int iIP, iMPLS, i ;399 int iIP, iMPLS, i, z, x; 382 400 int loopNb = 0; 383 401 int gardeFou = 0; … … 404 422 } 405 423 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; 406 437 } 407 438 if (sigusr1Up == 1){ -
trunk/src/renetcol.h
r29 r36 59 59 #include "rules_mgmt.h" 60 60 #include "msg_mgmt.h" 61 #include "pop.h" 62 #include "renetcolParam.h" 61 63 62 64 /* #include "mysql_mgmt.h" */ 63 64 #define SOCKET_BUFFER_SIZE 150065 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 7072 #define FIELD_TYPE_NUMBER 8973 #define MAX_RULES_PER_FIELD 1074 75 #ifdef CRIHAN76 #define OUTPUT_IP "/tmp/ipflow"77 #define EXTENSION ".txt"78 #define OUTPUT_MPLS "/tmp/mplsflow"79 #define MAX_IP_OUTPUT_FILES 380 #define MAX_MPLS_OUTPUT_FILES 381 #define IP_TIME_THRESHOLD 60 /* in sec */82 #define MPLS_TIME_THRESHOLD 60 /* in sec */83 #endif /* CRIHAN */84 85 #define MAX_IP_FLOW 1000086 #define MAX_MPLS_FLOW 20087 88 #define SHMSIZE 3355443289 90 #define STEP 5 /* in min */91 65 92 66 struct SHMForAgg { … … 96 70 unsigned short v4PrefixNb; 97 71 struct PrefixV4 prefixV4Tab[2][MAX_IPV4_PREFIX]; 72 struct POP matrixPOP[2][ROUTER_INDEX_MAX][ROUTER_INDEX_MAX]; 98 73 /* struct PrefixV6 ; */ 99 }; 74 }; /* if you change it, you must change renetcolAgg.h structure */ 100 75 101 76 -
trunk/src/renetcolAgg.c
r31 r36 41 41 { 42 42 int shmid; 43 int i, j, index; 43 int i, j, k = 0; 44 int index = 1; 44 45 int rrd_update_er_ct = 0; 45 46 int rrd_update_ok_ct = 0; … … 53 54 static char name[2048]; 54 55 static char ipStr[24]; 56 static char indexStr[24]; 55 57 static char createstr[2048]; 56 58 char *opt[27]; … … 88 90 now = time((time_t *)NULL); 89 91 if (isFirstUpdate == 0) { 92 /* SUBNET ACCOUNTING */ 90 93 for (i=0; i<shmForAgg->v4PrefixNb; i++){ 91 94 /* HERE create or update RRD FILE */ … … 95 98 for (j=0; j<strlen(ipStr); j++) {ipStr[j] = '\0';} 96 99 for (j=0; j<strlen(buf); j++) {buf[j] = '\0';} 97 strcat(name, RRD_LOCATION);100 strcat(name, PREFIX_RRD_LOCATION); 98 101 sprintf(ipStr, "%lu_%lu_%lu_%lu_%hu_%lu", 99 102 shmForAgg->prefixV4Tab[index][i].beginning>>24, … … 107 110 strcat(name, RRD_EXTENSION); 108 111 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); 111 114 opt[1]= (char *) malloc((strlen(name) + 1) * sizeof(char)); 112 115 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); 163 166 optind = opterr = 0; 164 167 rrd_clear_error(); … … 230 233 shmForAgg->prefixV4Tab[index][i].fourthCoSOUT = 0; 231 234 } 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 */ 233 339 now2 = time((time_t *)NULL); 234 340 /* #ifdef DEBUGAGG */ … … 250 356 } else { 251 357 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 } 252 383 } 253 384 } -
trunk/src/renetcolAgg.h
r29 r36 41 41 #include "rrdwrap.h" 42 42 #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" 77 45 78 46 struct SHMForAgg { … … 82 50 unsigned short v4PrefixNb; 83 51 struct PrefixV4 prefixV4Tab[2][MAX_IPV4_PREFIX]; 52 struct POP matrixPOP[2][ROUTER_INDEX_MAX][ROUTER_INDEX_MAX]; 84 53 /* struct PrefixV6 ; */ 85 }; 54 }; /* if you change it, you must change renetcol.h structure */ -
trunk/src/renetcolSender.h
r35 r36 41 41 #include "rules_mgmt.h" 42 42 #include "remote_output.h" 43 #include "renetcolParam.h" 43 44 44 #define RECEPT_PORT "52571"45 #define VAR_SHARED_SIZE 446 #define FILE_TEMPO "/tmp/rules.tmp"47 48 45 typedef union semun 49 46 { -
trunk/src/routers_mgmt.h
r31 r36 67 67 struct PrefixV4 *currentV4Tab; 68 68 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; 69 75 }; 70 76