Show
Ignore:
Timestamp:
10/09/07 12:01:26 (15 years ago)
Author:
andreu
Message:

new aggregation method, new configuration files, corrections on the php script for graph generation.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/routers_mgmt.c

    r31 r58  
    3333    i++; 
    3434    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 /*             ); */ 
    4235      return tmp; 
    4336    } 
    4437  } 
    45 /*   fprintf (stderr, "notExistRouter %lu.%lu.%lu.%lu\n", */ 
    46 /*         address>>24, */ 
    47 /*         address<<8>>24, */ 
    48 /*         address<<16>>24, */ 
    49 /*         address<<24>>24); */ 
    5038  return NULL; 
    5139} 
    5240 
    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; 
     41RouterPtr addRouter(RouterPtr routersList, unsigned long address)  
     42{ 
    5843  RouterPtr tmp = (RouterPtr) malloc(sizeof(struct Router)); 
    5944  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"); 
    6246    exit(1); 
    6347  } else { 
     
    6549    tmp->tplList = NULL; 
    6650    tmp->tplOptList = NULL; 
    67     tmp->sampled = spled; 
     51    tmp->sampled = 1; /* ==1 required in case of no sampling configured */ 
    6852    tmp->next = routersList; 
    6953    if (routersList!=NULL) { routersList->prev = tmp;} 
    7054    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     } 
    7855    return tmp; 
    7956  } 
     57} 
     58 
     59RouterPtr 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; 
    8077} 
    8178 
     
    151148  return NULL; /* FIXME I don't known */ 
    152149} 
     150 
     151int 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}