Changeset 118
- Timestamp:
- 10.12.2005 19:05:36 (3 years ago)
- Location:
- trunk/source
- Files:
-
- 10 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/config.h.in
r117 r118 20 20 #define DEFAULT_OPTIONS_TIMEZONE local 21 21 #define DEFAULT_OPTIONS_TIMESTAMP right_dump 22 #define DEFAULT_OPTIONS_DIVIDE 1 23 #define DEFAULT_OPTIONS_BPS 0 22 24 23 25 /* But leave these defines untouched */ -
trunk/source/config.l
r117 r118 88 88 [Rr]ight return RIGHT; 89 89 [Ll]eft return LEFT; 90 [Oo]utput return OUTPUT; 91 bps return BPS; 92 [Bb]yte[s] return BYTES; 93 [Dd]ivide return DIVIDE; 94 by return BY; 90 95 91 96 [Pp][Rr][Oo][Mm][Ii][Ss][Cc] { yylval.longval = 1; return PROMISC; } -
trunk/source/config.y
r117 r118 108 108 %token RIGHT 109 109 %token LEFT 110 %token DIVIDE BY OUTPUT BYTES BPS 110 111 111 112 %token<SortFunc> SORTFUNC … … 126 127 %type<longval> Not 127 128 %type<stringval> Device 129 %type<longval> Divide 128 130 129 131 %start Input … … 255 257 pNewLog->ReverseLookup = DEFAULT_OPTIONS_REVERSELOOKUP; 256 258 pNewLog->Append = DEFAULT_OPTIONS_APPEND; 257 259 pNewLog->Divide = DEFAULT_OPTIONS_DIVIDE; 260 pNewLog->bps = DEFAULT_OPTIONS_BPS; 261 258 262 checkdump = 2; 259 263 pAllLogs = pNewLog; … … 266 270 } 267 271 | TimeStamp EOL 272 | Output EOL 268 273 | error EOL { 269 274 parseerror("Skipping invalid line", line); … … 411 416 ; 412 417 418 Output: 419 OUTPUT BPS Divide { 420 pAllLogs->Divide = $3; 421 pAllLogs->bps = 1; 422 } 423 | OUTPUT BYTES Divide { 424 pAllLogs->Divide = $3; 425 pAllLogs->bps = 0; 426 } 427 ; 428 429 Divide: 430 /* nothing */ { 431 $$ = 1; 432 } 433 | DIVIDE BY NUMBER { 434 $$ = $3; 435 } 413 436 %% 414 437 -
trunk/source/data.c
r117 r118 139 139 char *stringTime, *DumpTime, *ClearTime=NULL, *PrevClear=NULL, *PrevDump, *stringAction; 140 140 char *timezonestring; 141 141 time_t now; 142 int DivideFactor=1, MultiplyFactor=1; 143 144 now = time(NULL); 142 145 if (tz == local) { 143 146 timezonestring = "local time"; … … 179 182 } 180 183 181 stringTime = timefile("%Y/%m/%d %H:%M:%S", time(NULL));184 stringTime = timefile("%Y/%m/%d %H:%M:%S", now); 182 185 183 186 DumpTime = timefile("%Y/%m/%d %H:%M:%S", pLog->NextDump); … … 191 194 fprintf(logfile, "# ipfm %s %s at %s (%s)\n", 192 195 VERSION, stringAction, stringTime, timezonestring); 193 fprintf(logfile, "# Listening on %s\n", device); 196 fprintf(logfile, "# Listening on %s, dumping in %s divided by %i\n", 197 device, pLog->bps?"bps":"bytes", pLog->Divide); 194 198 fprintf(logfile, "# Dump period : %s -- %s\n", 195 199 PrevDump, DumpTime); … … 203 207 xfree(PrevClear); 204 208 } 205 206 209 xfree(DumpTime); 207 210 xfree(PrevDump); … … 209 212 210 213 fprintf(logfile, "# %-33s%15s%15s%15s\n", 211 "Host", 212 "In (bytes)", 213 "Out (bytes)", 214 "Total (bytes)"); 215 214 "Host", "In", "Out", "Total"); 215 216 DivideFactor *= pLog->Divide; 217 if (1 == pLog->bps) { 218 MultiplyFactor *= 8; 219 if (now < pLog->NextDump) { 220 DivideFactor *= ( now - pLog->PrevClear); 221 } else { 222 DivideFactor *= (pLog->NextDump - pLog->PrevClear); 223 } 224 } 225 216 226 while (NULL != pLog->Data) { 217 DataFormat(pLog, pLog->Data, DataToFile, MAX_DATA_SIZE); 227 DataFormat(pLog, pLog->Data, DataToFile, MAX_DATA_SIZE, 228 DivideFactor, MultiplyFactor); 218 229 fprintf(logfile, "%s", DataToFile); 219 230 /* Do not forget to free tables */ … … 228 239 pLog->DataSize = 0; 229 240 241 stringTime = timefile("%Y/%m/%d %H:%M:%S", time(NULL)); 230 242 fprintf(logfile, "# end of dump %s\n", stringTime); 243 xfree(stringTime); 244 231 245 if (1 == pLog->Append) { 232 246 fprintf(logfile, "\n"); … … 333 347 334 348 void DataFormat(struct AllLogsType *pLog, struct ipfm_data *pData, 335 char *pFormatedData, int BufLen) { 349 char *pFormatedData, int BufLen, 350 int DivideFactor, int MultiplyFactor) { 336 351 struct in_addr addr; 337 352 int NotLookedUp = 0; … … 345 360 if ((NULL != he) && (strlen(he->h_name) <= 34) && 346 361 (strlen(he->h_name) > 0)) { 362 /* LONGINTFORMAT should be changed to something that prints decimals... */ 347 363 snprintf(pFormatedData, BufLen, "%-35s%15" LONGINTFORMAT "%15" LONGINTFORMAT "%15" LONGINTFORMAT "\n", 348 364 he->h_name, 349 pData->in ,350 pData->out ,351 pData->in + pData->out);365 pData->in * MultiplyFactor / DivideFactor, 366 pData->out * MultiplyFactor / DivideFactor, 367 (pData->in + pData->out) * MultiplyFactor / DivideFactor); 352 368 } else { 353 369 NotLookedUp = 1; … … 357 373 char *res; 358 374 res = inet_ntoa(addr); 359 snprintf(pFormatedData, BufLen, "%-35s%15" LONGINTFORMAT "%15" LONGINTFORMAT "%15" LONGINTFORMAT "\n",360 res,361 pData->in, 362 pData->out, 363 pData->in + pData->out);364 } 365 } 375 snprintf(pFormatedData, BufLen, "%-35s%15" LONGINTFORMAT "%15" LONGINTFORMAT "%15" LONGINTFORMAT "\n", 376 res, 377 pData->in * MultiplyFactor / DivideFactor, 378 pData->out * MultiplyFactor / DivideFactor, 379 (pData->in + pData->out) * MultiplyFactor / DivideFactor); 380 } 381 } -
trunk/source/data.h
r63 r118 49 49 int DataCompareTotal(const void *ptr1, const void *ptr2); 50 50 void DataFormat(struct AllLogsType *pLog, struct ipfm_data *pData, 51 char *pFormatedData, int BufLen); 51 char *pFormatedData, int BufLen, 52 int DivideFactor, int MultiplyFactor); 52 53 53 54 #endif -
trunk/source/filter.c
r63 r118 1 1 /* 2 2 * filter.c - Filtering mechanism 3 * 3 * 4 4 * (c) 1999-2001 Robert Cheramy <tibob@via.ecp.fr> 5 5 * (c) 1999 Andres Krapf <dae@via.ecp.fr> -
trunk/source/filter.h
r117 r118 70 70 int ReverseLookup; 71 71 int Append; 72 72 73 73 /* right or left Timestamp selector */ 74 74 enum enumTimeStampType TimeStampType; … … 88 88 unsigned long int ClearInterval; 89 89 90 /* Output format */ 91 /* divide bytes by this number */ 92 int Divide; 93 /* 1: produce bps */ 94 int bps; 95 90 96 struct AllLogsType *Next; 91 97 }; -
trunk/source/init.c
r117 r118 198 198 pNewLog->ReverseLookup = DEFAULT_OPTIONS_REVERSELOOKUP; 199 199 pNewLog->Append = DEFAULT_OPTIONS_APPEND; 200 pNewLog->Divide = DEFAULT_OPTIONS_DIVIDE; 201 pNewLog->bps = DEFAULT_OPTIONS_BPS; 200 202 201 203 pAllLogs = pNewLog; -
trunk/source/ipfm.c
r117 r118 122 122 /* Well that's an approximation. I should perhaps use an alarm() */ 123 123 for (pTempLog = pAllLogs; NULL != pTempLog; pTempLog = pTempLog->Next) { 124 DEBUG_MSG("time %d nextdump %d delta %d\n", time(NULL), pTempLog->NextDump, pTempLog->NextDump - time(NULL)); 124 /* DEBUG_MSG("time %d nextdump %d delta %d\n", time(NULL), pTempLog->NextDump, pTempLog->NextDump - time(NULL));*/ 125 125 if (time(NULL) > pTempLog->NextDump) { 126 126 data_dump(pTempLog); -
trunk/source/pcap.c
r111 r118 256 256 for (;;) { 257 257 pcap_result = pcap_next_ex(pcap_global_descriptor, &header, (const u_char **) &packet); 258 DEBUG_MSG("pcap_next_ex returned %i\n", pcap_result);258 /* DEBUG_MSG("pcap_next_ex returned %i\n", pcap_result); */ 259 259 switch (pcap_result) { 260 260 case 1: 261 261 /* A packet was received, nothing to do! */ 262 DEBUG_MSG("packet time/length/size %i %i %i\n", header->ts, header->caplen, header->len); 262 /* DEBUG_MSG("packet time/length/size %i %i %i\n", header->ts, header->caplen, header->len); */ 263 263 break; 264 264 case 0:
