Changeset 17

Show
Ignore:
Timestamp:
05/22/06 16:25:24 (17 years ago)
Author:
andreu
Message:

*** empty log message ***

Location:
trunk/src
Files:
2 added
7 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/dataFlowSet.c

    r16 r17  
    6363  struct PrefixV4 prefixKey, *res; /* for bsearch */ 
    6464  struct AggCache agCache; 
     65  int bool = 0; 
    6566 
    6667  buffer2[1] = *(buf+(*offV9));(*offV9)++; 
     
    8687      return (data_length+shift); 
    8788    } 
     89    /* aggreg */ 
     90    agCache.routerAd = pcktPtr->ipH->srcAdd; 
     91    /* end aggreg */ 
    8892    pftmp = tmp->lastField; 
    8993    secondPftmp = tmp->lastField;     
     
    118122            case 1: 
    119123              buffer1 = *(buf+(*offV9)); (*offV9)++; 
     124              /* rule check */ 
    120125              if (((RuleDefPtr)(*(rulesCache+pos)))->value->stor.cvalue  
    121126                  == *((unsigned char*)&buffer1)) { 
    122127                ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 
    123128              } 
     129              /* end rule check */ 
    124130              /* aggregation */ 
    125  
     131              if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ 
     132                agCache.maskS = *((unsigned char*)&buffer1); 
     133              } 
     134              if ((pftmp->fieldType==13)||(pftmp->fieldType==30)){ 
     135                agCache.maskD = *((unsigned char*)&buffer1); 
     136              } 
     137              if (pftmp->fieldType==60){ 
     138                agCache.ipProt = *((unsigned char*)&buffer1); 
     139              } 
     140              if (pftmp->fieldType==4){ 
     141                agCache.tProt = *((unsigned char*)&buffer1); 
     142              } 
     143              if (pftmp->fieldType==61){ 
     144                agCache.sens = *((unsigned char*)&buffer1); 
     145              } 
     146              if (pftmp->fieldType==5){ 
     147                agCache.dscp = *((unsigned char*)&buffer1); 
     148              } 
    126149              /* end aggregation */ 
    127150              break; 
     
    133156                ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 
    134157              /* aggregation */ 
    135  
     158              if (pftmp->fieldType==10){ 
     159                agCache.idSnmp = *((unsigned short*)&buffer2); 
     160              } 
     161              /* end aggregation */ 
     162              break; 
     163            case 3: 
     164              buffer4[3]= 0; 
     165              buffer4[2]= *(buf+(*offV9)); (*offV9)++; 
     166              buffer4[1]= *(buf+(*offV9)); (*offV9)++; 
     167              buffer4[0]= *(buf+(*offV9)); (*offV9)++; 
     168              if (((RuleDefPtr)(*(rulesCache+pos)))->value->stor.lvalue  
     169                  == *((unsigned long*)&buffer4)) 
     170                ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 
     171              /* aggregation */ 
    136172              /* end aggregation */ 
    137173              break; 
     
    148184                    ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 
    149185                  } 
    150                 prefixKey.beginning = *((unsigned long*)&buffer4); 
    151                 res = bsearch(&prefixKey, V4PTab, nbPV4,  
    152                               sizeof(struct PrefixV4), prefCmp); 
    153                 if (res == NULL) 
    154                   fprintf(stderr,"!"); 
    155                 else 
    156                   fprintf(stderr,"."); 
    157186              }        
    158187              /* aggregation */ 
    159  
     188              if ((pftmp->fieldType==8)){ 
     189                agCache.v4AdS = *((unsigned long*)&buffer4); 
     190              } 
     191              if ((pftmp->fieldType==12)){ 
     192                agCache.v4AdD = *((unsigned long*)&buffer4); 
     193              } 
     194              if (pftmp->fieldType==1){ 
     195                agCache.bytes = *((unsigned long*)&buffer4); 
     196              } 
     197              if (pftmp->fieldType==2){ 
     198                agCache.pkts = *((unsigned long*)&buffer4); 
     199              } 
    160200              /* end aggregation */ 
    161201              break; 
     
    311351          buffer1 = *(buf+(*offV9)); (*offV9)++; 
    312352          /* aggregation */ 
    313            
     353          if ((pftmp->fieldType==9)||(pftmp->fieldType==29)){ 
     354            agCache.maskS = *((unsigned char*)&buffer1); 
     355          } 
     356          if ((pftmp->fieldType==13)||(pftmp->fieldType==30)){ 
     357            agCache.maskD = *((unsigned char*)&buffer1); 
     358          } 
     359          if (pftmp->fieldType==60){ 
     360            agCache.ipProt = *((unsigned char*)&buffer1); 
     361          } 
     362          if (pftmp->fieldType==4){ 
     363            agCache.tProt = *((unsigned char*)&buffer1); 
     364          } 
     365          if (pftmp->fieldType==61){ 
     366            agCache.sens = *((unsigned char*)&buffer1); 
     367          } 
     368          if (pftmp->fieldType==5){ 
     369            agCache.dscp = *((unsigned char*)&buffer1); 
     370          }        
    314371          /* end aggregation */ 
    315372          break; 
     
    318375          buffer2[0]= *(buf+(*offV9)); (*offV9)++; 
    319376          /* aggregation */ 
    320            
     377          if (pftmp->fieldType==10){ 
     378            agCache.idSnmp = *((unsigned short*)&buffer2); 
     379          }        
     380          /* end aggregation */ 
     381          break; 
     382        case 3: 
     383          buffer4[3]= 0; 
     384          buffer4[2]= *(buf+(*offV9)); (*offV9)++; 
     385          buffer4[1]= *(buf+(*offV9)); (*offV9)++; 
     386          buffer4[0]= *(buf+(*offV9)); (*offV9)++; 
     387/*        fprintf(stderr,"L: %lu\n",(*((unsigned long*)&buffer4))); */ 
     388/*        fprintf(stderr,"L>>4: %lu\n",(*((unsigned long*)&buffer4))>>4); */ 
     389/*        fprintf(stderr,"L>>1<<29>>29: %lu\n",(*((unsigned long*)&buffer4))>>1<<29>>29); */ 
     390/*        fprintf(stderr,"L<<31>>31: %lu\n",(*((unsigned long*)&buffer4))<<31>>31); */ 
     391          /* aggregation */ 
    321392          /* end aggregation */ 
    322393          break; 
     
    327398          buffer4[0]= *(buf+(*offV9)); (*offV9)++; 
    328399          /* aggregation */ 
    329            
     400          if ((pftmp->fieldType==8)){ 
     401            bool = 1; 
     402            agCache.v4AdS = *((unsigned long*)&buffer4); 
     403          } else if ((pftmp->fieldType==12)){ 
     404            agCache.v4AdD = *((unsigned long*)&buffer4); 
     405          } else if (pftmp->fieldType==1){ 
     406            agCache.bytes = *((unsigned long*)&buffer4); 
     407          } else if (pftmp->fieldType==2){ 
     408            agCache.pkts = *((unsigned long*)&buffer4); 
     409          } 
    330410          /* end aggregation */ 
    331411          break; 
     
    353433         */ 
    354434        /* put aggregation cache information to tables */ 
    355  
     435        if (bool == 1){ 
     436          prefixKey.beginning = agCache.v4AdS>>(32-agCache.maskS)<<(32-agCache.maskS); 
     437          res = bsearch(&prefixKey, V4PTab, nbPV4,  
     438                        sizeof(struct PrefixV4), prefCmp); 
     439        } 
     440        bool = 0;     
    356441        /* end put */ 
    357442        /*  
  • trunk/src/dataFlowSet.h

    r16 r17  
    3939struct AggCache { 
    4040  unsigned short mode; 
    41   unsigned long v4Ad; 
    42   uint32_t tabAdd6[4]; 
    43   unsigned short mask; 
    44   unsigned short sens; /* In/out */ 
     41  unsigned char dscp; 
     42  unsigned char maskS; 
     43  unsigned char maskD; 
     44  unsigned char tProt; 
     45  unsigned char ipProt; 
     46  unsigned char sens; /* In/out */ 
     47  unsigned short idSnmp; 
    4548  unsigned long bytes; 
    4649  unsigned long pkts; 
    47   unsigned short tProt; 
    48   unsigned short netProt; 
    4950  unsigned long routerAd; 
    50   unsigned short idSnmp; 
    51   unsigned short dscp; 
     51  unsigned long v4AdS; 
     52  unsigned long v4AdD; 
     53  uint32_t tabAdd6S[4]; 
     54  uint32_t tabAdd6D[4]; 
    5255  /*  unsigned short mplsLabel1; 
    53       unsigned long intAdd; */ 
     56      unsigned long ifAdd; */ 
    5457}; 
    5558 
  • trunk/src/get_conf.c

    r16 r17  
    133133 * read IPv4 prefix file and sort the list 
    134134 */ 
    135 short getPrefixV4(char *filename, struct PrefixV4 *pV4TabPtr) 
     135unsigned short getPrefixV4(char *filename, struct PrefixV4 *pV4TabPtr) 
    136136{ 
    137137  FILE *prefixFile; 
    138138  char line[200]; 
    139   int counter = 0; 
     139  unsigned short counter = 0; 
    140140  unsigned short n0, n1, n2, n3, n4, n5; 
    141141  unsigned char buffer4[4]; 
     
    174174    } 
    175175  if( fclose(prefixFile) == 0) { 
    176     return (1); 
     176    return (counter); 
    177177  } else { 
    178178    fprintf(stderr,"%s not closed, \n", filename); 
    179179    exit(1); 
    180     return(0); 
     180    return(counter); 
    181181  } 
    182182} 
  • trunk/src/get_conf.h

    r2 r17  
    3636int longCmp(const void *, const void *); 
    3737int getRegisteredRouters(char *, unsigned long *, unsigned long *); 
    38 short getPrefixV4(char *, struct PrefixV4 *); 
     38unsigned short getPrefixV4(char *, struct PrefixV4 *); 
    3939 
    4040#endif /* GET_CONF_H */ 
  • trunk/src/prefix_mgmt.c

    r16 r17  
    2323 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
    2424 */ 
     25#include <stdio.h> 
    2526 
    2627#include "prefix_mgmt.h" 
  • trunk/src/renetcol.c

    r16 r17  
    5252unsigned long indexedRouterList[ROUTER_INDEX_MAX]; 
    5353int routerNb = 0; 
     54unsigned short v4PrefixNb = 0; 
    5455struct PrefixV4 prefixV4Tab[PREFIX_V4_MAX]; 
    5556RulesPtr rulesListPtr; 
     
    6869static int inputSock; 
    6970static int sockNamelg; 
     71static int inputSock2; 
    7072static int sockNameFromlg; 
    7173static int rcv; 
     
    7678static char *receptAddress = RECEPTION_ADDRESS; 
    7779static struct sockaddr_in name; 
     80static struct sockaddr_in name2; 
    7881static struct sockaddr_in fromName; 
    7982 
     
    108111                                  &indexedRouterList[0]); 
    109112  fprintf(stderr, "reading the IPv4 prefix\n"); 
    110   if ( getPrefixV4(prefixV4FileName, &prefixV4Tab[0]) < 1){ 
     113  if ( (v4PrefixNb = getPrefixV4(prefixV4FileName, &prefixV4Tab[0])) < 1){ 
    111114    fprintf(stderr, "Error during prefix v4 reading\n"); 
    112115    exit(1); 
     
    365368                                   rulesAddressPtr, rulesListPtr, 
    366369                                   myQueue, prefixV4Tab, 
    367                                    (size_t) PREFIX_V4_MAX); 
     370                                   (size_t) v4PrefixNb); 
    368371        } 
    369372      } 
    370373      break; 
    371374    default: 
    372       syslog(LOG_INFO,  
    373              "NetFlow exp. version unknown: %hu, from router: %lu.%lu.%lu.%lu", 
    374              (unsigned short) version, 
    375              (pcktPtr->ipH->srcAdd>>24), 
    376              (pcktPtr->ipH->srcAdd<<8>>24), 
    377              (pcktPtr->ipH->srcAdd<<16>>24), 
    378              (pcktPtr->ipH->srcAdd<<24>>24)); 
     375/*        syslog(LOG_INFO,  */ 
     376/*           "NetFlow exp. version unknown: %hu, from router: %lu.%lu.%lu.%lu", */ 
     377/*           (unsigned short) version, */ 
     378/*           (pcktPtr->ipH->srcAdd>>24), */ 
     379/*           (pcktPtr->ipH->srcAdd<<8>>24), */ 
     380/*           (pcktPtr->ipH->srcAdd<<16>>24), */ 
     381/*           (pcktPtr->ipH->srcAdd<<24>>24));  */ 
    379382      break; 
    380383    } 
     
    409412  sockNamelg = sizeof(name); 
    410413  if (getsockname(inputSock, (struct sockaddr *) (&name),  
     414                  (socklen_t *)&sockNamelg) < 0) 
     415    { 
     416      syslog(LOG_ERR, "getsockname: %s", strerror(errno));  
     417      exit(1); 
     418    } 
     419  /* Here socket DGRAM creation, only to not have a unreachable service */ 
     420  inputSock2 = socket(AF_INET, SOCK_DGRAM, 0);  
     421  if (inputSock2 < 0) 
     422    { 
     423      syslog(LOG_ERR,"socket : %s", strerror(errno)); 
     424      exit(1); 
     425    } 
     426  memset((void*)&name, 0, sizeof(name)); 
     427  name2.sin_family = AF_INET; 
     428  name2.sin_addr.s_addr = htonl(INADDR_ANY); 
     429  if (name2.sin_addr.s_addr == INADDR_NONE){ 
     430    syslog(LOG_ERR, " INADDR_NONE "); 
     431    exit(1); 
     432  } 
     433  name2.sin_port = htons(receptPort); 
     434  if (bind(inputSock2,(struct sockaddr *)(&name2), sizeof(name2)) < 0)  
     435    { 
     436      syslog(LOG_ERR, "bind : %s", strerror(errno)); 
     437      exit(1); 
     438    }                                                            
     439  sockNamelg = sizeof(name2); 
     440  if (getsockname(inputSock2, (struct sockaddr *) (&name2),  
    411441                  (socklen_t *)&sockNamelg) < 0) 
    412442    { 
  • trunk/src/rules_mgmt.c

    r13 r17  
    469469      if ((ft==1) || (ft==25)){ 
    470470          tmp->value = addValue(tmp->value, operatorToNumber, value); 
    471       } else if ((ft==8) || (ft==12) || (ft==15) || (ft==18) ){ 
     471      } else if ( (ft==8) || (ft==12) || (ft==15) || (ft==18) ){ 
    472472          tmp->value = addAddress(tmp->value, operatorToNumber, value); 
    473       } else if ((ft==27) || (ft==28) || (ft==62) || (ft==63) ){ 
     473      } else if ( (ft==27) || (ft==28) || (ft==62) || (ft==63) ){ 
    474474          tmp->value = addV6Address(tmp->value, operatorToNumber, value); 
    475       } else if ((ft==60)){ 
     475      } else if ( (ft==60) || (ft==46) ){ 
    476476          tmp->value = addCValue(tmp->value, operatorToNumber, value); 
    477477      } else {