- Timestamp:
- 10/09/07 12:01:26 (15 years ago)
- Location:
- trunk/src
- Files:
-
- 8 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/dataFlowSet.c
r57 r58 153 153 field_size = (int) pftmp->fieldLength; 154 154 155 /* special case: check yes on all flows from one router (phantom field nb 0) */ 155 /* special case: check yes on all flows from one router */ 156 /* (phantom field nb 0) */ 156 157 /* FIXME : this code is repeated, perhaps past before */ 157 158 while ( ((RuleDefPtr)(*(myPtrs->rulesAddressPtr+j))) != NULL ) { … … 222 223 #ifdef IPV4AGG 223 224 if (pftmp->fieldType==10){ 224 agCache.idSnmp = *((unsigned short*)&buffer2); 225 agCache.inputSnmp = *((unsigned short*)&buffer2); 226 } 227 if (pftmp->fieldType==14){ 228 agCache.outputSnmp = *((unsigned short*)&buffer2); 225 229 } 226 230 #endif … … 472 476 #ifdef IPV4AGG 473 477 if (pftmp->fieldType==10){ 474 agCache.idSnmp = *((unsigned short*)&buffer2); 478 agCache.inputSnmp = *((unsigned short*)&buffer2); 479 } 480 if (pftmp->fieldType==14){ 481 agCache.outputSnmp = *((unsigned short*)&buffer2); 475 482 } 476 483 #endif … … 547 554 sizeof(struct PrefixV4), prefGlobalCmp); 548 555 if (res!=NULL){ 549 if ( myPtrs->routersID[res->routerNb] == agCache.routerAd ) { 556 /* if ( myPtrs->routersID[res->routerNb] == agCache.routerAd ) { */ 557 if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1 ) { 550 558 /* OUT ("traffic from the prefix/subnet") */ 551 559 res->bytesNbOUT += agCache.bytes; 552 560 res->pktsNbOUT += agCache.pkts; 553 561 (res->flowNbOUT)++; 562 if (res->sampling == 0) { 563 res->sampling = myPtrs->currentRouterPtr->sampled; 564 } else if (res->sampling != myPtrs->currentRouterPtr->sampled) { 565 syslog(LOG_INFO, 566 "2 sampling values for 1 subnet: %lu.%lu.%lu.%lu % from router %lu.%lu.%lu.%lu", 567 agCache.v4AdS>>24, 568 agCache.v4AdS<<8>>24, 569 agCache.v4AdS<<16>>24, 570 agCache.v4AdS<<24>>24, 571 (myPtrs->pcktPtr->ipH->srcAdd>>24), 572 (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), 573 (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), 574 (myPtrs->pcktPtr->ipH->srcAdd<<24>>24)); 575 } 554 576 /* inter-pop matrix Accounting */ 555 577 prefixKey.beginning = agCache.v4AdD>>(32-agCache.maskD)<<(32-agCache.maskD); 556 578 res2 = bsearch(&prefixKey, V4PTab, nbPV4, 557 579 sizeof(struct PrefixV4), prefGlobalCmp); 558 if (res2!=NULL){ 580 if (res2!=NULL){ 559 581 ((struct POP *)((myPtrs->matrixPOP) 560 582 +((res->routerNb)*ROUTER_INDEX_MAX) … … 588 610 res = bsearch(&prefixKey, V4PTab, nbPV4, 589 611 sizeof(struct PrefixV4), prefGlobalCmp); 590 if (res!=NULL){ 591 if ( myPtrs-> routersID[res->routerNb] == agCache.routerAd ) {592 /* IN ("traffic to the prefix ") */612 if (res!=NULL){ 613 if ( myPtrs->currentRouterPtr->snmpIndexList[agCache.inputSnmp] == 1 ) { 614 /* IN ("traffic to the prefix/subnet") */ 593 615 res->bytesNbIN += agCache.bytes; 594 616 res->pktsNbIN += agCache.pkts; 595 (res->flowNbIN)++; 596 } else { 617 (res->flowNbIN)++; 618 /* if ( myPtrs->routersID[res->routerNb] == agCache.routerAd ) { */ 619 /* IN ("traffic to the prefix") */ 620 /* res->bytesNbIN += agCache.bytes; */ 621 /* res->pktsNbIN += agCache.pkts; */ 622 /* (res->flowNbIN)++; */ 623 /* if (res->sampling == 0) { */ 624 /* res->sampling = myPtrs->currentRouterPtr->sampled; */ 625 /* } else if (res->sampling != myPtrs->currentRouterPtr->sampled) { */ 626 /* syslog(LOG_INFO, */ 627 /* "2 sampling values for 1 /: %lu.%lu.%lu.%lu % from router %lu.%lu.%lu.%lu", */ 628 /* agCache.v4AdS>>24, */ 629 /* agCache.v4AdS<<8>>24, */ 630 /* agCache.v4AdS<<16>>24, */ 631 /* agCache.v4AdS<<24>>24, */ 632 /* (myPtrs->pcktPtr->ipH->srcAdd>>24), */ 633 /* (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), */ 634 /* (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), */ 635 /* (myPtrs->pcktPtr->ipH->srcAdd<<24>>24)); */ 636 /* } */ 637 /* } else { */ 597 638 /* doublon or bad reference in prefix list */ 598 599 /* fprintf(stderr, "IN NC: %lu.%lu.%lu.%lu/%hu -> %lu.%lu.%lu.%lu/%hu R:%lu.%lu.%lu.%lu \n", */600 /* (agCache.v4AdS>>24), */601 /* (agCache.v4AdS<<8>>24), */602 /* (agCache.v4AdS<<16>>24), */603 /* (agCache.v4AdS<<24>>24), */604 /* (agCache.maskS), */605 /* (agCache.v4AdD>>24), */606 /* (agCache.v4AdD<<8>>24), */607 /* (agCache.v4AdD<<16>>24), */608 /* (agCache.v4AdD<<24>>24), */609 /* (agCache.maskD), */610 /* (myPtrs->pcktPtr->ipH->srcAdd>>24), */611 /* (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), */612 /* (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), */613 /* (myPtrs->pcktPtr->ipH->srcAdd<<24>>24) */614 /* ); */615 639 } 616 640 } else { … … 788 812 if (pftmp->fieldType==34){ 789 813 if ((*((unsigned long*)&buffer4)==1) 790 || (*((unsigned long*)&buffer4)==10) 814 || (*((unsigned long*)&buffer4)==10) 815 || (*((unsigned long*)&buffer4)==100) 791 816 || (*((unsigned long*)&buffer4)==1000)) { 792 817 if (myPtrs->currentRouterPtr->sampled != *((unsigned long*)&buffer4) ) { … … 795 820 myPtrs->currentRouterPtr->sampled); 796 821 #endif 822 syslog(LOG_INFO,"Sampling value change for router : %lu.%lu.%lu.%lu, old: %lu, new: %lu", 823 (myPtrs->pcktPtr->ipH->srcAdd>>24), 824 (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), 825 (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), 826 (myPtrs->pcktPtr->ipH->srcAdd<<24>>24), 827 myPtrs->currentRouterPtr->sampled, 828 *((unsigned long*)&buffer4) 829 ); 797 830 myPtrs->currentRouterPtr->sampled = *((unsigned long*)&buffer4); 798 for (i=0; i<nbPV4; i++) {799 /* we update the PrefixV4 structure with the sampled information */800 if ( myPtrs->currentRouterPtr->IpAddress == myPtrs->routersID[V4PTab[i].routerNb]) {801 V4PTab[i].sampling = *((unsigned long*)&buffer4);802 myPtrs->secondV4Tab[i].sampling = *((unsigned long*)&buffer4);803 }804 }805 }831 } 832 }else{ 833 syslog(LOG_INFO,"Sampling value not standard for router : %lu.%lu.%lu.%lu", 834 (myPtrs->pcktPtr->ipH->srcAdd>>24), 835 (myPtrs->pcktPtr->ipH->srcAdd<<8>>24), 836 (myPtrs->pcktPtr->ipH->srcAdd<<16>>24), 837 (myPtrs->pcktPtr->ipH->srcAdd<<24>>24) 838 ); 806 839 } 807 840 } -
trunk/src/dataFlowSet.h
r36 r58 75 75 unsigned char ipProt; 76 76 unsigned char sens; /* In/out field 61 */ 77 unsigned short idSnmp; 77 unsigned short inputSnmp; 78 unsigned short outputSnmp; 78 79 unsigned long bytes; 79 80 unsigned long pkts; -
trunk/src/renetcol.c
r57 r58 36 36 FILE *fIP; /* pointer on the IP output file */ 37 37 FILE *fMPLS; /* pointer on the MPLS output file */ 38 39 char *rulesFileName; /* file name of the rules (like acl) */40 char *configFileName; /* file name where routers list is */41 char *prefixV4FileName; /* IPv4 prefix list */42 38 43 39 struct sigaction myAction; /* handler for renetcolSender communication */ … … 101 97 key_t key; 102 98 int i,j; 103 104 if ( argc != 4) { 105 fprintf (stderr, 106 "%s: Usage: %s <routers file> <prefix IPv4 file> <rules file>\n exp: %s routers.txt IPv4_prefix.txt rules.txt\n", 107 argv[0], argv[0], argv[0]); 108 exit(1); 109 } 99 int k; 110 100 111 101 #ifdef IPV4AGG … … 114 104 115 105 openlog(argv[0], LOG_PID, LOG_USER); 106 107 initCache(); 108 /* GET the list of routers who are available to send NDE to the collector */ 109 if ( (routerNb = getRegisteredRouters(ROUTERS_LIST, 110 &sortedRouterList[0], 111 &indexedRouterList[0])) == -1) { 112 fprintf(stderr, 113 "ERROR in getRegisteredRouters from file %s\n", 114 ROUTERS_LIST); 115 exit(-1); 116 } 117 /* Create the list of routers */ 118 for (i=0; i<routerNb; i++){ 119 fprintf(stderr, "add router : %lu\n", sortedRouterList[i]); 120 routersListPtr = addRouter(routersListPtr, sortedRouterList[i]); 121 } 116 122 117 configFileName = (char *) malloc((strlen(argv[1])+1) * sizeof(char)); 118 strcpy (configFileName, argv[1]); 119 prefixV4FileName = (char *) malloc((strlen(argv[2])+1) * sizeof(char)); 120 strcpy (prefixV4FileName, argv[2]); 121 rulesFileName = (char *) malloc((strlen(argv[3])+1) * sizeof(char)); 122 strcpy (rulesFileName, argv[3]); 123 124 initCache(); 125 routerNb = getRegisteredRouters(configFileName, &sortedRouterList[0], 126 &indexedRouterList[0]); 123 /* Shared memory */ 127 124 key = 8765; 128 125 if ((shmid = shmget(key, SHMSIZE, IPC_CREAT | 0666)) < 0) { … … 135 132 } 136 133 137 if ( (shmForAgg->v4PrefixNb = getPrefixV4( prefixV4FileName, &(shmForAgg->prefixV4Tab[0][0]))) < 1){134 if ( (shmForAgg->v4PrefixNb = getPrefixV4(SUBNETS_LIST, &(shmForAgg->prefixV4Tab[0][0]))) < 1){ 138 135 fprintf(stderr, "renetcol: Error \n"); 139 136 exit(1); 140 137 } 141 if ( (shmForAgg->v4PrefixNb = getPrefixV4( prefixV4FileName, &(shmForAgg->prefixV4Tab[1][0]))) < 1){138 if ( (shmForAgg->v4PrefixNb = getPrefixV4(SUBNETS_LIST, &(shmForAgg->prefixV4Tab[1][0]))) < 1){ 142 139 fprintf(stderr, "renetcol: Error \n"); 143 140 exit(1); … … 148 145 shmForAgg->readed = 0; 149 146 147 /* get the rules */ 150 148 myPtrs.rulesListPtr = NULL; 151 /* myPtrs.rulesListPtr = getLightRules(myPtrs.rulesListPtr, rulesFileName); */ 152 myPtrs.rulesListPtr = getRules(myPtrs.rulesListPtr, rulesFileName); 149 myPtrs.rulesListPtr = getRules(myPtrs.rulesListPtr, RULES_FILE); 153 150 tmp = myPtrs.rulesListPtr; 154 151 for ( ; tmp->next; tmp=tmp->next) { … … 162 159 #endif 163 160 164 161 /* the fork */ 165 162 fprintf(stderr, "renetcol: I become a deamon, next messages via syslogd. By.\n"); 166 163 if (fork () != 0) … … 177 174 sigaction (SIGUSR1, &myAction, NULL); 178 175 179 /* Pointer on rules Table*/176 /* Cache for fast rules access */ 180 177 setCache(myPtrs.rulesListPtr); 181 178 myPtrs.rulesAddressPtr = (RuleDefPtr *)rulesAddress; 182 179 183 /* init IPC messages queue*/180 /* IPC messages queue init */ 184 181 myKey = createKey(argv[0]); 185 182 myQueue = createQueue(myKey); 186 183 sendMyPid(myQueue); 184 185 /* get SNMP index information */ 186 k = getSNMPIndexList(INTERFACES_TYPE_LIST, routersListPtr); 187 187 188 188 /* INIT THE CURRENTS VARIABLES*/ … … 199 199 myPtrs.matrixPOP = &(shmForAgg->matrixPOP[shmForAgg->currentTable][0][0]); 200 200 201 /* INIT MATRIX TABLES */ 201 202 for (i=0; i<ROUTER_INDEX_MAX; i++){ 202 203 for (j=0; j<ROUTER_INDEX_MAX; j++) { … … 210 211 } 211 212 213 /* Checkup */ 212 214 if (myPtrs.pcktPtr==NULL) { 213 215 fprintf(stderr, "ERROR in struct Datagram allocation\n"); … … 217 219 myPtrs.pcktPtr->udp_header = (UdpHeaderPtr) malloc(sizeof(struct UdpHeader)); 218 220 } 219 220 221 if (! (myPtrs.ptr_buffer = malloc(sockBufSize))) 221 222 { … … 304 305 } 305 306 myPtrs.rulesListPtr = NULL; 306 myPtrs.rulesListPtr = getRules(myPtrs.rulesListPtr, rulesFileName);307 myPtrs.rulesListPtr = getRules(myPtrs.rulesListPtr, RULES_FILE); 307 308 tmp = myPtrs.rulesListPtr; 308 309 for ( ; tmp; tmp=tmp->next) { … … 438 439 if ((myPtrs.currentRouterPtr=notExistRouter(routersListPtr, 439 440 myPtrs.pcktPtr->ipH->srcAdd))==NULL) { 440 routersListPtr = addRouter(routersListPtr,441 myPtrs.pcktPtr->ipH->srcAdd,442 (unsigned long) 0,443 shmForAgg->prefixV4Tab[shmForAgg->currentTable],444 (size_t) shmForAgg->v4PrefixNb,445 &myPtrs446 );447 441 myPtrs.currentRouterPtr = routersListPtr; 448 442 } -
trunk/src/renetcolAgg.c
r57 r58 27 27 * In this file, I use directly the C rrd librairy to create and update 28 28 * the rrd files which contain the statistique for each subnet. 29 * When your system (CPU+MEM+HD)is too fast and the number of your subnet too big29 * When your system is too fast and the number of your subnet too big 30 30 * (> 1024), the create and update process can be too fast and before the 31 31 * creation end the maximum number of files which can be opened for one process -
trunk/src/renetcolParam.h
r57 r58 32 32 #define RECEPTION_ADDRESS "" /* your collector address - syntax: 10.0.0.90 */ 33 33 #define RECEPTION_PORT 9999 /* your collector port to recept netflow export */ 34 #define ROUTER_INDEX_MAX 55 /* routers number + 1 */ 35 #define ROUTERS_LIST "/home/andreu/renetcol-0.0.12beta/src/routers.txt" /* FILE with your routers IP address */ 36 #define SUBNETS_LIST "/home/andreu/renetcol-0.0.12beta/src/IPv4_prefix.txt" /* FILE with your subnets */ 37 #define RULES_FILE "/home/andreu/renetcol-0.0.12beta/src/rules.txt" /* FILE for the rules */ 38 #define INTERFACES_TYPE_LIST "" /* FILE with SNMP index of the interfaces */ 39 /* tagged "C"ustomers or "B"ackbone */ 40 #define MAX_SNMP_INDEX 900 /* maximum SNMP index for interfaces */ 41 34 42 #define STEP 5 /* interval - in min */ 35 #define ROUTER_INDEX_MAX 55 /* routers number + 1 */36 43 #define FIELD_TYPE_NUMBER 89 37 44 #define MAX_RULES_PER_FIELD 10 /* maximum rules number for one field */ -
trunk/src/renetcolSender.c
r47 r58 31 31 long type; 32 32 RulesPtr rulesListPtr; 33 char *rulesFileName;34 33 char *keyId; 35 34 char *remoteHost; … … 78 77 if (strncmp("DELETE", buffer, 6)==0){ 79 78 /* DELETE ALL RULES FROM A REMOTE CLIENT */ 80 if (!(ruleFile = fopen( rulesFileName, "r"))) {81 syslog (LOG_ERR, "error during %s opening\n", rulesFileName);79 if (!(ruleFile = fopen(RULES_FILE, "r"))) { 80 syslog (LOG_ERR, "error during %s opening\n", RULES_FILE); 82 81 close(sock); 83 82 exit(1); … … 116 115 } 117 116 fclose(tmpFile); 118 if (remove( rulesFileName)!=0){117 if (remove(RULES_FILE)!=0){ 119 118 syslog(LOG_ERR, "rules.txt remove pb: %s", strerror(errno)); 120 119 close(sock); 121 120 return 1; 122 121 } 123 if (rename(FILE_TEMPO, rulesFileName)!=0){122 if (rename(FILE_TEMPO, RULES_FILE)!=0){ 124 123 syslog(LOG_ERR, "rename file pb: %s", strerror(errno)); 125 124 close(sock); … … 139 138 return 1; 140 139 } 141 if (!(ruleFile = fopen( rulesFileName, "a"))) {142 syslog (LOG_ERR, "error during %s opening", rulesFileName);140 if (!(ruleFile = fopen(RULES_FILE, "a"))) { 141 syslog (LOG_ERR, "error during %s opening", RULES_FILE); 143 142 close(sock); 144 143 return 1; … … 278 277 } 279 278 rulesListPtr = NULL; 280 rulesListPtr = getRules(rulesListPtr, rulesFileName);279 rulesListPtr = getRules(rulesListPtr, RULES_FILE); 281 280 tmp = rulesListPtr; 282 281 for ( ; tmp; tmp=tmp->next) { … … 300 299 pid_t renetcolPID = 0; 301 300 302 if ( argc != 4) {301 if ( argc != 3) { 303 302 fprintf (stderr, 304 "%s: Usage: %s <key> <msg type> <rules file>\n exp: %s renetcol 1 rules.txt\n",303 "%s: Usage: %s <key> <msg type>\n exp: %s renetcol 1 \n", 305 304 argv[0], argv[0], argv[0]); 306 305 exit(1); … … 314 313 keyId = (char *) malloc((strlen(argv[1])+1) * sizeof(char)); 315 314 strcpy (keyId, argv[1]); 316 rulesFileName = (char *) malloc((strlen(argv[3])+1) * sizeof(char));317 strcpy (rulesFileName, argv[3]);318 315 rulesListPtr = NULL; 319 rulesListPtr = getRules(rulesListPtr, rulesFileName);316 rulesListPtr = getRules(rulesListPtr, RULES_FILE); 320 317 /* we delete rules which are not type socket */ 321 318 tmp = rulesListPtr; -
trunk/src/routers_mgmt.c
r31 r58 33 33 i++; 34 34 if ( tmp->IpAddress == address ){ 35 /* fprintf (stderr, "ExistRouter %d parcours %lu.%lu.%lu.%lu\ \n", */36 /* i, */37 /* address>>24, */38 /* address<<8>>24, */39 /* address<<16>>24, */40 /* address<<24>>24 */41 /* ); */42 35 return tmp; 43 36 } 44 37 } 45 /* fprintf (stderr, "notExistRouter %lu.%lu.%lu.%lu\n", */46 /* address>>24, */47 /* address<<8>>24, */48 /* address<<16>>24, */49 /* address<<24>>24); */50 38 return NULL; 51 39 } 52 40 53 RouterPtr addRouter(RouterPtr routersList, unsigned long address, 54 unsigned long spled, struct PrefixV4 *V4PTab, 55 size_t nbPV4, struct MyPtrs *myPtrs) 56 { 57 int i = 0; 41 RouterPtr addRouter(RouterPtr routersList, unsigned long address) 42 { 58 43 RouterPtr tmp = (RouterPtr) malloc(sizeof(struct Router)); 59 44 if (tmp==NULL) { 60 /* FIXME : syslog here */ 61 fprintf(stderr, "ERROR in malloc in add_routers function\n"); 45 syslog(LOG_ERR, "ERROR in malloc in add_routers function\n"); 62 46 exit(1); 63 47 } else { … … 65 49 tmp->tplList = NULL; 66 50 tmp->tplOptList = NULL; 67 tmp->sampled = spled;51 tmp->sampled = 1; /* ==1 required in case of no sampling configured */ 68 52 tmp->next = routersList; 69 53 if (routersList!=NULL) { routersList->prev = tmp;} 70 54 tmp->prev = NULL; 71 /* initialization of the subnets which depend on this routers, aim: to create the rrd files */72 for (i=0; i<nbPV4; i++) {73 if ( tmp->IpAddress == myPtrs->routersID[V4PTab[i].routerNb]) {74 V4PTab[i].sampling = 1;75 myPtrs->secondV4Tab[i].sampling = 1;76 }77 }78 55 return tmp; 79 56 } 57 } 58 59 RouterPtr updateRouter(RouterPtr routersList, unsigned long address, 60 unsigned long spled) 61 { 62 RouterPtr tmp = NULL; 63 if ((tmp = notExistRouter(routersList, 64 address))==NULL) { 65 syslog(LOG_INFO,"Router Address not registered : %lu.%lu.%lu.%lu)", 66 (address>>24), 67 (address<<8>>24), 68 (address<<16>>24), 69 (address<<24>>24)); 70 return routersList; 71 } else { 72 fprintf(stderr, "\nSAMPLED VALUE: %lu\n", spled); 73 tmp->sampled = spled; 74 return tmp; 75 } 76 return NULL; 80 77 } 81 78 … … 151 148 return NULL; /* FIXME I don't known */ 152 149 } 150 151 int getSNMPIndexList(char *filename, RouterPtr routersListPtr) 152 { 153 FILE *indexFile = NULL; 154 char line[200]; 155 int cptLine = 0; 156 char tindex[5]; 157 char ttoken[2]; 158 char tid[2]; 159 char tad[16]; 160 int index = 0; 161 unsigned short n0, n1, n2, n3; 162 unsigned char buffer4[4]; 163 unsigned long ipAddress; 164 RouterPtr routerTmp = NULL; 165 166 if (!(indexFile = fopen(filename, "r"))) { 167 fprintf (stderr, "error during %s opening\n", filename); 168 exit(1); 169 } 170 while ( fgets(line, 200, indexFile) != 0) { 171 cptLine++; 172 if ( strspn(line, "R") == 1 ) { 173 if (sscanf(line, "%s %s\n", 174 ttoken, 175 tad) == 0) { 176 fprintf(stderr, "Error in file %s, line %d\n", 177 filename, cptLine); 178 exit(1); 179 } 180 if (sscanf(tad,"%hu.%hu.%hu.%hu\n",&n0,&n1,&n2,&n3) == 0){ 181 fprintf(stderr, "Address error in file %s, line %d\n", 182 filename, cptLine); 183 exit(1); 184 } 185 buffer4[3] = (unsigned char)n0; 186 buffer4[2] = (unsigned char)n1; 187 buffer4[1] = (unsigned char)n2; 188 buffer4[0] = (unsigned char)n3; 189 ipAddress = *((unsigned long*)(&buffer4)); 190 if ((routerTmp = notExistRouter(routersListPtr, 191 ipAddress))==NULL){ 192 fprintf(stderr, "Error in file %s, line %d : IP unknown : %lu\n", 193 filename, cptLine, ipAddress); 194 exit(1); 195 } 196 }else{ 197 if ( strspn(line, "I") == 1 ) { 198 if (sscanf(line, "%s %s %s\n", 199 ttoken, 200 tindex, 201 tid) == 0) { 202 fprintf(stderr, "Error in file %s, line %d\n", 203 filename, cptLine); 204 exit(1); 205 } 206 index = atoi(tindex); 207 if ( strcmp(tid, "B") == 0 ) { 208 routerTmp->snmpIndexList[index] = 0; 209 } else if ( strcmp(tid, "C") == 0 ) { 210 routerTmp->snmpIndexList[index] = 1; 211 } else { 212 fprintf(stderr, "Error in file %s, line %d : bad code B or C \n", 213 filename, cptLine); 214 exit(1); 215 } 216 } else { 217 fprintf(stderr, "Error in file %s, line %d : bad index line \n", 218 filename, cptLine); 219 exit(1); 220 } 221 } 222 } 223 return 1; 224 } -
trunk/src/routers_mgmt.h
r57 r58 32 32 #include <errno.h> 33 33 #include <sys/ioctl.h> 34 #include <syslog.h> 34 35 36 #include "renetcolParam.h" 35 37 #include "tplflset_mgmt.h" 36 38 #include "get_conf.h" … … 42 44 typedef struct Router * RouterPtr; 43 45 typedef struct Router { 44 unsigned long IpAddress; 45 TplFlowSetPtr tplList; 46 TplOptionPtr tplOptList; 47 unsigned long sampled; 46 unsigned long IpAddress; /* IP address used for NDE (often a loopback) */ 47 TplFlowSetPtr tplList; /* list of the template definition */ 48 TplOptionPtr tplOptList; /* list of the optional template definitions */ 49 unsigned long sampled; /* sampling value: (one for) 10, 100 or 1(full mode)*/ 50 unsigned short snmpIndexList[MAX_SNMP_INDEX]; /* 0:Backbone, 1:Customer */ 48 51 RouterPtr next; 49 52 RouterPtr prev; … … 67 70 68 71 RouterPtr notExistRouter(RouterPtr, unsigned long); 69 RouterPtr addRouter(RouterPtr, unsigned long, unsigned long, struct PrefixV4 *, size_t, struct MyPtrs *); 72 RouterPtr addRouter(RouterPtr, unsigned long); 73 RouterPtr updateRouter(RouterPtr, unsigned long, unsigned long); 70 74 TplFlowSetPtr newRouterTplList(); 71 75 TplFlowSetPtr deleteTplFlSet(TplFlowSetPtr); 72 76 TplOptionPtr newRouterTplOptList(); 73 77 TplOptionPtr deleteTplOption(TplOptionPtr); 78 int getSNMPIndexList(char *, RouterPtr); 74 79 75 80 /*int rm_routers(p_routers, unsigned long);