- Timestamp:
- 05/22/06 16:25:24 (17 years ago)
- Location:
- trunk/src
- Files:
-
- 2 added
- 7 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/dataFlowSet.c
r16 r17 63 63 struct PrefixV4 prefixKey, *res; /* for bsearch */ 64 64 struct AggCache agCache; 65 int bool = 0; 65 66 66 67 buffer2[1] = *(buf+(*offV9));(*offV9)++; … … 86 87 return (data_length+shift); 87 88 } 89 /* aggreg */ 90 agCache.routerAd = pcktPtr->ipH->srcAdd; 91 /* end aggreg */ 88 92 pftmp = tmp->lastField; 89 93 secondPftmp = tmp->lastField; … … 118 122 case 1: 119 123 buffer1 = *(buf+(*offV9)); (*offV9)++; 124 /* rule check */ 120 125 if (((RuleDefPtr)(*(rulesCache+pos)))->value->stor.cvalue 121 126 == *((unsigned char*)&buffer1)) { 122 127 ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 123 128 } 129 /* end rule check */ 124 130 /* 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 } 126 149 /* end aggregation */ 127 150 break; … … 133 156 ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 134 157 /* 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 */ 136 172 /* end aggregation */ 137 173 break; … … 148 184 ((RuleDefPtr)(*(rulesCache+pos)))->check = 1; 149 185 } 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 else156 fprintf(stderr,".");157 186 } 158 187 /* 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 } 160 200 /* end aggregation */ 161 201 break; … … 311 351 buffer1 = *(buf+(*offV9)); (*offV9)++; 312 352 /* 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 } 314 371 /* end aggregation */ 315 372 break; … … 318 375 buffer2[0]= *(buf+(*offV9)); (*offV9)++; 319 376 /* 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 */ 321 392 /* end aggregation */ 322 393 break; … … 327 398 buffer4[0]= *(buf+(*offV9)); (*offV9)++; 328 399 /* 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 } 330 410 /* end aggregation */ 331 411 break; … … 353 433 */ 354 434 /* 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; 356 441 /* end put */ 357 442 /* -
trunk/src/dataFlowSet.h
r16 r17 39 39 struct AggCache { 40 40 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; 45 48 unsigned long bytes; 46 49 unsigned long pkts; 47 unsigned short tProt;48 unsigned short netProt;49 50 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]; 52 55 /* unsigned short mplsLabel1; 53 unsigned long i ntAdd; */56 unsigned long ifAdd; */ 54 57 }; 55 58 -
trunk/src/get_conf.c
r16 r17 133 133 * read IPv4 prefix file and sort the list 134 134 */ 135 short getPrefixV4(char *filename, struct PrefixV4 *pV4TabPtr)135 unsigned short getPrefixV4(char *filename, struct PrefixV4 *pV4TabPtr) 136 136 { 137 137 FILE *prefixFile; 138 138 char line[200]; 139 int counter = 0;139 unsigned short counter = 0; 140 140 unsigned short n0, n1, n2, n3, n4, n5; 141 141 unsigned char buffer4[4]; … … 174 174 } 175 175 if( fclose(prefixFile) == 0) { 176 return ( 1);176 return (counter); 177 177 } else { 178 178 fprintf(stderr,"%s not closed, \n", filename); 179 179 exit(1); 180 return( 0);180 return(counter); 181 181 } 182 182 } -
trunk/src/get_conf.h
r2 r17 36 36 int longCmp(const void *, const void *); 37 37 int getRegisteredRouters(char *, unsigned long *, unsigned long *); 38 short getPrefixV4(char *, struct PrefixV4 *);38 unsigned short getPrefixV4(char *, struct PrefixV4 *); 39 39 40 40 #endif /* GET_CONF_H */ -
trunk/src/prefix_mgmt.c
r16 r17 23 23 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 24 24 */ 25 #include <stdio.h> 25 26 26 27 #include "prefix_mgmt.h" -
trunk/src/renetcol.c
r16 r17 52 52 unsigned long indexedRouterList[ROUTER_INDEX_MAX]; 53 53 int routerNb = 0; 54 unsigned short v4PrefixNb = 0; 54 55 struct PrefixV4 prefixV4Tab[PREFIX_V4_MAX]; 55 56 RulesPtr rulesListPtr; … … 68 69 static int inputSock; 69 70 static int sockNamelg; 71 static int inputSock2; 70 72 static int sockNameFromlg; 71 73 static int rcv; … … 76 78 static char *receptAddress = RECEPTION_ADDRESS; 77 79 static struct sockaddr_in name; 80 static struct sockaddr_in name2; 78 81 static struct sockaddr_in fromName; 79 82 … … 108 111 &indexedRouterList[0]); 109 112 fprintf(stderr, "reading the IPv4 prefix\n"); 110 if ( getPrefixV4(prefixV4FileName, &prefixV4Tab[0]) < 1){113 if ( (v4PrefixNb = getPrefixV4(prefixV4FileName, &prefixV4Tab[0])) < 1){ 111 114 fprintf(stderr, "Error during prefix v4 reading\n"); 112 115 exit(1); … … 365 368 rulesAddressPtr, rulesListPtr, 366 369 myQueue, prefixV4Tab, 367 (size_t) PREFIX_V4_MAX);370 (size_t) v4PrefixNb); 368 371 } 369 372 } 370 373 break; 371 374 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)); */ 379 382 break; 380 383 } … … 409 412 sockNamelg = sizeof(name); 410 413 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), 411 441 (socklen_t *)&sockNamelg) < 0) 412 442 { -
trunk/src/rules_mgmt.c
r13 r17 469 469 if ((ft==1) || (ft==25)){ 470 470 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) ){ 472 472 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) ){ 474 474 tmp->value = addV6Address(tmp->value, operatorToNumber, value); 475 } else if ( (ft==60)){475 } else if ( (ft==60) || (ft==46) ){ 476 476 tmp->value = addCValue(tmp->value, operatorToNumber, value); 477 477 } else {